diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index b6913a31b0d18..349b313104cfb 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -662,6 +662,7 @@ namespace ts { case SyntaxKind.JSDocProtectedTag: case SyntaxKind.JSDocReadonlyTag: case SyntaxKind.JSDocDeprecatedTag: + case SyntaxKind.JSDocOverrideTag: return visitNode(cbNode, (node as JSDocTag).tagName) || (typeof (node as JSDoc).comment === "string" ? undefined : visitNodes(cbNode, cbNodes, (node as JSDoc).comment as NodeArray | undefined)); case SyntaxKind.PartiallyEmittedExpression: diff --git a/src/services/goToDefinition.ts b/src/services/goToDefinition.ts index 15ecb41bb4357..40cac0a916d41 100644 --- a/src/services/goToDefinition.ts +++ b/src/services/goToDefinition.ts @@ -16,7 +16,7 @@ namespace ts.GoToDefinition { const { parent } = node; const typeChecker = program.getTypeChecker(); - if (node.kind === SyntaxKind.OverrideKeyword || (isJSDocOverrideTag(node) && rangeContainsPosition(node.tagName, position))) { + if (node.kind === SyntaxKind.OverrideKeyword || (isIdentifier(node) && isJSDocOverrideTag(parent) && parent.tagName === node)) { return getDefinitionFromOverriddenMember(typeChecker, node) || emptyArray; } diff --git a/tests/baselines/reference/jsdocLinkTag6.js b/tests/baselines/reference/jsdocLinkTag6.js new file mode 100644 index 0000000000000..d73280635ce7d --- /dev/null +++ b/tests/baselines/reference/jsdocLinkTag6.js @@ -0,0 +1,45 @@ +//// [a.ts] +class A { + foo() {} +} +class B extends A { + /** + * @override {@link A.foo} + */ + foo() {} +} + + +//// [a.js] +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var A = /** @class */ (function () { + function A() { + } + A.prototype.foo = function () { }; + return A; +}()); +var B = /** @class */ (function (_super) { + __extends(B, _super); + function B() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @override {@link A.foo} + */ + B.prototype.foo = function () { }; + return B; +}(A)); diff --git a/tests/baselines/reference/jsdocLinkTag6.symbols b/tests/baselines/reference/jsdocLinkTag6.symbols new file mode 100644 index 0000000000000..3b8f067337242 --- /dev/null +++ b/tests/baselines/reference/jsdocLinkTag6.symbols @@ -0,0 +1,18 @@ +=== /a.ts === +class A { +>A : Symbol(A, Decl(a.ts, 0, 0)) + + foo() {} +>foo : Symbol(A.foo, Decl(a.ts, 0, 9)) +} +class B extends A { +>B : Symbol(B, Decl(a.ts, 2, 1)) +>A : Symbol(A, Decl(a.ts, 0, 0)) + + /** + * @override {@link A.foo} + */ + foo() {} +>foo : Symbol(B.foo, Decl(a.ts, 3, 19)) +} + diff --git a/tests/baselines/reference/jsdocLinkTag6.types b/tests/baselines/reference/jsdocLinkTag6.types new file mode 100644 index 0000000000000..d3a71dc80f104 --- /dev/null +++ b/tests/baselines/reference/jsdocLinkTag6.types @@ -0,0 +1,18 @@ +=== /a.ts === +class A { +>A : A + + foo() {} +>foo : () => void +} +class B extends A { +>B : B +>A : A + + /** + * @override {@link A.foo} + */ + foo() {} +>foo : () => void +} + diff --git a/tests/cases/conformance/jsdoc/jsdocLinkTag6.ts b/tests/cases/conformance/jsdoc/jsdocLinkTag6.ts new file mode 100644 index 0000000000000..5dcb70ddedfdf --- /dev/null +++ b/tests/cases/conformance/jsdoc/jsdocLinkTag6.ts @@ -0,0 +1,10 @@ +// @filename: /a.ts +class A { + foo() {} +} +class B extends A { + /** + * @override {@link A.foo} + */ + foo() {} +} diff --git a/tests/cases/fourslash/goToDefinitionOverriddenMember11.ts b/tests/cases/fourslash/goToDefinitionOverriddenMember11.ts index 48eae54dd9f78..ec028630b4c83 100644 --- a/tests/cases/fourslash/goToDefinitionOverriddenMember11.ts +++ b/tests/cases/fourslash/goToDefinitionOverriddenMember11.ts @@ -10,7 +10,7 @@ //// /*Foo_m*/m() {} ////} ////class Bar extends Foo { -//// /** [|@over{|"name": "1"|}ride[| se{|"name": "2"|}e {@li{|"name": "3"|}nk https://test.c{|"name": "4"|}om} {|"name": "5"|}description |]|]*/ +//// /** @[|over{|"name": "1"|}ride|][| se{|"name": "2"|}e {@li{|"name": "3"|}nk https://test.c{|"name": "4"|}om} {|"name": "5"|}description |]*/ //// m() {} ////}