* @returns true if we are certain that the currently edited location must define a new location; false otherwise.
(contextToken)
| 134610 | * @returns true if we are certain that the currently edited location must define a new location; false otherwise. |
| 134611 | */ |
| 134612 | function isSolelyIdentifierDefinitionLocation(contextToken) { |
| 134613 | var parent = contextToken.parent; |
| 134614 | var containingNodeKind = parent.kind; |
| 134615 | switch (contextToken.kind) { |
| 134616 | case 27 /* SyntaxKind.CommaToken */: |
| 134617 | return containingNodeKind === 254 /* SyntaxKind.VariableDeclaration */ || |
| 134618 | isVariableDeclarationListButNotTypeArgument(contextToken) || |
| 134619 | containingNodeKind === 237 /* SyntaxKind.VariableStatement */ || |
| 134620 | containingNodeKind === 260 /* SyntaxKind.EnumDeclaration */ || // enum a { foo, | |
| 134621 | isFunctionLikeButNotConstructor(containingNodeKind) || |
| 134622 | containingNodeKind === 258 /* SyntaxKind.InterfaceDeclaration */ || // interface A<T, | |
| 134623 | containingNodeKind === 202 /* SyntaxKind.ArrayBindingPattern */ || // var [x, y| |
| 134624 | containingNodeKind === 259 /* SyntaxKind.TypeAliasDeclaration */ || // type Map, K, | |
| 134625 | // class A<T, | |
| 134626 | // var C = class D<T, | |
| 134627 | (ts.isClassLike(parent) && |
| 134628 | !!parent.typeParameters && |
| 134629 | parent.typeParameters.end >= contextToken.pos); |
| 134630 | case 24 /* SyntaxKind.DotToken */: |
| 134631 | return containingNodeKind === 202 /* SyntaxKind.ArrayBindingPattern */; // var [.| |
| 134632 | case 58 /* SyntaxKind.ColonToken */: |
| 134633 | return containingNodeKind === 203 /* SyntaxKind.BindingElement */; // var {x :html| |
| 134634 | case 22 /* SyntaxKind.OpenBracketToken */: |
| 134635 | return containingNodeKind === 202 /* SyntaxKind.ArrayBindingPattern */; // var [x| |
| 134636 | case 20 /* SyntaxKind.OpenParenToken */: |
| 134637 | return containingNodeKind === 292 /* SyntaxKind.CatchClause */ || |
| 134638 | isFunctionLikeButNotConstructor(containingNodeKind); |
| 134639 | case 18 /* SyntaxKind.OpenBraceToken */: |
| 134640 | return containingNodeKind === 260 /* SyntaxKind.EnumDeclaration */; // enum a { | |
| 134641 | case 29 /* SyntaxKind.LessThanToken */: |
| 134642 | return containingNodeKind === 257 /* SyntaxKind.ClassDeclaration */ || // class A< | |
| 134643 | containingNodeKind === 226 /* SyntaxKind.ClassExpression */ || // var C = class D< | |
| 134644 | containingNodeKind === 258 /* SyntaxKind.InterfaceDeclaration */ || // interface A< | |
| 134645 | containingNodeKind === 259 /* SyntaxKind.TypeAliasDeclaration */ || // type List< | |
| 134646 | ts.isFunctionLikeKind(containingNodeKind); |
| 134647 | case 124 /* SyntaxKind.StaticKeyword */: |
| 134648 | return containingNodeKind === 167 /* SyntaxKind.PropertyDeclaration */ && !ts.isClassLike(parent.parent); |
| 134649 | case 25 /* SyntaxKind.DotDotDotToken */: |
| 134650 | return containingNodeKind === 164 /* SyntaxKind.Parameter */ || |
| 134651 | (!!parent.parent && parent.parent.kind === 202 /* SyntaxKind.ArrayBindingPattern */); // var [...z| |
| 134652 | case 123 /* SyntaxKind.PublicKeyword */: |
| 134653 | case 121 /* SyntaxKind.PrivateKeyword */: |
| 134654 | case 122 /* SyntaxKind.ProtectedKeyword */: |
| 134655 | return containingNodeKind === 164 /* SyntaxKind.Parameter */ && !ts.isConstructorDeclaration(parent.parent); |
| 134656 | case 127 /* SyntaxKind.AsKeyword */: |
| 134657 | return containingNodeKind === 270 /* SyntaxKind.ImportSpecifier */ || |
| 134658 | containingNodeKind === 275 /* SyntaxKind.ExportSpecifier */ || |
| 134659 | containingNodeKind === 268 /* SyntaxKind.NamespaceImport */; |
| 134660 | case 136 /* SyntaxKind.GetKeyword */: |
| 134661 | case 149 /* SyntaxKind.SetKeyword */: |
| 134662 | return !isFromObjectTypeDeclaration(contextToken); |
| 134663 | case 79 /* SyntaxKind.Identifier */: |
| 134664 | if (containingNodeKind === 270 /* SyntaxKind.ImportSpecifier */ && |
| 134665 | contextToken === parent.name && |
| 134666 | contextToken.text === "type") { |
| 134667 | // import { type | } |
| 134668 | return false; |
| 134669 | } |
no test coverage detected