Skip to content

Commit b5715bf

Browse files
Merge pull request microsoft#1968 from Microsoft/sourceFileTestInvariants
Check source file invariants after creating/updating them in our tests.
2 parents 759ced3 + 02c1b89 commit b5715bf

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

src/harness/harness.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -796,9 +796,15 @@ module Harness {
796796
}
797797
}
798798

799+
export function createSourceFileAndAssertInvariants(fileName: string, sourceText: string, languageVersion: ts.ScriptTarget) {
800+
var result = ts.createSourceFile(fileName, sourceText, languageVersion, /*setParentNodes:*/ true);
801+
Utils.assertInvariants(result, /*parent:*/ undefined);
802+
return result;
803+
}
804+
799805
export var defaultLibFileName = 'lib.d.ts';
800-
export var defaultLibSourceFile = ts.createSourceFile(defaultLibFileName, IO.readFile(libFolder + 'lib.core.d.ts'), /*languageVersion*/ ts.ScriptTarget.Latest);
801-
export var defaultES6LibSourceFile = ts.createSourceFile(defaultLibFileName, IO.readFile(libFolder + 'lib.core.es6.d.ts'), /*languageVersion*/ ts.ScriptTarget.Latest);
806+
export var defaultLibSourceFile = createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + 'lib.core.d.ts'), /*languageVersion*/ ts.ScriptTarget.Latest);
807+
export var defaultES6LibSourceFile = createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + 'lib.core.es6.d.ts'), /*languageVersion*/ ts.ScriptTarget.Latest);
802808

803809

804810
// Cache these between executions so we don't have to re-parse them for every test
@@ -828,7 +834,7 @@ module Harness {
828834
function register(file: { unitName: string; content: string; }) {
829835
if (file.content !== undefined) {
830836
var fileName = ts.normalizeSlashes(file.unitName);
831-
filemap[getCanonicalFileName(fileName)] = ts.createSourceFile(fileName, file.content, scriptTarget);
837+
filemap[getCanonicalFileName(fileName)] = createSourceFileAndAssertInvariants(fileName, file.content, scriptTarget);
832838
}
833839
};
834840
inputFiles.forEach(register);
@@ -845,7 +851,7 @@ module Harness {
845851
}
846852
else if (fn === fourslashFileName) {
847853
var tsFn = 'tests/cases/fourslash/' + fourslashFileName;
848-
fourslashSourceFile = fourslashSourceFile || ts.createSourceFile(tsFn, Harness.IO.readFile(tsFn), scriptTarget);
854+
fourslashSourceFile = fourslashSourceFile || createSourceFileAndAssertInvariants(tsFn, Harness.IO.readFile(tsFn), scriptTarget);
849855
return fourslashSourceFile;
850856
}
851857
else {
@@ -1069,7 +1075,7 @@ module Harness {
10691075
var register = (file: { unitName: string; content: string; }) => {
10701076
if (file.content !== undefined) {
10711077
var fileName = ts.normalizeSlashes(file.unitName);
1072-
filemap[getCanonicalFileName(fileName)] = ts.createSourceFile(fileName, file.content, options.target);
1078+
filemap[getCanonicalFileName(fileName)] = createSourceFileAndAssertInvariants(fileName, file.content, options.target);
10731079
}
10741080
};
10751081
inputFiles.forEach(register);

src/harness/harnessLanguageService.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ module Harness.LanguageService {
102102
compilationSettings: ts.CompilerOptions,
103103
scriptSnapshot: ts.IScriptSnapshot,
104104
version: string): ts.SourceFile {
105-
var sourceFile = ts.createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), compilationSettings.target);
105+
var sourceFile = Compiler.createSourceFileAndAssertInvariants(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), compilationSettings.target);
106106
sourceFile.version = version;
107107
return sourceFile;
108108
}
@@ -115,7 +115,9 @@ module Harness.LanguageService {
115115
version: string,
116116
textChangeRange: ts.TextChangeRange
117117
): ts.SourceFile {
118-
return ts.updateLanguageServiceSourceFile(document, scriptSnapshot, version, textChangeRange);
118+
var result = ts.updateLanguageServiceSourceFile(document, scriptSnapshot, version, textChangeRange);
119+
Utils.assertInvariants(result, /*parent:*/ undefined);
120+
return result;
119121
}
120122

121123
public releaseDocument(fileName: string, compilationSettings: ts.CompilerOptions): void {
@@ -269,7 +271,7 @@ module Harness.LanguageService {
269271

270272
/** Parse file given its source text */
271273
public parseSourceText(fileName: string, sourceText: ts.IScriptSnapshot): ts.SourceFile {
272-
var result = ts.createSourceFile(fileName, sourceText.getText(0, sourceText.getLength()), ts.ScriptTarget.Latest);
274+
var result = Compiler.createSourceFileAndAssertInvariants(fileName, sourceText.getText(0, sourceText.getLength()), ts.ScriptTarget.Latest);
273275
result.version = "1";
274276
return result;
275277
}

src/harness/projectsRunner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ class ProjectRunner extends RunnerBase {
172172
else {
173173
var text = getSourceFileText(fileName);
174174
if (text !== undefined) {
175-
sourceFile = ts.createSourceFile(fileName, text, languageVersion);
175+
sourceFile = Harness.Compiler.createSourceFileAndAssertInvariants(fileName, text, languageVersion);
176176
}
177177
}
178178

0 commit comments

Comments
 (0)