Skip to content

Commit 65e5183

Browse files
committed
Remove options argument from getTranspilationResult
1 parent c211764 commit 65e5183

4 files changed

Lines changed: 26 additions & 36 deletions

File tree

src/Transpile.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ export interface TranspilationResult {
4848

4949
export interface GetTranspilationResultOptions {
5050
program: ts.Program;
51-
options: CompilerOptions;
5251
customTransformers?: ts.CustomTransformers;
5352
sourceFiles?: ts.SourceFile[];
5453
printer?: LuaPrinter;
@@ -57,13 +56,14 @@ export interface GetTranspilationResultOptions {
5756

5857
export function getTranspilationResult({
5958
program,
60-
options,
6159
customTransformers = {},
6260
sourceFiles: targetSourceFiles,
63-
printer = new LuaPrinter(options),
64-
transformer = new LuaTransformer(program, options),
61+
printer,
62+
transformer,
6563
}: GetTranspilationResultOptions): TranspilationResult {
66-
const { noEmit, emitDeclarationOnly, noEmitOnError } = options;
64+
const options = program.getCompilerOptions();
65+
printer = printer || new LuaPrinter(options);
66+
transformer = transformer || new LuaTransformer(program, options);
6767

6868
const diagnostics: ts.Diagnostic[] = [];
6969
const transpiledFiles = new Map<string, TranspiledFile>();
@@ -75,7 +75,7 @@ export function getTranspilationResult({
7575
}
7676
};
7777

78-
if (noEmitOnError) {
78+
if (options.noEmitOnError) {
7979
const preEmitDiagnostics = [
8080
...program.getOptionsDiagnostics(),
8181
...program.getGlobalDiagnostics(),
@@ -102,9 +102,9 @@ export function getTranspilationResult({
102102

103103
const processSourceFile = (sourceFile: ts.SourceFile) => {
104104
try {
105-
const [luaAST, lualibFeatureSet] = transformer.transformSourceFile(sourceFile);
106-
if (!noEmit && !emitDeclarationOnly) {
107-
const [lua, sourceMap] = printer.print(
105+
const [luaAST, lualibFeatureSet] = transformer!.transformSourceFile(sourceFile);
106+
if (!options.noEmit && !options.emitDeclarationOnly) {
107+
const [lua, sourceMap] = printer!.print(
108108
luaAST,
109109
lualibFeatureSet,
110110
sourceFile.fileName
@@ -146,13 +146,12 @@ export function getTranspilationResult({
146146

147147
const isEmittableJsonFile = (sourceFile: ts.SourceFile) =>
148148
sourceFile.flags & ts.NodeFlags.JsonFile &&
149-
!emitDeclarationOnly &&
149+
!options.emitDeclarationOnly &&
150150
!program.isSourceFileFromExternalLibrary(sourceFile);
151151

152152
// We always have to emit to get transformer diagnostics
153-
const programOptions = program.getCompilerOptions();
154-
const programNoEmit = programOptions.noEmit;
155-
programOptions.noEmit = false;
153+
const oldNoEmit = options.noEmit;
154+
options.noEmit = false;
156155

157156
if (targetSourceFiles) {
158157
for (const sourceFile of targetSourceFiles) {
@@ -177,9 +176,9 @@ export function getTranspilationResult({
177176
.forEach(processSourceFile);
178177
}
179178

180-
programOptions.noEmit = programNoEmit;
179+
options.noEmit = oldNoEmit;
181180

182-
if (noEmit || (noEmitOnError && diagnostics.length > 0)) {
181+
if (options.noEmit || (options.noEmitOnError && diagnostics.length > 0)) {
183182
transpiledFiles.clear();
184183
}
185184

src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ export function transpileFiles(
2121
const program = ts.createProgram(rootNames, options);
2222
const { transpiledFiles, diagnostics: transpileDiagnostics } = getTranspilationResult({
2323
program,
24-
options,
2524
});
2625

2726
const diagnostics = ts.sortAndDeduplicateDiagnostics([
@@ -94,7 +93,7 @@ export function transpileVirtualProject(
9493
options: CompilerOptions = {}
9594
): TranspilationResult {
9695
const program = createVirtualProgram(files, options);
97-
const result = getTranspilationResult({ program, options });
96+
const result = getTranspilationResult({ program });
9897
const diagnostics = ts.sortAndDeduplicateDiagnostics([
9998
...ts.getPreEmitDiagnostics(program),
10099
...result.diagnostics,

src/tstl.ts

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@ function performCompilation(
149149

150150
const { transpiledFiles, diagnostics: transpileDiagnostics } = tstl.getTranspilationResult({
151151
program,
152-
options,
153152
});
154153

155154
const diagnostics = ts.sortAndDeduplicateDiagnostics([
@@ -205,30 +204,22 @@ function createWatchOfFilesAndCompilerOptions(
205204
ts.createWatchProgram(watchCompilerHost);
206205
}
207206

208-
interface ConfigFileSnapshot {
209-
options: tstl.CompilerOptions;
210-
configFileParsingDiagnostics: ts.Diagnostic[];
211-
}
212-
213207
function updateWatchCompilationHost(
214208
host: ts.WatchCompilerHost<ts.SemanticDiagnosticsBuilderProgram>,
215209
optionsToExtend: tstl.CompilerOptions
216210
): void {
217211
let fullRecompile = true;
218-
const configFileMap = new WeakMap<ts.TsConfigSourceFile, ConfigFileSnapshot>();
212+
const configFileMap = new WeakMap<ts.TsConfigSourceFile, ts.ParsedCommandLine>();
219213

220214
host.afterProgramCreate = builderProgram => {
221215
const program = builderProgram.getProgram();
222-
const compilerOptions = builderProgram.getCompilerOptions();
216+
const options = builderProgram.getCompilerOptions();
223217

224-
let options = optionsToExtend;
225218
let configFileParsingDiagnostics: ts.Diagnostic[] = [];
226-
const configFile = compilerOptions.configFile as ts.TsConfigSourceFile | undefined;
227-
const configFilePath = compilerOptions.configFilePath as string | undefined;
219+
const configFile = options.configFile as ts.TsConfigSourceFile | undefined;
220+
const configFilePath = options.configFilePath as string | undefined;
228221
if (configFile && configFilePath) {
229-
if (configFileMap.has(configFile)) {
230-
({ options, configFileParsingDiagnostics } = configFileMap.get(configFile)!);
231-
} else {
222+
if (!configFileMap.has(configFile)) {
232223
const parsedConfigFile = CommandLineParser.updateParsedConfigFile(
233224
ts.parseJsonSourceFileConfigFileContent(
234225
configFile,
@@ -239,9 +230,12 @@ function updateWatchCompilationHost(
239230
)
240231
);
241232

242-
({ options, errors: configFileParsingDiagnostics } = parsedConfigFile);
243-
configFileMap.set(configFile, { options, configFileParsingDiagnostics });
233+
configFileMap.set(configFile, parsedConfigFile);
244234
}
235+
236+
const parsedConfigFile = configFileMap.get(configFile)!;
237+
Object.assign(options, parsedConfigFile.options);
238+
configFileParsingDiagnostics = parsedConfigFile.errors;
245239
}
246240

247241
let sourceFiles: ts.SourceFile[] | undefined;
@@ -261,7 +255,6 @@ function updateWatchCompilationHost(
261255

262256
const { diagnostics: emitDiagnostics, transpiledFiles } = tstl.getTranspilationResult({
263257
program,
264-
options,
265258
sourceFiles,
266259
});
267260

@@ -286,7 +279,7 @@ function updateWatchCompilationHost(
286279
host.onWatchStatusChange!(
287280
cliDiagnostics.watchErrorSummary(errors.length),
288281
host.getNewLine(),
289-
compilerOptions
282+
options
290283
);
291284
};
292285
}

test/transpile/run.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ export function buildVirtualProject(
1818
const program = ts.createProgram({ rootNames, options });
1919
const { transpiledFiles, diagnostics: transpileDiagnostics } = tstl.getTranspilationResult({
2020
program,
21-
options,
2221
});
2322

2423
const diagnostics = ts.sortAndDeduplicateDiagnostics([

0 commit comments

Comments
 (0)