summaryrefslogtreecommitdiff
path: root/cli/tsc
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tsc')
-rw-r--r--cli/tsc/99_main_compiler.js142
1 files changed, 14 insertions, 128 deletions
diff --git a/cli/tsc/99_main_compiler.js b/cli/tsc/99_main_compiler.js
index 91bce61e3..86a68a6bd 100644
--- a/cli/tsc/99_main_compiler.js
+++ b/cli/tsc/99_main_compiler.js
@@ -163,8 +163,9 @@ delete Object.prototype.__proto__;
4: "TSX",
5: "Json",
6: "Wasm",
- 7: "BuildInfo",
- 8: "Unknown",
+ 7: "TsBuildInfo",
+ 8: "SourceMap",
+ 9: "Unknown",
JavaScript: 0,
JSX: 1,
TypeScript: 2,
@@ -172,8 +173,9 @@ delete Object.prototype.__proto__;
TSX: 4,
Json: 5,
Wasm: 6,
- BuildInfo: 7,
- Unknown: 6,
+ TsBuildInfo: 7,
+ SourceMap: 8,
+ Unknown: 9,
};
function getExtension(fileName, mediaType) {
@@ -183,7 +185,9 @@ delete Object.prototype.__proto__;
case MediaType.JSX:
return ts.Extension.Jsx;
case MediaType.TypeScript:
- return fileName.endsWith(".d.ts") ? ts.Extension.Dts : ts.Extension.Ts;
+ return ts.Extension.Ts;
+ case MediaType.Dts:
+ return ts.Extension.Dts;
case MediaType.TSX:
return ts.Extension.Tsx;
case MediaType.Wasm:
@@ -366,7 +370,7 @@ delete Object.prototype.__proto__;
}
/** @type {{ data: string; hash: string; }} */
- const { data, hash } = core.jsonOpSync(
+ const { data, hash, scriptKind } = core.jsonOpSync(
"op_load",
{ specifier },
);
@@ -375,6 +379,8 @@ delete Object.prototype.__proto__;
specifier,
data,
languageVersion,
+ false,
+ scriptKind,
);
sourceFile.moduleName = specifier;
sourceFile.version = hash;
@@ -406,7 +412,6 @@ delete Object.prototype.__proto__;
let maybeSpecifiers;
if (sourceFiles) {
maybeSpecifiers = sourceFiles.map((sf) => sf.moduleName);
- debug(` specifiers: ${maybeSpecifiers.join(", ")}`);
}
return core.jsonOpSync(
"op_emit",
@@ -465,11 +470,12 @@ delete Object.prototype.__proto__;
specifiers,
base,
});
- return resolved.map(([resolvedFileName, extension]) => ({
+ let r = resolved.map(([resolvedFileName, extension]) => ({
resolvedFileName,
extension,
isExternalLibraryImport: false,
}));
+ return r;
}
},
createHash(data) {
@@ -649,7 +655,6 @@ delete Object.prototype.__proto__;
// Warning! The values in this enum are duplicated in `cli/msg.rs`
// Update carefully!
const CompilerRequestType = {
- Compile: 0,
Bundle: 1,
RuntimeCompile: 2,
RuntimeBundle: 3,
@@ -671,25 +676,6 @@ delete Object.prototype.__proto__;
};
}
- function createCompileWriteFile(state) {
- return function writeFile(fileName, data, sourceFiles) {
- const isBuildInfo = fileName === TS_BUILD_INFO;
-
- if (isBuildInfo) {
- assert(isBuildInfo);
- state.buildInfo = data;
- return;
- }
-
- assert(sourceFiles);
- assert(sourceFiles.length === 1);
- state.emitMap[fileName] = {
- filename: sourceFiles[0].fileName,
- contents: data,
- };
- };
- }
-
function createRuntimeCompileWriteFile(state) {
return function writeFile(fileName, data, sourceFiles) {
assert(sourceFiles);
@@ -959,101 +945,6 @@ delete Object.prototype.__proto__;
.map((sym) => sym.getName());
}
- function compile({
- buildInfo,
- compilerOptions,
- rootNames,
- target,
- sourceFileMap,
- type,
- performance,
- }) {
- if (performance) {
- performanceStart();
- }
- debug(">>> compile start", { rootNames, type: CompilerRequestType[type] });
-
- // When a programme is emitted, TypeScript will call `writeFile` with
- // each file that needs to be emitted. The Deno compiler host delegates
- // this, to make it easier to perform the right actions, which vary
- // based a lot on the request.
- const state = {
- rootNames,
- emitMap: {},
- };
-
- let diagnostics = [];
-
- const { options, diagnostics: diags } = parseCompilerOptions(
- compilerOptions,
- );
-
- diagnostics = diags.filter(
- ({ code }) => code != 5023 && !IGNORED_DIAGNOSTICS.includes(code),
- );
-
- // TODO(bartlomieju): this options is excluded by `ts.convertCompilerOptionsFromJson`
- // however stuff breaks if it's not passed (type_directives_js_main.js, compiler_js_error.ts)
- options.allowNonTsExtensions = true;
-
- legacyHostState.target = target;
- legacyHostState.writeFile = createCompileWriteFile(state);
- legacyHostState.buildInfo = buildInfo;
-
- buildSourceFileCache(sourceFileMap);
- // if there was a configuration and no diagnostics with it, we will continue
- // to generate the program and possibly emit it.
- if (diagnostics.length === 0) {
- const program = ts.createIncrementalProgram({
- rootNames,
- options,
- host,
- });
-
- // TODO(bartlomieju): check if this is ok
- diagnostics = [
- ...program.getConfigFileParsingDiagnostics(),
- ...program.getSyntacticDiagnostics(),
- ...program.getOptionsDiagnostics(),
- ...program.getGlobalDiagnostics(),
- ...program.getSemanticDiagnostics(),
- ];
- diagnostics = diagnostics.filter(
- ({ code }) =>
- !IGNORED_DIAGNOSTICS.includes(code) &&
- !IGNORED_COMPILE_DIAGNOSTICS.includes(code),
- );
-
- // We will only proceed with the emit if there are no diagnostics.
- if (diagnostics.length === 0) {
- const emitResult = program.emit();
- // If `checkJs` is off we still might be compiling entry point JavaScript file
- // (if it has `.ts` imports), but it won't be emitted. In that case we skip
- // assertion.
- if (options.checkJs) {
- assert(
- emitResult.emitSkipped === false,
- "Unexpected skip of the emit.",
- );
- }
- // emitResult.diagnostics is `readonly` in TS3.5+ and can't be assigned
- // without casting.
- diagnostics = emitResult.diagnostics;
- }
- performanceProgram({ program });
- }
-
- debug("<<< compile end", { rootNames, type: CompilerRequestType[type] });
- const stats = performance ? performanceEnd() : undefined;
-
- return {
- emitMap: state.emitMap,
- buildInfo: state.buildInfo,
- diagnostics: fromTypeScriptDiagnostic(diagnostics),
- stats,
- };
- }
-
function bundle({
compilerOptions,
rootNames,
@@ -1296,11 +1187,6 @@ delete Object.prototype.__proto__;
function tsCompilerOnMessage(msg) {
const request = msg.data;
switch (request.type) {
- case CompilerRequestType.Compile: {
- const result = compile(request);
- opCompilerRespond(result);
- break;
- }
case CompilerRequestType.Bundle: {
const result = bundle(request);
opCompilerRespond(result);