Skip to content

Commit 55db9dc

Browse files
Merge pull request #459 from Microsoft/revertLS1
Revert the previous language service merge.
2 parents 2775fc2 + a1b7c4f commit 55db9dc

File tree

11 files changed

+91
-62
lines changed

11 files changed

+91
-62
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: string, isOpen: boolean = false): SourceFile {
420+
export function createSourceFile(filename: string, sourceText: string, languageVersion: ScriptTarget, version: number = 0, 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, /*version:*/ "0") : undefined;
145+
return text !== undefined ? createSourceFile(filename, text, languageVersion) : 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: string;
529+
version: number;
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, /*version:*/ "0");
535+
export var defaultLibSourceFile = ts.createSourceFile(defaultLibFileName, IO.readFile(libFolder + 'lib.core.d.ts'), /*languageVersion*/ ts.ScriptTarget.ES5);
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, /*version:*/ "0");
727+
filemap[filename] = ts.createSourceFile(filename, file.content, options.target);
728728
};
729729
inputFiles.forEach(register);
730730
otherFiles.forEach(register);

src/harness/harnessLanguageService.ts

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

83-
public getChangeRange(oldScript: ts.ScriptSnapshotShim): string {
84-
var oldShim = <ScriptSnapshotShim>oldScript;
85-
var range = this.scriptInfo.getTextChangeRangeBetweenVersions(oldShim.version, this.version);
83+
public getTextChangeRangeSinceVersion(scriptVersion: number): string {
84+
var range = this.scriptInfo.getTextChangeRangeBetweenVersions(scriptVersion, this.version);
8685
if (range === null) {
8786
return null;
8887
}
@@ -102,14 +101,50 @@ module Harness.LanguageService {
102101
}
103102
}
104103

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+
105139
export class NonCachingDocumentRegistry implements ts.DocumentRegistry {
140+
106141
public static Instance: ts.DocumentRegistry = new NonCachingDocumentRegistry();
107142

108143
public acquireDocument(
109144
fileName: string,
110145
compilationSettings: ts.CompilerOptions,
111146
scriptSnapshot: TypeScript.IScriptSnapshot,
112-
version: string,
147+
version: number,
113148
isOpen: boolean): ts.SourceFile {
114149
return ts.createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), compilationSettings.target, version, isOpen);
115150
}
@@ -119,7 +154,7 @@ module Harness.LanguageService {
119154
fileName: string,
120155
compilationSettings: ts.CompilerOptions,
121156
scriptSnapshot: TypeScript.IScriptSnapshot,
122-
version: string,
157+
version: number,
123158
isOpen: boolean,
124159
textChangeRange: TypeScript.TextChangeRange
125160
): ts.SourceFile {
@@ -217,8 +252,8 @@ module Harness.LanguageService {
217252
return new ScriptSnapshotShim(this.getScriptInfo(fileName));
218253
}
219254

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

224259
public getScriptIsOpen(fileName: string): boolean {
@@ -235,7 +270,7 @@ module Harness.LanguageService {
235270
public getLanguageService(): ts.LanguageServiceShim {
236271
var ls = new TypeScript.Services.TypeScriptServicesFactory().createLanguageServiceShim(this);
237272
this.ls = ls;
238-
var hostAdapter = new ts.LanguageServiceShimHostAdapter(this);
273+
var hostAdapter = new LanguageServiceShimHostAdapter(this);
239274

240275
this.newLS = ts.createLanguageService(hostAdapter, NonCachingDocumentRegistry.Instance);
241276
return ls;

src/harness/projectsRunner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ class ProjectRunner extends RunnerBase {
174174
else {
175175
var text = getSourceFileText(filename);
176176
if (text !== undefined) {
177-
sourceFile = ts.createSourceFile(filename, text, languageVersion, /*version:*/ "0");
177+
sourceFile = ts.createSourceFile(filename, text, languageVersion);
178178
}
179179
}
180180

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, /*version:*/ "0");
110+
return ts.createSourceFile(fileName, fileContents, languageVersion);
111111
},
112112
getDefaultLibFilename: () => libPath,
113113
writeFile: (fn, contents) => emitterIOHost.writeFile(fn, contents, false),

0 commit comments

Comments
 (0)