fix(35043): TS Server: references does not mark isDefinition o… (#36051)

This commit is contained in:
Alexander T
2020-01-18 00:26:36 +02:00
committed by Daniel Rosenwasser
parent ce4c4b6183
commit 94e8db7e07
9 changed files with 22 additions and 17 deletions

View File

@@ -337,9 +337,7 @@ namespace ts.FindAllReferences {
return {
...documentSpan,
isWriteAccess: isWriteAccessForReference(node),
isDefinition: node.kind === SyntaxKind.DefaultKeyword
|| !!getDeclarationFromName(node)
|| isLiteralComputedPropertyDeclarationName(node),
isDefinition: isDefinitionForReference(node),
isInString: kind === EntryKind.StringLiteral ? true : undefined,
};
}
@@ -470,6 +468,13 @@ namespace ts.FindAllReferences {
return !!decl && declarationIsWriteAccess(decl) || node.kind === SyntaxKind.DefaultKeyword || isWriteAccess(node);
}
function isDefinitionForReference(node: Node): boolean {
return node.kind === SyntaxKind.DefaultKeyword
|| !!getDeclarationFromName(node)
|| isLiteralComputedPropertyDeclarationName(node)
|| (node.kind === SyntaxKind.ConstructorKeyword && isConstructorDeclaration(node.parent));
}
/**
* True if 'decl' provides a value, as in `function f() {}`;
* false if 'decl' is just a location for a future write, as in 'let x;'

View File

@@ -2,9 +2,9 @@
// @Filename: a.ts
////export class C {
//// [|[|{| "contextRangeIndex": 0 |}constructor|](n: number);|]
//// [|[|{| "contextRangeIndex": 2 |}constructor|]();|]
//// [|[|{| "contextRangeIndex": 4 |}constructor|](n?: number){}|]
//// [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|](n: number);|]
//// [|[|{| "contextRangeIndex": 2, "isDefinition": true |}constructor|]();|]
//// [|[|{| "contextRangeIndex": 4, "isDefinition": true |}constructor|](n?: number){}|]
//// static f() {
//// this.f();
//// new [|this|]();

View File

@@ -1,8 +1,8 @@
/// <reference path="fourslash.ts" />
////class C {
//// [|[|{| "contextRangeIndex": 0 |}constructor|](n: number);|]
//// [|[|{| "contextRangeIndex": 2 |}constructor|](){}|]
//// [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|](n: number);|]
//// [|[|{| "contextRangeIndex": 2, "isDefinition": true |}constructor|](){}|]
////}
verify.singleReferenceGroup("class C", "constructor");

View File

@@ -1,5 +1,5 @@
////export default class {
//// [|[|{| "contextRangeIndex": 0 |}constructor|]() {}|]
//// [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|]() {}|]
////}
verify.singleReferenceGroup("class default", "constructor");

View File

@@ -2,11 +2,11 @@
////class A {
//// [|[|{| "contextRangeIndex": 0 |}constructor|](s: string) {}|]
//// [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|](s: string) {}|]
////}
////class B extends A { }
////class C extends B {
//// [|[|{| "contextRangeIndex": 2 |}constructor|]() {
//// [|[|{| "contextRangeIndex": 2, "isDefinition": true |}constructor|]() {
//// [|super|]("");
//// }|]
////}

View File

@@ -2,13 +2,13 @@
////class A {
//// [|[|{| "contextRangeIndex": 0 |}constructor|](s: string) {}|]
//// [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|](s: string) {}|]
////}
////class B extends A {
//// [|[|{| "contextRangeIndex": 2 |}constructor|]() { [|super|](""); }|]
//// [|[|{| "contextRangeIndex": 2, "isDefinition": true |}constructor|]() { [|super|](""); }|]
////}
////class C extends B {
//// [|[|{| "contextRangeIndex": 5 |}constructor|]() {
//// [|[|{| "contextRangeIndex": 5, "isDefinition": true |}constructor|]() {
//// [|super|]();
//// }|]
////}

View File

@@ -3,7 +3,7 @@
// @Filename: f.ts
////class A {
//// [|[|{| "contextRangeIndex": 0 |}constructor|](s: string) {}|]
//// [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|](s: string) {}|]
////}
////class B extends A { }
////[|export { [|{| "isWriteAccess": true, "isDefinition": true, "contextRangeIndex": 2 |}A|], [|{| "isWriteAccess": true, "isDefinition": true, "contextRangeIndex": 2 |}B|] };|]

View File

@@ -1,7 +1,7 @@
/// <reference path="fourslash.ts" />
////class X {
//// [|public [|{| "contextRangeIndex": 0 |}constructor|]() {}|]
//// [|public [|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|]() {}|]
////}
////var x = new [|X|]();

View File

@@ -3,7 +3,7 @@
// @allowJs: true
// @Filename: a.js
////[|class [|{| "isWriteAccess": true, "isDefinition": true, "contextRangeIndex": 0 |}A|] {
//// [|[|{| "contextRangeIndex": 2 |}constructor|]() { }|]
//// [|[|{| "contextRangeIndex": 2, "isDefinition": true |}constructor|]() { }|]
////}|]
////[|module.exports = [|{| "contextRangeIndex": 4 |}A|];|]