GeezerVison is showing github.com — fix(language-service): do not return external template that does not … · angular/angular@6b6fcd7
File tree
Expand file treeCollapse file tree
Open diff view settings
packages/language-service
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: packages/language-service/src/ts_plugin.ts +10-2Lines changed: 10 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -29,8 +29,16 @@ export function getExternalFiles(project: tss.server.Project): string[] { |
29 | 29 | return []; |
30 | 30 | } |
31 | 31 | const ngLsHost = PROJECT_MAP.get(project); |
32 | | - ngLsHost?.getAnalyzedModules(); |
33 | | - return ngLsHost?.getExternalTemplates() || []; |
| 32 | + if (ngLsHost === undefined) { |
| 33 | + return []; |
| 34 | + } |
| 35 | + ngLsHost.getAnalyzedModules(); |
| 36 | + return ngLsHost.getExternalTemplates().filter(fileName => { |
| 37 | + // TODO(kyliau): Remove this when the following PR lands on the version of |
| 38 | + // TypeScript used in this repo. |
| 39 | + // https://github.com/microsoft/TypeScript/pull/41737 |
| 40 | + return project.fileExists(fileName); |
| 41 | + }); |
34 | 42 | } |
35 | 43 |
|
36 | 44 | export function create(info: tss.server.PluginCreateInfo): tss.LanguageService { |
|
Collapse file
Copy file name to clipboardExpand all lines: packages/language-service/test/ts_plugin_spec.ts +7Lines changed: 7 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -21,6 +21,7 @@ const mockProject = { |
21 | 21 | }, |
22 | 22 | }, |
23 | 23 | hasRoots: () => true, |
| 24 | + fileExists: () => true, |
24 | 25 | } as any; |
25 | 26 |
|
26 | 27 | describe('plugin', () => { |
@@ -136,6 +137,12 @@ describe('plugin', () => { |
136 | 137 | '/app/test.ng', |
137 | 138 | ]); |
138 | 139 | }); |
| 140 | + |
| 141 | + it('should not return external template that does not exist', () => { |
| 142 | + spyOn(mockProject, 'fileExists').and.returnValue(false); |
| 143 | + const externalTemplates = getExternalFiles(mockProject); |
| 144 | + expect(externalTemplates.length).toBe(0); |
| 145 | + }); |
139 | 146 | }); |
140 | 147 |
|
141 | 148 | describe(`with config 'angularOnly = true`, () => { |
|