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}