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