mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 04:43:37 -05:00
fix(35043): TS Server: references does not mark isDefinition o… (#36051)
This commit is contained in:
committed by
Daniel Rosenwasser
parent
ce4c4b6183
commit
94e8db7e07
@@ -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;'
|
||||
|
||||
@@ -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|]();
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
////export default class {
|
||||
//// [|[|{| "contextRangeIndex": 0 |}constructor|]() {}|]
|
||||
//// [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|]() {}|]
|
||||
////}
|
||||
|
||||
verify.singleReferenceGroup("class default", "constructor");
|
||||
|
||||
@@ -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|]("");
|
||||
//// }|]
|
||||
////}
|
||||
|
||||
@@ -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|]();
|
||||
//// }|]
|
||||
////}
|
||||
|
||||
@@ -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|] };|]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////class X {
|
||||
//// [|public [|{| "contextRangeIndex": 0 |}constructor|]() {}|]
|
||||
//// [|public [|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|]() {}|]
|
||||
////}
|
||||
////var x = new [|X|]();
|
||||
|
||||
|
||||
@@ -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|];|]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user