From c365eded5b8fca06a2a19b20ffdb0ae9a6c3a419 Mon Sep 17 00:00:00 2001 From: Keen Yee Liau Date: Wed, 13 Nov 2019 13:13:59 -0800 Subject: [PATCH] fix(language-service): Remove getTemplateReferences() from LanguageService API (#33807) The method `getTemplateReferences()` appears in both the LanguageService interface and LanguageServiceHost interface. It should belong in the latter and not the former, since the former deals with the semantics of the language and not the mechanics. PR Close #33807 --- packages/language-service/src/language_service.ts | 5 ----- packages/language-service/src/ts_plugin.ts | 1 - packages/language-service/src/types.ts | 5 ----- packages/language-service/src/typescript_host.ts | 5 ++++- .../test/language_service_spec.ts | 4 +--- .../test/template_references_spec.ts | 15 ++++++--------- 6 files changed, 11 insertions(+), 24 deletions(-) diff --git a/packages/language-service/src/language_service.ts b/packages/language-service/src/language_service.ts index 00706c69ad..d12c163d11 100644 --- a/packages/language-service/src/language_service.ts +++ b/packages/language-service/src/language_service.ts @@ -28,11 +28,6 @@ export function createLanguageService(host: TypeScriptServiceHost): LanguageServ class LanguageServiceImpl implements LanguageService { constructor(private readonly host: TypeScriptServiceHost) {} - getTemplateReferences(): string[] { - this.host.getAnalyzedModules(); // same role as 'synchronizeHostData' - return this.host.getTemplateReferences(); - } - getDiagnostics(fileName: string): tss.Diagnostic[] { const analyzedModules = this.host.getAnalyzedModules(); // same role as 'synchronizeHostData' const results: Diagnostic[] = []; diff --git a/packages/language-service/src/ts_plugin.ts b/packages/language-service/src/ts_plugin.ts index f0261636c9..34f416c983 100644 --- a/packages/language-service/src/ts_plugin.ts +++ b/packages/language-service/src/ts_plugin.ts @@ -44,7 +44,6 @@ export function getExternalFiles(project: tss.server.Project): string[] { // Without an Angular host there is no way to get template references. return []; } - ngLSHost.getAnalyzedModules(); const templates = ngLSHost.getTemplateReferences(); const logger = project.projectService.logger; if (logger.hasLevel(tss.server.LogLevel.verbose)) { diff --git a/packages/language-service/src/types.ts b/packages/language-service/src/types.ts index 3b66681f51..88699d43e5 100644 --- a/packages/language-service/src/types.ts +++ b/packages/language-service/src/types.ts @@ -394,11 +394,6 @@ export interface Hover { * @publicApi */ export interface LanguageService { - /** - * Returns a list of all the external templates referenced by the project. - */ - getTemplateReferences(): string[]; - /** * Returns a list of all error for all templates in the given file. */ diff --git a/packages/language-service/src/typescript_host.ts b/packages/language-service/src/typescript_host.ts index e646c97268..87f51c4dff 100644 --- a/packages/language-service/src/typescript_host.ts +++ b/packages/language-service/src/typescript_host.ts @@ -144,7 +144,10 @@ export class TypeScriptServiceHost implements LanguageServiceHost { return this.resolver.getReflector() as StaticReflector; } - getTemplateReferences(): string[] { return [...this.templateReferences]; } + getTemplateReferences(): string[] { + this.getAnalyzedModules(); + return [...this.templateReferences]; + } /** * Checks whether the program has changed and returns all analyzed modules. diff --git a/packages/language-service/test/language_service_spec.ts b/packages/language-service/test/language_service_spec.ts index 66bc5b9634..2c7a87b3dc 100644 --- a/packages/language-service/test/language_service_spec.ts +++ b/packages/language-service/test/language_service_spec.ts @@ -14,7 +14,7 @@ import {TypeScriptServiceHost} from '../src/typescript_host'; import {MockTypescriptHost} from './test_utils'; describe('service without angular', () => { - const mockHost = new MockTypescriptHost(['/app/main.ts', '/app/parsing-cases.ts']); + const mockHost = new MockTypescriptHost(['/app/main.ts']); const service = ts.createLanguageService(mockHost); const ngHost = new TypeScriptServiceHost(mockHost, service); const ngService = createLanguageService(ngHost); @@ -23,8 +23,6 @@ describe('service without angular', () => { beforeEach(() => { mockHost.reset(); }); - it('should not crash a get template references', - () => { expect(() => ngService.getTemplateReferences()).not.toThrow(); }); it('should not crash a get diagnostics', () => { expect(() => ngService.getDiagnostics(fileName)).not.toThrow(); }); diff --git a/packages/language-service/test/template_references_spec.ts b/packages/language-service/test/template_references_spec.ts index 4740bd671d..6e49ca44b4 100644 --- a/packages/language-service/test/template_references_spec.ts +++ b/packages/language-service/test/template_references_spec.ts @@ -8,8 +8,6 @@ import * as ts from 'typescript'; -import {createLanguageService} from '../src/language_service'; -import {LanguageService} from '../src/types'; import {TypeScriptServiceHost} from '../src/typescript_host'; import {MockTypescriptHost} from './test_utils'; @@ -18,15 +16,13 @@ describe('references', () => { const mockHost = new MockTypescriptHost(['/app/main.ts']); const service = ts.createLanguageService(mockHost); const ngHost = new TypeScriptServiceHost(mockHost, service); - const ngService = createLanguageService(ngHost); beforeEach(() => { mockHost.reset(); }); - it('should be able to get template references', - () => { expect(() => ngService.getTemplateReferences()).not.toThrow(); }); - - it('should be able to determine that test.ng is a template reference', - () => { expect(ngService.getTemplateReferences()).toContain('/app/test.ng'); }); + it('should be able to determine that test.ng is a template reference', () => { + const templates = ngHost.getTemplateReferences(); + expect(templates).toEqual(['/app/test.ng']); + }); it('should be able to get template references for an invalid project', () => { const moduleCode = ` @@ -42,7 +38,8 @@ describe('references', () => { `; mockHost.addScript('/app/test.module.ts', moduleCode); mockHost.addScript('/app/test.component.ts', classCode); - expect(() => { ngService.getTemplateReferences(); }).not.toThrow(); + const templates = ngHost.getTemplateReferences(); + expect(templates).toEqual(['/app/test.ng']); }); });