Skip to content

Commit c2c44b3

Browse files
Merge branch 'findReferences' into javascriptLanguageservice
2 parents d3e9ed1 + 927e60d commit c2c44b3

22 files changed

Lines changed: 318 additions & 100 deletions

src/compiler/checker.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ module ts {
77

88
/* @internal */ export let checkTime = 0;
99

10+
/* @internal */
11+
export function getSymbolId(symbol: Symbol): number {
12+
if (!symbol.id) {
13+
symbol.id = nextSymbolId++;
14+
}
15+
16+
return symbol.id;
17+
}
18+
1019
export function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker {
1120
let Symbol = objectAllocator.getSymbolConstructor();
1221
let Type = objectAllocator.getTypeConstructor();
@@ -250,8 +259,8 @@ module ts {
250259

251260
function getSymbolLinks(symbol: Symbol): SymbolLinks {
252261
if (symbol.flags & SymbolFlags.Transient) return <TransientSymbol>symbol;
253-
if (!symbol.id) symbol.id = nextSymbolId++;
254-
return symbolLinks[symbol.id] || (symbolLinks[symbol.id] = {});
262+
var id = getSymbolId(symbol);
263+
return symbolLinks[id] || (symbolLinks[id] = {});
255264
}
256265

257266
function getNodeLinks(node: Node): NodeLinks {

src/harness/harnessLanguageService.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,9 @@ module Harness.LanguageService {
330330
getReferencesAtPosition(fileName: string, position: number): ts.ReferenceEntry[] {
331331
return unwrapJSONCallResult(this.shim.getReferencesAtPosition(fileName, position));
332332
}
333+
findReferences(fileName: string, position: number): ts.ReferencedSymbol[] {
334+
return unwrapJSONCallResult(this.shim.findReferences(fileName, position));
335+
}
333336
getOccurrencesAtPosition(fileName: string, position: number): ts.ReferenceEntry[] {
334337
return unwrapJSONCallResult(this.shim.getOccurrencesAtPosition(fileName, position));
335338
}

src/server/client.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,11 @@ module ts.server {
300300
});
301301
}
302302

303+
findReferences(fileName: string, position: number): ReferencedSymbol[]{
304+
// Not yet implemented.
305+
return [];
306+
}
307+
303308
getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] {
304309
var lineOffset = this.positionToOneBasedLineOffset(fileName, position);
305310
var args: protocol.FileLocationRequestArgs = {

src/services/services.ts

Lines changed: 185 additions & 83 deletions
Large diffs are not rendered by default.

src/services/shims.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,12 @@ module ts {
127127
* { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[]
128128
*/
129129
getReferencesAtPosition(fileName: string, position: number): string;
130+
131+
/**
132+
* Returns a JSON-encoded value of the type:
133+
* { definition: <encoded>; references: <encoded>[] }[]
134+
*/
135+
findReferences(fileName: string, position: number): string;
130136

131137
/**
132138
* Returns a JSON-encoded value of the type:
@@ -560,11 +566,6 @@ module ts {
560566

561567
/// GET REFERENCES
562568

563-
/**
564-
* Return references to a symbol at the requested position.
565-
* References are separated by "\n".
566-
* Each reference is a "fileindex min lim" sub-string.
567-
*/
568569
public getReferencesAtPosition(fileName: string, position: number): string {
569570
return this.forwardJSONCall(
570571
"getReferencesAtPosition('" + fileName + "', " + position + ")",
@@ -573,6 +574,14 @@ module ts {
573574
});
574575
}
575576

577+
public findReferences(fileName: string, position: number): string {
578+
return this.forwardJSONCall(
579+
"findReferences('" + fileName + "', " + position + ")",
580+
() => {
581+
return this.languageService.findReferences(fileName, position);
582+
});
583+
}
584+
576585
public getOccurrencesAtPosition(fileName: string, position: number): string {
577586
return this.forwardJSONCall(
578587
"getOccurrencesAtPosition('" + fileName + "', " + position + ")",

tests/baselines/reference/APISample_compile.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,6 +1589,7 @@ declare module "typescript" {
15891589
getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[];
15901590
getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[];
15911591
getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[];
1592+
findReferences(fileName: string, position: number): ReferencedSymbol[];
15921593
getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[];
15931594
getNavigationBarItems(fileName: string): NavigationBarItem[];
15941595
getOutliningSpans(fileName: string): OutliningSpan[];
@@ -1675,6 +1676,10 @@ declare module "typescript" {
16751676
containerKind: string;
16761677
containerName: string;
16771678
}
1679+
interface ReferencedSymbol {
1680+
definition: DefinitionInfo;
1681+
references: ReferenceEntry[];
1682+
}
16781683
enum SymbolDisplayPartKind {
16791684
aliasName = 0,
16801685
className = 1,

tests/baselines/reference/APISample_compile.types

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5157,6 +5157,12 @@ declare module "typescript" {
51575157
>position : number
51585158
>ReferenceEntry : ReferenceEntry
51595159

5160+
findReferences(fileName: string, position: number): ReferencedSymbol[];
5161+
>findReferences : (fileName: string, position: number) => ReferencedSymbol[]
5162+
>fileName : string
5163+
>position : number
5164+
>ReferencedSymbol : ReferencedSymbol
5165+
51605166
getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[];
51615167
>getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[]
51625168
>searchValue : string
@@ -5427,6 +5433,17 @@ declare module "typescript" {
54275433

54285434
containerName: string;
54295435
>containerName : string
5436+
}
5437+
interface ReferencedSymbol {
5438+
>ReferencedSymbol : ReferencedSymbol
5439+
5440+
definition: DefinitionInfo;
5441+
>definition : DefinitionInfo
5442+
>DefinitionInfo : DefinitionInfo
5443+
5444+
references: ReferenceEntry[];
5445+
>references : ReferenceEntry[]
5446+
>ReferenceEntry : ReferenceEntry
54305447
}
54315448
enum SymbolDisplayPartKind {
54325449
>SymbolDisplayPartKind : SymbolDisplayPartKind

tests/baselines/reference/APISample_linter.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,6 +1620,7 @@ declare module "typescript" {
16201620
getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[];
16211621
getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[];
16221622
getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[];
1623+
findReferences(fileName: string, position: number): ReferencedSymbol[];
16231624
getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[];
16241625
getNavigationBarItems(fileName: string): NavigationBarItem[];
16251626
getOutliningSpans(fileName: string): OutliningSpan[];
@@ -1706,6 +1707,10 @@ declare module "typescript" {
17061707
containerKind: string;
17071708
containerName: string;
17081709
}
1710+
interface ReferencedSymbol {
1711+
definition: DefinitionInfo;
1712+
references: ReferenceEntry[];
1713+
}
17091714
enum SymbolDisplayPartKind {
17101715
aliasName = 0,
17111716
className = 1,

tests/baselines/reference/APISample_linter.types

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5303,6 +5303,12 @@ declare module "typescript" {
53035303
>position : number
53045304
>ReferenceEntry : ReferenceEntry
53055305

5306+
findReferences(fileName: string, position: number): ReferencedSymbol[];
5307+
>findReferences : (fileName: string, position: number) => ReferencedSymbol[]
5308+
>fileName : string
5309+
>position : number
5310+
>ReferencedSymbol : ReferencedSymbol
5311+
53065312
getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[];
53075313
>getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[]
53085314
>searchValue : string
@@ -5573,6 +5579,17 @@ declare module "typescript" {
55735579

55745580
containerName: string;
55755581
>containerName : string
5582+
}
5583+
interface ReferencedSymbol {
5584+
>ReferencedSymbol : ReferencedSymbol
5585+
5586+
definition: DefinitionInfo;
5587+
>definition : DefinitionInfo
5588+
>DefinitionInfo : DefinitionInfo
5589+
5590+
references: ReferenceEntry[];
5591+
>references : ReferenceEntry[]
5592+
>ReferenceEntry : ReferenceEntry
55765593
}
55775594
enum SymbolDisplayPartKind {
55785595
>SymbolDisplayPartKind : SymbolDisplayPartKind

tests/baselines/reference/APISample_transform.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1621,6 +1621,7 @@ declare module "typescript" {
16211621
getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[];
16221622
getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[];
16231623
getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[];
1624+
findReferences(fileName: string, position: number): ReferencedSymbol[];
16241625
getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[];
16251626
getNavigationBarItems(fileName: string): NavigationBarItem[];
16261627
getOutliningSpans(fileName: string): OutliningSpan[];
@@ -1707,6 +1708,10 @@ declare module "typescript" {
17071708
containerKind: string;
17081709
containerName: string;
17091710
}
1711+
interface ReferencedSymbol {
1712+
definition: DefinitionInfo;
1713+
references: ReferenceEntry[];
1714+
}
17101715
enum SymbolDisplayPartKind {
17111716
aliasName = 0,
17121717
className = 1,

0 commit comments

Comments
 (0)