Skip to content

Commit ae5f4c2

Browse files
Merge pull request #444 from Microsoft/newCompilerLS
Port over changes to the ScriptSnapshot API from the languageService-v2 branch.
2 parents 2f96374 + 088e586 commit ae5f4c2

File tree

11 files changed

+62
-91
lines changed

11 files changed

+62
-91
lines changed

src/compiler/parser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ module ts {
417417
nodeIsNestedInLabel(label: Identifier, requireIterationStatement: boolean, stopAtFunctionBoundary: boolean): ControlBlockContext;
418418
}
419419

420-
export function createSourceFile(filename: string, sourceText: string, languageVersion: ScriptTarget, version: number = 0, isOpen: boolean = false): SourceFile {
420+
export function createSourceFile(filename: string, sourceText: string, languageVersion: ScriptTarget, version: string, isOpen: boolean = false): SourceFile {
421421
var file: SourceFile;
422422
var scanner: Scanner;
423423
var token: SyntaxKind;

src/compiler/tsc.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ module ts {
142142
}
143143
text = "";
144144
}
145-
return text !== undefined ? createSourceFile(filename, text, languageVersion) : undefined;
145+
return text !== undefined ? createSourceFile(filename, text, languageVersion, /*version:*/ "0") : undefined;
146146
}
147147

148148
function writeFile(fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void) {

src/compiler/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ module ts {
526526
identifierCount: number;
527527
symbolCount: number;
528528
isOpen: boolean;
529-
version: number;
529+
version: string;
530530
languageVersion: ScriptTarget;
531531
}
532532

src/harness/fourslash.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1895,11 +1895,11 @@ module FourSlash {
18951895
var result = '';
18961896
var fourslashFilename = 'fourslash.ts';
18971897
var tsFn = 'tests/cases/fourslash/' + fourslashFilename;
1898-
fourslashSourceFile = fourslashSourceFile || ts.createSourceFile(tsFn, Harness.IO.readFile(tsFn), ts.ScriptTarget.ES5, /*version*/ 0, /*isOpen*/ false);
1898+
fourslashSourceFile = fourslashSourceFile || ts.createSourceFile(tsFn, Harness.IO.readFile(tsFn), ts.ScriptTarget.ES5, /*version*/ "0", /*isOpen*/ false);
18991899

19001900
var files: { [filename: string]: ts.SourceFile; } = {};
19011901
files[fourslashFilename] = fourslashSourceFile;
1902-
files[fileName] = ts.createSourceFile(fileName, content, ts.ScriptTarget.ES5, /*version*/ 0, /*isOpen*/ false);
1902+
files[fileName] = ts.createSourceFile(fileName, content, ts.ScriptTarget.ES5, /*version*/ "0", /*isOpen*/ false);
19031903
files[Harness.Compiler.defaultLibFileName] = Harness.Compiler.defaultLibSourceFile;
19041904

19051905
var host = Harness.Compiler.createCompilerHost(files, (fn, contents) => result = contents);

src/harness/harness.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ module Harness {
532532
}
533533

534534
export var defaultLibFileName = 'lib.d.ts';
535-
export var defaultLibSourceFile = ts.createSourceFile(defaultLibFileName, IO.readFile(libFolder + 'lib.core.d.ts'), /*languageVersion*/ ts.ScriptTarget.ES5);
535+
export var defaultLibSourceFile = ts.createSourceFile(defaultLibFileName, IO.readFile(libFolder + 'lib.core.d.ts'), /*languageVersion*/ ts.ScriptTarget.ES5, /*version:*/ "0");
536536

537537
export function createCompilerHost(filemap: { [filename: string]: ts.SourceFile; }, writeFile: (fn: string, contents: string, writeByteOrderMark:boolean) => void): ts.CompilerHost {
538538
return {
@@ -724,7 +724,7 @@ module Harness {
724724
var filemap: { [name: string]: ts.SourceFile; } = {};
725725
var register = (file: { unitName: string; content: string; }) => {
726726
var filename = Path.switchToForwardSlashes(file.unitName);
727-
filemap[filename] = ts.createSourceFile(filename, file.content, options.target);
727+
filemap[filename] = ts.createSourceFile(filename, file.content, options.target, /*version:*/ "0");
728728
};
729729
inputFiles.forEach(register);
730730
otherFiles.forEach(register);

src/harness/harnessLanguageService.ts

Lines changed: 8 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ module Harness.LanguageService {
8080
return JSON.stringify(this.lineMap.lineStarts());
8181
}
8282

83-
public getTextChangeRangeSinceVersion(scriptVersion: number): string {
84-
var range = this.scriptInfo.getTextChangeRangeBetweenVersions(scriptVersion, this.version);
83+
public getChangeRange(oldScript: ts.ScriptSnapshotShim): string {
84+
var oldShim = <ScriptSnapshotShim>oldScript;
85+
var range = this.scriptInfo.getTextChangeRangeBetweenVersions(oldShim.version, this.version);
8586
if (range === null) {
8687
return null;
8788
}
@@ -101,50 +102,14 @@ module Harness.LanguageService {
101102
}
102103
}
103104

104-
class ScriptSnapshotShimAdapter implements TypeScript.IScriptSnapshot {
105-
private lineStartPositions: number[] = null;
106-
constructor(private scriptSnapshotShim: ts.ScriptSnapshotShim) {}
107-
getText(start: number, end: number): string {return this.scriptSnapshotShim.getText(start, end);}
108-
getLength(): number {return this.scriptSnapshotShim.getLength();}
109-
getLineStartPositions(): number[] { return JSON.parse(this.scriptSnapshotShim.getLineStartPositions()); }
110-
getTextChangeRangeSinceVersion(scriptVersion: number): TypeScript.TextChangeRange {
111-
var encoded = this.scriptSnapshotShim.getTextChangeRangeSinceVersion(scriptVersion);
112-
if (encoded == null) {
113-
return null;
114-
}
115-
116-
var decoded: { span: { start: number; length: number; }; newLength: number; } = JSON.parse(encoded);
117-
return new TypeScript.TextChangeRange(
118-
new TypeScript.TextSpan(decoded.span.start, decoded.span.length), decoded.newLength);
119-
}
120-
}
121-
122-
class LanguageServiceShimHostAdapter implements ts.LanguageServiceHost {
123-
constructor(private shimHost: ts.LanguageServiceShimHost) { }
124-
information(): boolean { return this.shimHost.information(); }
125-
debug(): boolean { return this.shimHost.debug(); }
126-
warning(): boolean { return this.shimHost.warning();}
127-
error(): boolean { return this.shimHost.error(); }
128-
fatal(): boolean { return this.shimHost.fatal(); }
129-
log(s: string): void { this.shimHost.log(s); }
130-
getCompilationSettings(): ts.CompilerOptions { return JSON.parse(this.shimHost.getCompilationSettings()); }
131-
getScriptFileNames(): string[] { return JSON.parse(this.shimHost.getScriptFileNames());}
132-
getScriptSnapshot(fileName: string): TypeScript.IScriptSnapshot { return new ScriptSnapshotShimAdapter(this.shimHost.getScriptSnapshot(fileName));}
133-
getScriptVersion(fileName: string): number { return this.shimHost.getScriptVersion(fileName);}
134-
getScriptIsOpen(fileName: string): boolean { return this.shimHost.getScriptIsOpen(fileName); }
135-
getLocalizedDiagnosticMessages(): any { JSON.parse(this.shimHost.getLocalizedDiagnosticMessages());}
136-
getCancellationToken(): ts.CancellationToken { return this.shimHost.getCancellationToken(); }
137-
}
138-
139105
export class NonCachingDocumentRegistry implements ts.DocumentRegistry {
140-
141106
public static Instance: ts.DocumentRegistry = new NonCachingDocumentRegistry();
142107

143108
public acquireDocument(
144109
fileName: string,
145110
compilationSettings: ts.CompilerOptions,
146111
scriptSnapshot: TypeScript.IScriptSnapshot,
147-
version: number,
112+
version: string,
148113
isOpen: boolean): ts.SourceFile {
149114
return ts.createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), compilationSettings.target, version, isOpen);
150115
}
@@ -154,7 +119,7 @@ module Harness.LanguageService {
154119
fileName: string,
155120
compilationSettings: ts.CompilerOptions,
156121
scriptSnapshot: TypeScript.IScriptSnapshot,
157-
version: number,
122+
version: string,
158123
isOpen: boolean,
159124
textChangeRange: TypeScript.TextChangeRange
160125
): ts.SourceFile {
@@ -252,8 +217,8 @@ module Harness.LanguageService {
252217
return new ScriptSnapshotShim(this.getScriptInfo(fileName));
253218
}
254219

255-
public getScriptVersion(fileName: string): number {
256-
return this.getScriptInfo(fileName).version;
220+
public getScriptVersion(fileName: string): string {
221+
return this.getScriptInfo(fileName).version.toString();
257222
}
258223

259224
public getScriptIsOpen(fileName: string): boolean {
@@ -270,7 +235,7 @@ module Harness.LanguageService {
270235
public getLanguageService(): ts.LanguageServiceShim {
271236
var ls = new TypeScript.Services.TypeScriptServicesFactory().createLanguageServiceShim(this);
272237
this.ls = ls;
273-
var hostAdapter = new LanguageServiceShimHostAdapter(this);
238+
var hostAdapter = new ts.LanguageServiceShimHostAdapter(this);
274239

275240
this.newLS = ts.createLanguageService(hostAdapter, NonCachingDocumentRegistry.Instance);
276241
return ls;

src/harness/projectsRunner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ class ProjectRunner extends RunnerBase {
152152
}
153153

154154
if (text !== undefined) {
155-
sourceFile = ts.createSourceFile(filename, text, languageVersion);
155+
sourceFile = ts.createSourceFile(filename, text, languageVersion, /*version:*/ "0");
156156
}
157157
}
158158

src/harness/rwcRunner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ module RWC {
107107
catch (e) {
108108
// Leave fileContents undefined;
109109
}
110-
return ts.createSourceFile(fileName, fileContents, languageVersion);
110+
return ts.createSourceFile(fileName, fileContents, languageVersion, /*version:*/ "0");
111111
},
112112
getDefaultLibFilename: () => libPath,
113113
writeFile: (fn, contents) => emitterIOHost.writeFile(fn, contents, false),

0 commit comments

Comments
 (0)