• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import { HasDecorators, HasModifiers, Node, setTextRangePosEnd, SyntaxKind, TextRange } from "../_namespaces/ts";
2
3export function setTextRange<T extends TextRange>(range: T, location: TextRange | undefined): T {
4    return location ? setTextRangePosEnd(range, location.pos, location.end) : range;
5}
6
7export function canHaveModifiers(node: Node): node is HasModifiers {
8    const kind = node.kind;
9    return kind === SyntaxKind.TypeParameter
10        || kind === SyntaxKind.Parameter
11        || kind === SyntaxKind.PropertySignature
12        || kind === SyntaxKind.PropertyDeclaration
13        || kind === SyntaxKind.MethodSignature
14        || kind === SyntaxKind.MethodDeclaration
15        || kind === SyntaxKind.Constructor
16        || kind === SyntaxKind.GetAccessor
17        || kind === SyntaxKind.SetAccessor
18        || kind === SyntaxKind.IndexSignature
19        || kind === SyntaxKind.ConstructorType
20        || kind === SyntaxKind.FunctionExpression
21        || kind === SyntaxKind.ArrowFunction
22        || kind === SyntaxKind.ClassExpression
23        || kind === SyntaxKind.StructDeclaration
24        || kind === SyntaxKind.AnnotationDeclaration
25        || kind === SyntaxKind.VariableStatement
26        || kind === SyntaxKind.FunctionDeclaration
27        || kind === SyntaxKind.ClassDeclaration
28        || kind === SyntaxKind.InterfaceDeclaration
29        || kind === SyntaxKind.TypeAliasDeclaration
30        || kind === SyntaxKind.EnumDeclaration
31        || kind === SyntaxKind.ModuleDeclaration
32        || kind === SyntaxKind.ImportEqualsDeclaration
33        || kind === SyntaxKind.ImportDeclaration
34        || kind === SyntaxKind.ExportAssignment
35        || kind === SyntaxKind.ExportDeclaration;
36}
37
38export function canHaveDecorators(node: Node): node is HasDecorators {
39    const kind = node.kind;
40    return kind === SyntaxKind.Parameter
41        || kind === SyntaxKind.PropertyDeclaration
42        || kind === SyntaxKind.MethodDeclaration
43        || kind === SyntaxKind.GetAccessor
44        || kind === SyntaxKind.SetAccessor
45        || kind === SyntaxKind.ClassExpression
46        || kind === SyntaxKind.ClassDeclaration
47        || kind === SyntaxKind.StructDeclaration;
48}