Skip to content

Commit bb01614

Browse files
committed
call updateGraph before getting language service
1 parent c0f4fdd commit bb01614

3 files changed

Lines changed: 57 additions & 47 deletions

File tree

src/harness/unittests/cachingInServerLSHost.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ namespace ts {
110110
const { project, rootScriptInfo } = createProject(root.name, serverHost);
111111

112112
// ensure that imported file was found
113-
let diags = project.languageService.getSemanticDiagnostics(imported.name);
113+
let diags = project.getLanguageService().getSemanticDiagnostics(imported.name);
114114
assert.equal(diags.length, 1);
115115

116116

@@ -126,7 +126,7 @@ namespace ts {
126126
var x: string = 1;`;
127127
rootScriptInfo.editContent(0, root.content.length, newContent);
128128
// trigger synchronization to make sure that import will be fetched from the cache
129-
diags = project.languageService.getSemanticDiagnostics(imported.name);
129+
diags = project.getLanguageService().getSemanticDiagnostics(imported.name);
130130
// ensure file has correct number of errors after edit
131131
assert.equal(diags.length, 1);
132132
}
@@ -145,7 +145,7 @@ namespace ts {
145145

146146
try {
147147
// trigger synchronization to make sure that LSHost will try to find 'f2' module on disk
148-
project.languageService.getSemanticDiagnostics(imported.name);
148+
project.getLanguageService().getSemanticDiagnostics(imported.name);
149149
assert.isTrue(false, `should not find file '${imported.name}'`);
150150
}
151151
catch (e) {
@@ -167,7 +167,7 @@ namespace ts {
167167

168168
const newContent = `import {x} from "f1"`;
169169
rootScriptInfo.editContent(0, root.content.length, newContent);
170-
project.languageService.getSemanticDiagnostics(imported.name);
170+
project.getLanguageService().getSemanticDiagnostics(imported.name);
171171
assert.isTrue(fileExistsCalled);
172172

173173
// setting compiler options discards module resolution cache
@@ -177,7 +177,7 @@ namespace ts {
177177
compilerOptions.target = ts.ScriptTarget.ES5;
178178
project.setCompilerOptions(compilerOptions);
179179

180-
project.languageService.getSemanticDiagnostics(imported.name);
180+
project.getLanguageService().getSemanticDiagnostics(imported.name);
181181
assert.isTrue(fileExistsCalled);
182182
}
183183
});
@@ -211,7 +211,7 @@ namespace ts {
211211

212212
const { project, rootScriptInfo } = createProject(root.name, serverHost);
213213

214-
let diags = project.languageService.getSemanticDiagnostics(root.name);
214+
let diags = project.getLanguageService().getSemanticDiagnostics(root.name);
215215
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
216216
assert.isTrue(diags.length === 1, "one diagnostic expected");
217217
assert.isTrue(typeof diags[0].messageText === "string" && ((<string>diags[0].messageText).indexOf("Cannot find module") === 0), "should be 'cannot find module' message");
@@ -221,7 +221,7 @@ namespace ts {
221221
fileExistsCalledForBar = false;
222222
rootScriptInfo.editContent(0, root.content.length, `import {y} from "bar"`);
223223

224-
diags = project.languageService.getSemanticDiagnostics(root.name);
224+
diags = project.getLanguageService().getSemanticDiagnostics(root.name);
225225
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
226226
assert.isTrue(diags.length === 0);
227227
});

src/server/project.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace ts.server {
2424
private lsHost: ServerLanguageServiceHost;
2525
private program: ts.Program;
2626

27-
languageService: LanguageService;
27+
private languageService: LanguageService;
2828

2929
/**
3030
* Set of files that was returned from the last call to getChangesSinceVersion.
@@ -74,6 +74,13 @@ namespace ts.server {
7474
this.markAsDirty();
7575
}
7676

77+
getLanguageService(ensureSynchronized = true): LanguageService {
78+
if (ensureSynchronized) {
79+
this.updateGraph();
80+
}
81+
return this.languageService;
82+
}
83+
7784
getProjectVersion() {
7885
return this.projectStateVersion.toString();
7986
}
@@ -225,6 +232,7 @@ namespace ts.server {
225232
}
226233
}
227234
}
235+
228236
return oldProjectStructureVersion === this.projectStructureVersion;
229237
}
230238

@@ -278,6 +286,8 @@ namespace ts.server {
278286
}
279287

280288
getChangesSinceVersion(lastKnownVersion?: number): protocol.ProjectFiles {
289+
this.updateGraph();
290+
281291
const info = {
282292
projectName: this.getProjectName(),
283293
version: this.projectStructureVersion,

0 commit comments

Comments
 (0)