From 5a7f7469eae853cbe9c21612e8e4d64324d3d5da Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Mon, 13 Jun 2016 13:21:47 -0700 Subject: [PATCH] Add isDefinition to ReferenceEntry Clients can now easily tell if the reference is to a definition or a usage. --- src/server/client.ts | 1 + src/server/protocol.d.ts | 5 +++++ src/server/session.ts | 5 +++-- src/services/services.ts | 7 +++++-- src/services/shims.ts | 4 ++-- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/server/client.ts b/src/server/client.ts index b0a1a8ec9e9..ea6c948c4fb 100644 --- a/src/server/client.ts +++ b/src/server/client.ts @@ -376,6 +376,7 @@ namespace ts.server { fileName: fileName, textSpan: ts.createTextSpanFromBounds(start, end), isWriteAccess: entry.isWriteAccess, + isDefinition: entry.isDefinition, }; }); } diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index d2c15b308ec..dd29411f97d 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -304,6 +304,11 @@ declare namespace ts.server.protocol { * True if reference is a write location, false otherwise. */ isWriteAccess: boolean; + + /** + * True if reference is a definition, false otherwise. + */ + isDefinition?: boolean; } /** diff --git a/src/server/session.ts b/src/server/session.ts index 0ec3d87e58c..2964dc66505 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -379,7 +379,7 @@ namespace ts.server { start, end, file: fileName, - isWriteAccess + isWriteAccess, }; }); } @@ -555,7 +555,8 @@ namespace ts.server { start: start, lineText: lineText, end: compilerService.host.positionToLineOffset(ref.fileName, ts.textSpanEnd(ref.textSpan)), - isWriteAccess: ref.isWriteAccess + isWriteAccess: ref.isWriteAccess, + isDefinition: ref.isDefinition }; }); }, diff --git a/src/services/services.ts b/src/services/services.ts index 13df3a54a30..5e1b69170a5 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1208,6 +1208,7 @@ namespace ts { textSpan: TextSpan; fileName: string; isWriteAccess: boolean; + isDefinition?: boolean; } export interface DocumentHighlights { @@ -6183,7 +6184,8 @@ namespace ts { references: [{ fileName: sourceFile.fileName, textSpan: createTextSpan(position, searchText.length), - isWriteAccess: false + isWriteAccess: false, + isDefinition: false }] }); } @@ -6737,7 +6739,8 @@ namespace ts { return { fileName: node.getSourceFile().fileName, textSpan: createTextSpanFromBounds(start, end), - isWriteAccess: isWriteAccess(node) + isWriteAccess: isWriteAccess(node), + isDefinition: isDeclarationName(node) }; } diff --git a/src/services/shims.ts b/src/services/shims.ts index 94ff3367e3c..96392ca42be 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -164,7 +164,7 @@ namespace ts { /** * Returns a JSON-encoded value of the type: - * { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[] + * { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean, isDefinition?: boolean }[] */ getReferencesAtPosition(fileName: string, position: number): string; @@ -1141,4 +1141,4 @@ namespace TypeScript.Services { /* @internal */ const toolsVersion = "1.9"; -/* tslint:enable:no-unused-variable */ \ No newline at end of file +/* tslint:enable:no-unused-variable */