From c2cdce3cd675c87e5806dc67c9bb6e8261b0c04d Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 6 Nov 2018 17:15:52 -0800 Subject: [PATCH] Fix test failures --- src/compiler/binder.ts | 1 + src/compiler/utilities.ts | 2 +- src/services/codefixes/fixUnusedIdentifier.ts | 4 ++-- src/services/services.ts | 4 ++-- src/services/utilities.ts | 4 ++++ 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index eae59db1bc686..bed72b8ca3b08 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1379,6 +1379,7 @@ namespace ts { } function bindJSDocTypeAlias(node: JSDocTypedefTag | JSDocCallbackTag) { + node.tagName.parent = node; if (node.fullName) { setParentPointers(node, node.fullName); } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 8813c705eb5f7..768af9509c27b 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -6772,7 +6772,7 @@ namespace ts { // TODO: determine what this does before making it public. /* @internal */ - export function isJSDocTag(node: Node): boolean { + export function isJSDocTag(node: Node): node is JSDocTag { return node.kind >= SyntaxKind.FirstJSDocTagNode && node.kind <= SyntaxKind.LastJSDocTagNode; } diff --git a/src/services/codefixes/fixUnusedIdentifier.ts b/src/services/codefixes/fixUnusedIdentifier.ts index 8997368a6b432..2905f0b131b25 100644 --- a/src/services/codefixes/fixUnusedIdentifier.ts +++ b/src/services/codefixes/fixUnusedIdentifier.ts @@ -84,8 +84,8 @@ namespace ts.codefix { if (importDecl) { changes.delete(sourceFile, importDecl); } - else if (token.kind === SyntaxKind.AtToken && isJSDocTemplateTag(token.parent)) { - changes.delete(sourceFile, token.parent); + else if (isJSDocTemplateTag(token)) { + changes.delete(sourceFile, token); } else if (token.kind === SyntaxKind.LessThanToken) { deleteTypeParameters(changes, sourceFile, token); diff --git a/src/services/services.ts b/src/services/services.ts index afcdc7b4f1685..2abfe7095ecb4 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1481,7 +1481,7 @@ namespace ts { function shouldGetType(sourceFile: SourceFile, node: Node, position: number): boolean { switch (node.kind) { case SyntaxKind.Identifier: - return !isLabelName(node); + return !isLabelName(node) && !isTagName(node); case SyntaxKind.PropertyAccessExpression: case SyntaxKind.QualifiedName: // Don't return quickInfo if inside the comment in `a/**/.b` @@ -2159,7 +2159,7 @@ namespace ts { function initializeNameTable(sourceFile: SourceFile): void { const nameTable = sourceFile.nameTable = createUnderscoreEscapedMap(); sourceFile.forEachChild(function walk(node) { - if (isIdentifier(node) && node.escapedText || isStringOrNumericLiteralLike(node) && literalIsName(node)) { + if (isIdentifier(node) && !isTagName(node) && node.escapedText || isStringOrNumericLiteralLike(node) && literalIsName(node)) { const text = getEscapedTextOfIdentifierOrLiteral(node); nameTable.set(text, nameTable.get(text) === undefined ? node.pos : -1); } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 61f6e6e60872c..d0b6b59e39bb1 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -246,6 +246,10 @@ namespace ts { return isLabelOfLabeledStatement(node) || isJumpStatementTarget(node); } + export function isTagName(node: Node): boolean { + return isJSDocTag(node.parent) && node.parent.tagName === node; + } + export function isRightSideOfQualifiedName(node: Node) { return node.parent.kind === SyntaxKind.QualifiedName && (node.parent).right === node; }