Skip to content

Commit bbbec22

Browse files
committed
Merge pull request microsoft#1735 from Microsoft/LSAPICleanup
Language Service host API cleanup
2 parents 22ed101 + d6bd9f7 commit bbbec22

26 files changed

Lines changed: 33885 additions & 909 deletions

src/compiler/core.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,10 @@ module ts {
644644
}
645645
}
646646

647+
export function getDefaultLibFilename(options: CompilerOptions): string {
648+
return options.target === ScriptTarget.ES6 ? "lib.es6.d.ts" : "lib.d.ts";
649+
}
650+
647651
export interface ObjectAllocator {
648652
getNodeConstructor(kind: SyntaxKind): new () => Node;
649653
getSymbolConstructor(): new (flags: SymbolFlags, name: string) => Symbol;

src/compiler/program.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ module ts {
6464

6565
return {
6666
getSourceFile,
67-
getDefaultLibFilename: options => combinePaths(getDirectoryPath(normalizePath(sys.getExecutingFilePath())), options.target === ScriptTarget.ES6 ? "lib.es6.d.ts" : "lib.d.ts"),
67+
getDefaultLibFilename: options => combinePaths(getDirectoryPath(normalizePath(sys.getExecutingFilePath())), getDefaultLibFilename(options)),
6868
writeFile,
6969
getCurrentDirectory: () => currentDirectory || (currentDirectory = sys.getCurrentDirectory()),
7070
useCaseSensitiveFileNames: () => sys.useCaseSensitiveFileNames,
@@ -174,7 +174,7 @@ module ts {
174174
}
175175
var diagnostic: DiagnosticMessage;
176176
if (hasExtension(filename)) {
177-
if (!options.allowNonTsExtensions && !fileExtensionIs(filename, ".ts")) {
177+
if (!options.allowNonTsExtensions && !fileExtensionIs(host.getCanonicalFileName(filename), ".ts")) {
178178
diagnostic = Diagnostics.File_0_must_have_extension_ts_or_d_ts;
179179
}
180180
else if (!findSourceFile(filename, isDefaultLib, refFile, refPos, refEnd)) {

src/harness/fourslash.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,6 @@ module FourSlash {
237237
getLength: () => {
238238
return sourceText.length;
239239
},
240-
getLineStartPositions: () => {
241-
return <number[]>[];
242-
},
243240
getChangeRange: (oldSnapshot: ts.IScriptSnapshot) => {
244241
return <ts.TextChangeRange>undefined;
245242
}
@@ -1403,7 +1400,7 @@ module FourSlash {
14031400
var content = snapshot.getText(0, snapshot.getLength());
14041401

14051402
var referenceSourceFile = ts.createLanguageServiceSourceFile(
1406-
this.activeFile.fileName, createScriptSnapShot(content), ts.ScriptTarget.Latest, /*version:*/ "0", /*isOpen:*/ false, /*setNodeParents:*/ false);
1403+
this.activeFile.fileName, createScriptSnapShot(content), ts.ScriptTarget.Latest, /*version:*/ "0", /*setNodeParents:*/ false);
14071404
var referenceSyntaxDiagnostics = referenceSourceFile.getSyntacticDiagnostics();
14081405

14091406
Utils.assertDiagnosticsEquals(incrementalSyntaxDiagnostics, referenceSyntaxDiagnostics);

src/harness/harness.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,8 @@ module Harness {
930930
settingsCallback(null);
931931
}
932932

933+
var newLine = '\r\n';
934+
933935
var useCaseSensitiveFileNames = ts.sys.useCaseSensitiveFileNames;
934936
this.settings.forEach(setting => {
935937
switch (setting.flag.toLowerCase()) {
@@ -1008,7 +1010,7 @@ module Harness {
10081010

10091011
case 'newline':
10101012
case 'newlines':
1011-
ts.sys.newLine = setting.value;
1013+
newLine = setting.value;
10121014
break;
10131015

10141016
case 'comments':
@@ -1050,7 +1052,7 @@ module Harness {
10501052
break;
10511053

10521054
case 'includebuiltfile':
1053-
inputFiles.push({ unitName: setting.value, content: IO.readFile(libFolder + setting.value) });
1055+
inputFiles.push({ unitName: setting.value, content: normalizeLineEndings(IO.readFile(libFolder + setting.value), newLine) });
10541056
break;
10551057

10561058
default:
@@ -1096,7 +1098,7 @@ module Harness {
10961098
onComplete(result, program);
10971099

10981100
// reset what newline means in case the last test changed it
1099-
ts.sys.newLine = '\r\n';
1101+
ts.sys.newLine = newLine;
11001102
return options;
11011103
}
11021104

@@ -1168,6 +1170,14 @@ module Harness {
11681170
}
11691171
}
11701172

1173+
function normalizeLineEndings(text: string, lineEnding: string): string {
1174+
var normalized = text.replace(/\r\n?/g, '\n');
1175+
if (lineEnding !== '\n') {
1176+
normalized = normalized.replace(/\n/g, lineEnding);
1177+
}
1178+
return normalized;
1179+
}
1180+
11711181
export function getMinimalDiagnostic(err: ts.Diagnostic): HarnessDiagnostic {
11721182
var errorLineInfo = err.file ? err.file.getLineAndCharacterFromPosition(err.start) : { line: 0, character: 0 };
11731183
return {

src/harness/harnessLanguageService.ts

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module Harness.LanguageService {
77
public editRanges: { length: number; textChangeRange: ts.TextChangeRange; }[] = [];
88
public lineMap: number[] = null;
99

10-
constructor(public fileName: string, public content: string, public isOpen = true) {
10+
constructor(public fileName: string, public content: string) {
1111
this.setContent(content);
1212
}
1313

@@ -72,14 +72,6 @@ module Harness.LanguageService {
7272
return this.textSnapshot.length;
7373
}
7474

75-
public getLineStartPositions(): string {
76-
if (this.lineMap === null) {
77-
this.lineMap = ts.computeLineStarts(this.textSnapshot);
78-
}
79-
80-
return JSON.stringify(this.lineMap);
81-
}
82-
8375
public getChangeRange(oldScript: ts.ScriptSnapshotShim): string {
8476
var oldShim = <ScriptSnapshotShim>oldScript;
8577
var range = this.scriptInfo.getTextChangeRangeBetweenVersions(oldShim.version, this.version);
@@ -109,11 +101,9 @@ module Harness.LanguageService {
109101
fileName: string,
110102
compilationSettings: ts.CompilerOptions,
111103
scriptSnapshot: ts.IScriptSnapshot,
112-
version: string,
113-
isOpen: boolean): ts.SourceFile {
104+
version: string): ts.SourceFile {
114105
var sourceFile = ts.createSourceFile(fileName, scriptSnapshot.getText(0, scriptSnapshot.getLength()), compilationSettings.target);
115106
sourceFile.version = version;
116-
sourceFile.isOpen = isOpen;
117107
return sourceFile;
118108
}
119109

@@ -123,10 +113,9 @@ module Harness.LanguageService {
123113
compilationSettings: ts.CompilerOptions,
124114
scriptSnapshot: ts.IScriptSnapshot,
125115
version: string,
126-
isOpen: boolean,
127116
textChangeRange: ts.TextChangeRange
128117
): ts.SourceFile {
129-
return ts.updateLanguageServiceSourceFile(document, scriptSnapshot, version, isOpen, textChangeRange);
118+
return ts.updateLanguageServiceSourceFile(document, scriptSnapshot, version, textChangeRange);
130119
}
131120

132121
public releaseDocument(fileName: string, compilationSettings: ts.CompilerOptions): void {
@@ -159,13 +148,17 @@ module Harness.LanguageService {
159148
}
160149

161150
private getScriptInfo(fileName: string): ScriptInfo {
162-
return this.fileNameToScript[fileName];
151+
return ts.lookUp(this.fileNameToScript, fileName);
163152
}
164153

165154
public addScript(fileName: string, content: string) {
166155
this.fileNameToScript[fileName] = new ScriptInfo(fileName, content);
167156
}
168157

158+
private contains(fileName: string): boolean {
159+
return ts.hasProperty(this.fileNameToScript, fileName);
160+
}
161+
169162
public updateScript(fileName: string, content: string) {
170163
var script = this.getScriptInfo(fileName);
171164
if (script !== null) {
@@ -223,20 +216,22 @@ module Harness.LanguageService {
223216

224217
public getScriptFileNames(): string {
225218
var fileNames: string[] = [];
226-
ts.forEachKey(this.fileNameToScript, (fileName) => { fileNames.push(fileName); });
219+
ts.forEachKey(this.fileNameToScript,(fileName) => { fileNames.push(fileName); });
227220
return JSON.stringify(fileNames);
228221
}
229222

230223
public getScriptSnapshot(fileName: string): ts.ScriptSnapshotShim {
231-
return new ScriptSnapshotShim(this.getScriptInfo(fileName));
224+
if (this.contains(fileName)) {
225+
return new ScriptSnapshotShim(this.getScriptInfo(fileName));
226+
}
227+
return undefined;
232228
}
233229

234230
public getScriptVersion(fileName: string): string {
235-
return this.getScriptInfo(fileName).version.toString();
236-
}
237-
238-
public getScriptIsOpen(fileName: string): boolean {
239-
return this.getScriptInfo(fileName).isOpen;
231+
if (this.contains(fileName)) {
232+
return this.getScriptInfo(fileName).version.toString();
233+
}
234+
return undefined;
240235
}
241236

242237
public getLocalizedDiagnosticMessages(): string {
@@ -272,7 +267,6 @@ module Harness.LanguageService {
272267
public parseSourceText(fileName: string, sourceText: ts.IScriptSnapshot): ts.SourceFile {
273268
var result = ts.createSourceFile(fileName, sourceText.getText(0, sourceText.getLength()), ts.ScriptTarget.Latest);
274269
result.version = "1";
275-
result.isOpen = true;
276270
return result;
277271
}
278272

src/services/formatting/rulesProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ module ts.formatting {
2222
private activeRules: Rule[];
2323
private rulesMap: RulesMap;
2424

25-
constructor(private logger: Logger) {
25+
constructor() {
2626
this.globalRules = new Rules();
2727
}
2828

0 commit comments

Comments
 (0)