Skip to content

Commit da60598

Browse files
committed
Applying getScriptKindFRomFileName to HostFileInformation before we set the ScriptKind.
If the host returns ScriptKind 'Unknown' or 'undefined' we attempt to get the correct ScriptKind based on the file name. If this cannot be determined we return the default ScriptKind 'TS'
1 parent 1c990bd commit da60598

2 files changed

Lines changed: 18 additions & 18 deletions

File tree

src/compiler/parser.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,22 @@ namespace ts {
407407
return result;
408408
}
409409

410+
/* @internal */
411+
export function getScriptKindFromFileName(fileName: string): ScriptKind {
412+
const ext = fileName.split(".").pop();
413+
switch (ext.toLowerCase()) {
414+
case "js":
415+
return ScriptKind.JS;
416+
case "jsx":
417+
return ScriptKind.JSX;
418+
case "ts":
419+
return ScriptKind.TS;
420+
case "tsx":
421+
return ScriptKind.TSX;
422+
default:
423+
return ScriptKind.TS;
424+
}
425+
}
410426

411427
// Produces a new SourceFile for the 'newText' provided. The 'textChangeRange' parameter
412428
// indicates what changed between the 'text' that this SourceFile has and the 'newText'.
@@ -551,22 +567,6 @@ namespace ts {
551567
return result;
552568
}
553569

554-
function getScriptKindFromFileName(fileName: string): ScriptKind {
555-
const ext = fileName.split(".").pop();
556-
switch (ext.toLowerCase()) {
557-
case "js":
558-
return ScriptKind.JS;
559-
case "jsx":
560-
return ScriptKind.JSX;
561-
case "ts":
562-
return ScriptKind.TS;
563-
case "tsx":
564-
return ScriptKind.TSX;
565-
default:
566-
return ScriptKind.TS;
567-
}
568-
}
569-
570570
function getLanguageVariant(scriptKind: ScriptKind) {
571571
// .tsx and .jsx files are treated as jsx language variant.
572572
return scriptKind === ScriptKind.TSX || scriptKind === ScriptKind.JSX || scriptKind === ScriptKind.JS ? LanguageVariant.JSX : LanguageVariant.Standard;

src/services/services.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1757,7 +1757,7 @@ namespace ts {
17571757
hostFileName: fileName,
17581758
version: this.host.getScriptVersion(fileName),
17591759
scriptSnapshot: scriptSnapshot,
1760-
scriptKind: scriptKind
1760+
scriptKind: scriptKind ? scriptKind : getScriptKindFromFileName(fileName)
17611761
};
17621762
}
17631763

@@ -2857,7 +2857,7 @@ namespace ts {
28572857
// We do not support the scenario where a host can modify a registered
28582858
// file's script kind, i.e. in one project some file is treated as ".ts"
28592859
// and in another as ".js"
2860-
Debug.assert(hostFileInformation.scriptKind === oldSourceFile.scriptKind, "Registered script kind (" + oldSourceFile.scriptKind + ") should match new script kind (" + hostFileInformation.scriptKind +") for file: " + fileName);
2860+
Debug.assert(hostFileInformation.scriptKind === oldSourceFile.scriptKind, "Registered script kind (" + oldSourceFile.scriptKind + ") should match new script kind (" + hostFileInformation.scriptKind + ") for file: " + fileName);
28612861

28622862
return documentRegistry.updateDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version, hostFileInformation.scriptKind);
28632863
}

0 commit comments

Comments
 (0)