diff --git a/extensions/typescript/src/features/hoverProvider.ts b/extensions/typescript/src/features/hoverProvider.ts index b3adf9716e4d69ce696ef08b1343fe6cbadc9077..f1d4c3ae0c595fb115fc3597214dc0804b5f7318 100644 --- a/extensions/typescript/src/features/hoverProvider.ts +++ b/extensions/typescript/src/features/hoverProvider.ts @@ -12,18 +12,14 @@ import { ITypescriptServiceClient } from '../typescriptService'; export default class TypeScriptHoverProvider implements HoverProvider { - private client: ITypescriptServiceClient; - - public constructor(client: ITypescriptServiceClient) { - this.client = client; - } + public constructor(private client: ITypescriptServiceClient) { } public provideHover(document: TextDocument, position: Position, token: CancellationToken): Promise { const filepath = this.client.normalizePath(document.uri); if (!filepath) { return Promise.resolve(null); } - let args: Proto.FileLocationRequestArgs = { + const args: Proto.FileLocationRequestArgs = { file: filepath, line: position.line + 1, offset: position.character + 1 @@ -32,8 +28,8 @@ export default class TypeScriptHoverProvider implements HoverProvider { return Promise.resolve(null); } return this.client.execute('quickinfo', args, token).then((response): Hover | undefined => { - let data = response.body; - if (data) { + if (response && response.body) { + const data = response.body; return new Hover( [{ language: 'typescript', value: data.displayString }, data.documentation], new Range(data.start.line - 1, data.start.offset - 1, data.end.line - 1, data.end.offset - 1)); diff --git a/extensions/typescript/src/features/referencesCodeLensProvider.ts b/extensions/typescript/src/features/referencesCodeLensProvider.ts index 561e2a03d5f4256d7b6b00e801f4439aa89c2bd1..8862eb56e5166c72f265ddbe6f6b4cf7abafb54f 100644 --- a/extensions/typescript/src/features/referencesCodeLensProvider.ts +++ b/extensions/typescript/src/features/referencesCodeLensProvider.ts @@ -12,17 +12,16 @@ import * as PConst from '../protocol.const'; import { ITypescriptServiceClient } from '../typescriptService'; import * as nls from 'vscode-nls'; -let localize = nls.loadMessageBundle(); +const localize = nls.loadMessageBundle(); class ReferencesCodeLens extends CodeLens { - public document: Uri; - public file: string; - - constructor(document: Uri, file: string, range: Range) { + constructor( + public tsDocument: Uri, + public tsFile: string, + range: Range + ) { super(range); - this.document = document; - this.file = file; } } @@ -31,14 +30,14 @@ export default class TypeScriptReferencesCodeLensProvider implements CodeLensPro private onDidChangeCodeLensesEmitter = new EventEmitter(); + public constructor(private client: ITypescriptServiceClient) { } + public get onDidChangeCodeLenses(): Event { return this.onDidChangeCodeLensesEmitter.event; } - constructor(private client: ITypescriptServiceClient) { } - public updateConfiguration(config: WorkspaceConfiguration): void { - let typeScriptConfig = workspace.getConfiguration('typescript'); + const typeScriptConfig = workspace.getConfiguration('typescript'); const wasEnabled = this.enabled; this.enabled = typeScriptConfig.get('referencesCodeLens.enabled', false); if (wasEnabled !== this.enabled) { @@ -56,22 +55,25 @@ export default class TypeScriptReferencesCodeLensProvider implements CodeLensPro return Promise.resolve([]); } return this.client.execute('navtree', { file: filepath }, token).then(response => { + if (!response) { + return []; + } const tree = response.body; const referenceableSpans: Range[] = []; if (tree && tree.childItems) { tree.childItems.forEach(item => this.extractReferenceableSymbols(document, item, referenceableSpans)); } - return Promise.resolve(referenceableSpans.map(span => new ReferencesCodeLens(document.uri, filepath, span))); + return referenceableSpans.map(span => new ReferencesCodeLens(document.uri, filepath, span)); }); } resolveCodeLens(inputCodeLens: CodeLens, token: CancellationToken): Promise { const codeLens = inputCodeLens as ReferencesCodeLens; - if (!codeLens.document) { + if (!codeLens.tsDocument) { return Promise.reject(codeLens); } const args: Proto.FileLocationRequestArgs = { - file: codeLens.file, + file: codeLens.tsFile, line: codeLens.range.start.line + 1, offset: codeLens.range.start.character + 1 }; @@ -90,7 +92,7 @@ export default class TypeScriptReferencesCodeLensProvider implements CodeLensPro codeLens.command = { title: locations.length + ' ' + (locations.length === 1 ? localize('oneReferenceLabel', 'reference') : localize('manyReferenceLabel', 'references')), command: 'editor.action.showReferences', - arguments: [codeLens.document, codeLens.range.start, locations] + arguments: [codeLens.tsDocument, codeLens.range.start, locations] }; return Promise.resolve(codeLens); }