aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers')
-rw-r--r--lib/compilers/ada.ts4
-rw-r--r--lib/compilers/analysis-tool.ts15
-rw-r--r--lib/compilers/assembly.ts4
-rw-r--r--lib/compilers/avrgcc6502.ts4
-rw-r--r--lib/compilers/beebasm.ts4
-rw-r--r--lib/compilers/carbon.ts4
-rw-r--r--lib/compilers/cc65.ts4
-rw-r--r--lib/compilers/circt.ts35
-rw-r--r--lib/compilers/cl430.ts4
-rw-r--r--lib/compilers/clang.ts10
-rw-r--r--lib/compilers/clangcl.ts7
-rw-r--r--lib/compilers/clean.ts4
-rw-r--r--lib/compilers/clspv.ts4
-rw-r--r--lib/compilers/cppfront.ts4
-rw-r--r--lib/compilers/crystal.ts4
-rw-r--r--lib/compilers/dart.ts4
-rw-r--r--lib/compilers/dmd.ts4
-rw-r--r--lib/compilers/dosbox-compiler.ts4
-rw-r--r--lib/compilers/dotnet.ts4
-rw-r--r--lib/compilers/ewarm.ts4
-rw-r--r--lib/compilers/ewavr.ts4
-rw-r--r--lib/compilers/golang.ts4
-rw-r--r--lib/compilers/haskell.ts4
-rw-r--r--lib/compilers/hook.ts4
-rw-r--r--lib/compilers/ispc.ts7
-rw-r--r--lib/compilers/jakt.ts4
-rw-r--r--lib/compilers/java.ts17
-rw-r--r--lib/compilers/julia.ts4
-rw-r--r--lib/compilers/kotlin.ts4
-rw-r--r--lib/compilers/ldc.ts4
-rw-r--r--lib/compilers/llc.ts4
-rw-r--r--lib/compilers/llvm-mos.ts4
-rw-r--r--lib/compilers/mlir.ts35
-rw-r--r--lib/compilers/nim.ts4
-rw-r--r--lib/compilers/nvcc.ts4
-rw-r--r--lib/compilers/ocaml.ts4
-rw-r--r--lib/compilers/opt.ts4
-rw-r--r--lib/compilers/pascal-win.ts4
-rw-r--r--lib/compilers/pascal.ts4
-rw-r--r--lib/compilers/pony.ts5
-rw-r--r--lib/compilers/ptxas.ts4
-rw-r--r--lib/compilers/python.ts4
-rw-r--r--lib/compilers/racket.ts17
-rw-r--r--lib/compilers/ruby.ts4
-rw-r--r--lib/compilers/rust.ts4
-rw-r--r--lib/compilers/rustc-cg-gcc.ts4
-rw-r--r--lib/compilers/scala.ts4
-rw-r--r--lib/compilers/spirv.ts7
-rw-r--r--lib/compilers/toit.ts4
-rw-r--r--lib/compilers/typescript-native.ts4
-rw-r--r--lib/compilers/win32-vc.ts4
-rw-r--r--lib/compilers/win32-vc6.ts4
-rw-r--r--lib/compilers/win32.ts7
-rw-r--r--lib/compilers/wine-vc.ts4
-rw-r--r--lib/compilers/wsl-vc.ts4
-rw-r--r--lib/compilers/z88dk.ts4
-rw-r--r--lib/compilers/zig.ts4
57 files changed, 185 insertions, 161 deletions
diff --git a/lib/compilers/ada.ts b/lib/compilers/ada.ts
index 13644a06b..25c14dbdb 100644
--- a/lib/compilers/ada.ts
+++ b/lib/compilers/ada.ts
@@ -25,7 +25,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import * as utils from '../utils';
@@ -35,7 +35,7 @@ export class AdaCompiler extends BaseCompiler {
return 'ada';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsGccDump = true;
this.compiler.removeEmptyGccDump = true;
diff --git a/lib/compilers/analysis-tool.ts b/lib/compilers/analysis-tool.ts
index dba1ff037..5b089aa74 100644
--- a/lib/compilers/analysis-tool.ts
+++ b/lib/compilers/analysis-tool.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {BaseCompiler} from '../base-compiler';
// Plain compiler, which just runs the tool and returns whatever the output was
@@ -31,10 +31,15 @@ export class AnalysisTool extends BaseCompiler {
return 'analysis-tool';
}
- constructor(info: CompilerInfo, env) {
- // Default is to disable all "cosmetic" filters
- if (!info.disabledFilters) info.disabledFilters = ['labels', 'directives', 'commentOnly', 'trim'];
- super(info, env);
+ constructor(info: PreliminaryCompilerInfo, env) {
+ super(
+ {
+ // Default is to disable all "cosmetic" filters
+ disabledFilters: ['labels', 'directives', 'commentOnly', 'trim'],
+ ...info,
+ },
+ env,
+ );
}
override getDefaultFilters() {
diff --git a/lib/compilers/assembly.ts b/lib/compilers/assembly.ts
index b58365e73..ca39c233c 100644
--- a/lib/compilers/assembly.ts
+++ b/lib/compilers/assembly.ts
@@ -28,7 +28,7 @@ import path from 'path';
import _ from 'underscore';
import {BuildResult} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {AsmRaw} from '../parsers/asm-raw';
@@ -41,7 +41,7 @@ export class AssemblyCompiler extends BaseCompiler {
return 'assembly';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new AsmRaw();
}
diff --git a/lib/compilers/avrgcc6502.ts b/lib/compilers/avrgcc6502.ts
index 8734feee5..ab526c38e 100644
--- a/lib/compilers/avrgcc6502.ts
+++ b/lib/compilers/avrgcc6502.ts
@@ -25,7 +25,7 @@
import path from 'path';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -38,7 +38,7 @@ export class AvrGcc6502Compiler extends BaseCompiler {
return 'avrgcc6502';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.avrgccpath = this.compilerProps<string>(`compiler.${this.compiler.id}.avrgccpath`);
diff --git a/lib/compilers/beebasm.ts b/lib/compilers/beebasm.ts
index c5b77caa2..b1fe0b0db 100644
--- a/lib/compilers/beebasm.ts
+++ b/lib/compilers/beebasm.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ArtifactType} from '../../types/tool.interfaces';
import {BaseCompiler} from '../base-compiler';
import {AsmParserBeebAsm} from '../parsers/asm-parser-beebasm';
@@ -38,7 +38,7 @@ export class BeebAsmCompiler extends BaseCompiler {
return 'beebasm';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.asm = new AsmParserBeebAsm(this.compilerProps);
diff --git a/lib/compilers/carbon.ts b/lib/compilers/carbon.ts
index b53eab1db..dcc467948 100644
--- a/lib/compilers/carbon.ts
+++ b/lib/compilers/carbon.ts
@@ -24,7 +24,7 @@
import {ParsedAsmResult} from '../../types/asmresult/asmresult.interfaces';
import {CompilationResult} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {ResultLine} from '../../types/resultline/resultline.interfaces';
import {unwrap} from '../assert';
@@ -37,7 +37,7 @@ export class CarbonCompiler extends BaseCompiler {
return 'carbon';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.compiler.demangler = '';
this.demanglerClass = null;
diff --git a/lib/compilers/cc65.ts b/lib/compilers/cc65.ts
index 13543a02c..f92a7c898 100644
--- a/lib/compilers/cc65.ts
+++ b/lib/compilers/cc65.ts
@@ -28,7 +28,7 @@ import fs from 'fs-extra';
import _ from 'underscore';
import {CompilationResult} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {ArtifactType} from '../../types/tool.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -40,7 +40,7 @@ export class Cc65Compiler extends BaseCompiler {
return 'cc65';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.asm = new CC65AsmParser(this.compilerProps);
diff --git a/lib/compilers/circt.ts b/lib/compilers/circt.ts
index ed0515bde..7ae33a62b 100644
--- a/lib/compilers/circt.ts
+++ b/lib/compilers/circt.ts
@@ -24,7 +24,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -35,21 +35,24 @@ export class CIRCTCompiler extends BaseCompiler {
return 'circt';
}
- constructor(compilerInfo: CompilerInfo, env) {
- if (!compilerInfo.disabledFilters) {
- compilerInfo.disabledFilters = [
- 'binary',
- 'execute',
- 'demangle',
- 'intel',
- 'labels',
- 'libraryCode',
- 'directives',
- 'commentOnly',
- 'trim',
- ];
- }
- super(compilerInfo, env);
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
+ super(
+ {
+ disabledFilters: [
+ 'binary',
+ 'execute',
+ 'demangle',
+ 'intel',
+ 'labels',
+ 'libraryCode',
+ 'directives',
+ 'commentOnly',
+ 'trim',
+ ],
+ ...compilerInfo,
+ },
+ env,
+ );
}
override getOutputFilename(dirPath: string): string {
diff --git a/lib/compilers/cl430.ts b/lib/compilers/cl430.ts
index 19df01aa9..c65192542 100644
--- a/lib/compilers/cl430.ts
+++ b/lib/compilers/cl430.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -31,7 +31,7 @@ export class CL430Compiler extends BaseCompiler {
return 'cl430';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
// We need to have the same name for the C/C++ file as we expect for the output file
diff --git a/lib/compilers/clang.ts b/lib/compilers/clang.ts
index 6ff4ad6e1..3e142c345 100644
--- a/lib/compilers/clang.ts
+++ b/lib/compilers/clang.ts
@@ -28,7 +28,7 @@ import path from 'path';
import _ from 'underscore';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ExecutableExecutionOptions, UnprocessedExecResult} from '../../types/execution/execution.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -46,7 +46,7 @@ export class ClangCompiler extends BaseCompiler {
return 'clang';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsDeviceAsmView = true;
@@ -184,7 +184,7 @@ export class ClangCudaCompiler extends ClangCompiler {
return 'clang-cuda';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new SassAsmParser();
@@ -219,7 +219,7 @@ export class ClangHipCompiler extends ClangCompiler {
return 'clang-hip';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new AmdgpuAsmParser();
@@ -235,7 +235,7 @@ export class ClangIntelCompiler extends ClangCompiler {
return 'clang-intel';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
if (!this.offloadBundlerPath) {
diff --git a/lib/compilers/clangcl.ts b/lib/compilers/clangcl.ts
index e7224c4bc..59c6ab020 100644
--- a/lib/compilers/clangcl.ts
+++ b/lib/compilers/clangcl.ts
@@ -24,17 +24,18 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {Win32Compiler} from './win32';
+import {unwrap} from '../assert';
export class ClangCLCompiler extends Win32Compiler {
static override get key() {
return 'clang-cl';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIrView = true;
@@ -47,7 +48,7 @@ export class ClangCLCompiler extends Win32Compiler {
// These options make Clang produce an IR
const newOptions = options
.filter(option => option !== '/FA' && !option.startsWith('/Fa'))
- .concat(this.compiler.irArg);
+ .concat(unwrap(this.compiler.irArg));
const execOptions = this.getDefaultExecOptions();
// A higher max output is needed for when the user includes headers
diff --git a/lib/compilers/clean.ts b/lib/compilers/clean.ts
index e75bd245c..9178c5d81 100644
--- a/lib/compilers/clean.ts
+++ b/lib/compilers/clean.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {propsFor} from '../properties';
@@ -40,7 +40,7 @@ export class CleanCompiler extends BaseCompiler {
executionType: string;
- constructor(compiler: CompilerInfo, env) {
+ constructor(compiler: PreliminaryCompilerInfo, env) {
super(compiler, env);
const execProps = propsFor('execution');
this.executionType = execProps('executionType', 'none');
diff --git a/lib/compilers/clspv.ts b/lib/compilers/clspv.ts
index 7b1281014..58862ec6c 100644
--- a/lib/compilers/clspv.ts
+++ b/lib/compilers/clspv.ts
@@ -27,7 +27,7 @@ import path from 'path';
import _ from 'underscore';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {logger} from '../logger';
@@ -41,7 +41,7 @@ export class CLSPVCompiler extends BaseCompiler {
return 'clspv';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.asm = new SPIRVAsmParser(this.compilerProps);
diff --git a/lib/compilers/cppfront.ts b/lib/compilers/cppfront.ts
index 9e0773845..b6b3df7e9 100644
--- a/lib/compilers/cppfront.ts
+++ b/lib/compilers/cppfront.ts
@@ -24,7 +24,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {AsmParserCpp} from '../parsers/asm-parser-cpp';
@@ -34,7 +34,7 @@ export class CppFrontCompiler extends BaseCompiler {
return 'cppfront';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new AsmParserCpp();
diff --git a/lib/compilers/crystal.ts b/lib/compilers/crystal.ts
index eabec3efd..54ec0e170 100644
--- a/lib/compilers/crystal.ts
+++ b/lib/compilers/crystal.ts
@@ -26,7 +26,7 @@ import path from 'path';
import _ from 'underscore';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {unwrap} from '../assert';
import {BaseCompiler} from '../base-compiler';
@@ -41,7 +41,7 @@ export class CrystalCompiler extends BaseCompiler {
ccPath: string;
- constructor(compiler: CompilerInfo, env) {
+ constructor(compiler: PreliminaryCompilerInfo, env) {
super(compiler, env);
this.asm = new CrystalAsmParser();
this.compiler.supportsIrView = true;
diff --git a/lib/compilers/dart.ts b/lib/compilers/dart.ts
index 77bb6e350..b06bf7368 100644
--- a/lib/compilers/dart.ts
+++ b/lib/compilers/dart.ts
@@ -24,7 +24,7 @@
import Semver from 'semver';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {DartAsmParser} from '../parsers/asm-parser-dart';
@@ -33,7 +33,7 @@ import * as utils from '../utils';
import {BaseParser} from './argument-parsers';
export class DartCompiler extends BaseCompiler {
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new DartAsmParser();
}
diff --git a/lib/compilers/dmd.ts b/lib/compilers/dmd.ts
index 5e6950acf..8a78f9028 100644
--- a/lib/compilers/dmd.ts
+++ b/lib/compilers/dmd.ts
@@ -24,7 +24,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -35,7 +35,7 @@ export class DMDCompiler extends BaseCompiler {
return 'dmd';
}
- constructor(compiler: CompilerInfo, env) {
+ constructor(compiler: PreliminaryCompilerInfo, env) {
super(compiler, env);
this.compiler.supportsIntel = true;
}
diff --git a/lib/compilers/dosbox-compiler.ts b/lib/compilers/dosbox-compiler.ts
index b0719b831..82fa9d795 100644
--- a/lib/compilers/dosbox-compiler.ts
+++ b/lib/compilers/dosbox-compiler.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {BaseCompiler} from '../base-compiler';
import * as exec from '../exec';
import {logger} from '../logger';
@@ -37,7 +37,7 @@ export class DosboxCompiler extends BaseCompiler {
private readonly dosbox: string;
private readonly root: string;
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.dosbox = this.compilerProps<string>(`compiler.${this.compiler.id}.dosbox`);
diff --git a/lib/compilers/dotnet.ts b/lib/compilers/dotnet.ts
index 994fee5d5..5f154fe03 100644
--- a/lib/compilers/dotnet.ts
+++ b/lib/compilers/dotnet.ts
@@ -28,7 +28,7 @@ import fs from 'fs-extra';
import _ from 'underscore';
import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {
BasicExecutionResult,
ExecutableExecutionOptions,
@@ -51,7 +51,7 @@ class DotNetCompiler extends BaseCompiler {
private crossgen2VersionString: string;
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.sdkBaseDir = path.join(path.dirname(compilerInfo.exe), 'sdk');
diff --git a/lib/compilers/ewarm.ts b/lib/compilers/ewarm.ts
index 544f07582..bbda54252 100644
--- a/lib/compilers/ewarm.ts
+++ b/lib/compilers/ewarm.ts
@@ -24,7 +24,7 @@
import temp from 'temp';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {AsmEWAVRParser} from '../parsers/asm-parser-ewavr';
@@ -34,7 +34,7 @@ export class EWARMCompiler extends BaseCompiler {
return 'ewarm';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new AsmEWAVRParser(this.compilerProps);
}
diff --git a/lib/compilers/ewavr.ts b/lib/compilers/ewavr.ts
index 8057536e1..aff1840a2 100644
--- a/lib/compilers/ewavr.ts
+++ b/lib/compilers/ewavr.ts
@@ -24,7 +24,7 @@
import temp from 'temp';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {AsmEWAVRParser} from '../parsers/asm-parser-ewavr';
@@ -34,7 +34,7 @@ export class EWAVRCompiler extends BaseCompiler {
return 'ewavr';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
info.supportsDemangle = false;
info.supportsLibraryCodeFilter = false;
super(info, env);
diff --git a/lib/compilers/golang.ts b/lib/compilers/golang.ts
index 7db2d87e2..2b41483c6 100644
--- a/lib/compilers/golang.ts
+++ b/lib/compilers/golang.ts
@@ -24,7 +24,7 @@
import _ from 'underscore';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {ResultLine} from '../../types/resultline/resultline.interfaces';
import {unwrap} from '../assert';
@@ -58,7 +58,7 @@ export class GolangCompiler extends BaseCompiler {
return 'golang';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
const goroot = this.compilerProps<string | undefined>(`compiler.${this.compiler.id}.goroot`);
const goarch = this.compilerProps<string | undefined>(`compiler.${this.compiler.id}.goarch`);
diff --git a/lib/compilers/haskell.ts b/lib/compilers/haskell.ts
index c4cf6003e..7b20f2df4 100644
--- a/lib/compilers/haskell.ts
+++ b/lib/compilers/haskell.ts
@@ -24,7 +24,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -35,7 +35,7 @@ export class HaskellCompiler extends BaseCompiler {
return 'haskell';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsHaskellCoreView = true;
this.compiler.supportsHaskellStgView = true;
diff --git a/lib/compilers/hook.ts b/lib/compilers/hook.ts
index 2a4b5c8aa..a97239863 100644
--- a/lib/compilers/hook.ts
+++ b/lib/compilers/hook.ts
@@ -25,7 +25,7 @@
import path from 'path';
import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ExecutableExecutionOptions} from '../../types/execution/execution.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -34,7 +34,7 @@ import {CompilationEnvironment} from '../compilation-env';
export class HookCompiler extends BaseCompiler {
private readonly hook_home: string;
- constructor(compilerInfo: CompilerInfo & Record<string, any>, env: CompilationEnvironment) {
+ constructor(compilerInfo: PreliminaryCompilerInfo & Record<string, any>, env: CompilationEnvironment) {
super(compilerInfo, env);
this.hook_home = path.resolve(path.join(path.dirname(this.compiler.exe), '..'));
}
diff --git a/lib/compilers/ispc.ts b/lib/compilers/ispc.ts
index d6eb03824..7c5717e0f 100644
--- a/lib/compilers/ispc.ts
+++ b/lib/compilers/ispc.ts
@@ -25,19 +25,20 @@
import Semver from 'semver';
import _ from 'underscore';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {asSafeVer} from '../utils';
import {ISPCParser} from './argument-parsers';
+import {unwrap} from '../assert';
export class ISPCCompiler extends BaseCompiler {
static get key() {
return 'ispc';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIrView = true;
this.compiler.irArg = ['--emit-llvm-text'];
@@ -56,7 +57,7 @@ export class ISPCCompiler extends BaseCompiler {
}
override async generateIR(inputFilename: string, options: string[], filters: ParseFiltersAndOutputOptions) {
- const newOptions = [...options, ...this.compiler.irArg, '-o', this.getIrOutputFilename(inputFilename)];
+ const newOptions = [...options, ...unwrap(this.compiler.irArg), '-o', this.getIrOutputFilename(inputFilename)];
return super.generateIR(inputFilename, newOptions, filters);
}
diff --git a/lib/compilers/jakt.ts b/lib/compilers/jakt.ts
index d480dea88..0b4f95895 100644
--- a/lib/compilers/jakt.ts
+++ b/lib/compilers/jakt.ts
@@ -25,7 +25,7 @@
import path from 'path';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -34,7 +34,7 @@ export class JaktCompiler extends BaseCompiler {
return 'jakt';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.outputFilebase = 'example';
diff --git a/lib/compilers/java.ts b/lib/compilers/java.ts
index 8f2a3e91a..cf665646e 100644
--- a/lib/compilers/java.ts
+++ b/lib/compilers/java.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import {ParsedAsmResult, ParsedAsmResultLine} from '../../types/asmresult/asmresult.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {unwrap} from '../assert';
import {BaseCompiler} from '../base-compiler';
@@ -44,12 +44,15 @@ export class JavaCompiler extends BaseCompiler {
javaRuntime: string;
mainRegex: RegExp;
- constructor(compilerInfo: CompilerInfo, env) {
- // Default is to disable all "cosmetic" filters
- if (!compilerInfo.disabledFilters) {
- compilerInfo.disabledFilters = ['labels', 'directives', 'commentOnly', 'trim'];
- }
- super(compilerInfo, env);
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
+ super(
+ {
+ // Default is to disable all "cosmetic" filters
+ disabledFilters: ['labels', 'directives', 'commentOnly', 'trim'],
+ ...compilerInfo,
+ },
+ env,
+ );
this.javaRuntime = this.compilerProps<string>(`compiler.${this.compiler.id}.runtime`);
this.mainRegex = /public static ?(.*?) void main\(java\.lang\.String\[]\)/;
}
diff --git a/lib/compilers/julia.ts b/lib/compilers/julia.ts
index 86b042362..82a9318df 100644
--- a/lib/compilers/julia.ts
+++ b/lib/compilers/julia.ts
@@ -26,7 +26,7 @@ import path from 'path';
import {ParsedAsmResultLine} from '../../types/asmresult/asmresult.interfaces';
import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import * as utils from '../utils';
@@ -40,7 +40,7 @@ export class JuliaCompiler extends BaseCompiler {
return 'julia';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.demangler = '';
this.demanglerClass = null;
diff --git a/lib/compilers/kotlin.ts b/lib/compilers/kotlin.ts
index 1a9adc258..dfc115b12 100644
--- a/lib/compilers/kotlin.ts
+++ b/lib/compilers/kotlin.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {KotlinParser} from './argument-parsers';
@@ -35,7 +35,7 @@ export class KotlinCompiler extends JavaCompiler {
javaHome: string;
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.javaHome = this.compilerProps<string>(`compiler.${this.compiler.id}.java_home`);
}
diff --git a/lib/compilers/ldc.ts b/lib/compilers/ldc.ts
index ff587d003..826d61639 100644
--- a/lib/compilers/ldc.ts
+++ b/lib/compilers/ldc.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import semverParser from 'semver';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {BaseCompiler} from '../base-compiler';
import {logger} from '../logger';
@@ -40,7 +40,7 @@ export class LDCCompiler extends BaseCompiler {
asanSymbolizerPath: string;
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIntel = true;
this.compiler.supportsIrView = true;
diff --git a/lib/compilers/llc.ts b/lib/compilers/llc.ts
index 5a79bca49..6b2f50440 100644
--- a/lib/compilers/llc.ts
+++ b/lib/compilers/llc.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -33,7 +33,7 @@ export class LLCCompiler extends BaseCompiler {
return 'llc';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIntel = true;
this.compiler.supportsLLVMOptPipelineView = true;
diff --git a/lib/compilers/llvm-mos.ts b/lib/compilers/llvm-mos.ts
index 8fded073e..10f6f877f 100644
--- a/lib/compilers/llvm-mos.ts
+++ b/lib/compilers/llvm-mos.ts
@@ -27,7 +27,7 @@ import path from 'path';
import _ from 'underscore';
import {CompilationResult} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {ArtifactType} from '../../types/tool.interfaces';
import * as utils from '../utils';
@@ -39,7 +39,7 @@ export class LLVMMOSCompiler extends ClangCompiler {
return 'llvmmos';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.externalparser = null;
this.toolchainPath = path.normalize(path.join(path.dirname(this.compiler.exe), '..'));
diff --git a/lib/compilers/mlir.ts b/lib/compilers/mlir.ts
index 3cd9ea1f4..a065cebc0 100644
--- a/lib/compilers/mlir.ts
+++ b/lib/compilers/mlir.ts
@@ -24,7 +24,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -35,21 +35,24 @@ export class MLIRCompiler extends BaseCompiler {
return 'mlir';
}
- constructor(compilerInfo: CompilerInfo, env) {
- if (!compilerInfo.disabledFilters) {
- compilerInfo.disabledFilters = [
- 'binary',
- 'execute',
- 'demangle',
- 'intel',
- 'labels',
- 'libraryCode',
- 'directives',
- 'commentOnly',
- 'trim',
- ];
- }
- super(compilerInfo, env);
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
+ super(
+ {
+ disabledFilters: [
+ 'binary',
+ 'execute',
+ 'demangle',
+ 'intel',
+ 'labels',
+ 'libraryCode',
+ 'directives',
+ 'commentOnly',
+ 'trim',
+ ],
+ ...compilerInfo,
+ },
+ env,
+ );
}
override getCompilerResultLanguageId() {
diff --git a/lib/compilers/nim.ts b/lib/compilers/nim.ts
index 6c1df68f7..81482a163 100644
--- a/lib/compilers/nim.ts
+++ b/lib/compilers/nim.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import _ from 'underscore';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {unwrap} from '../assert';
import {BaseCompiler} from '../base-compiler';
@@ -41,7 +41,7 @@ export class NimCompiler extends BaseCompiler {
return 'nim';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIntel = true;
}
diff --git a/lib/compilers/nvcc.ts b/lib/compilers/nvcc.ts
index 00dcc7c0a..61182eb63 100644
--- a/lib/compilers/nvcc.ts
+++ b/lib/compilers/nvcc.ts
@@ -28,7 +28,7 @@ import Path from 'path';
import Semver from 'semver';
import {CompilationInfo} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {unwrap} from '../assert';
import {BaseCompiler} from '../base-compiler';
@@ -44,7 +44,7 @@ export class NvccCompiler extends BaseCompiler {
deviceAsmParser: SassAsmParser;
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsOptOutput = true;
this.compiler.supportsDeviceAsmView = true;
diff --git a/lib/compilers/ocaml.ts b/lib/compilers/ocaml.ts
index 6635760ed..13803ba5b 100644
--- a/lib/compilers/ocaml.ts
+++ b/lib/compilers/ocaml.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -33,7 +33,7 @@ export class OCamlCompiler extends BaseCompiler {
return 'ocaml';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
// override output base because ocaml's -S -o has different semantics.
// namely, it outputs a full binary exe to the supposed asm dump.
diff --git a/lib/compilers/opt.ts b/lib/compilers/opt.ts
index 459e3502f..a422c9138 100644
--- a/lib/compilers/opt.ts
+++ b/lib/compilers/opt.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -33,7 +33,7 @@ export class OptCompiler extends BaseCompiler {
return 'opt';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsLLVMOptPipelineView = true;
this.compiler.llvmOptArg = ['-print-after-all', '-print-before-all'];
diff --git a/lib/compilers/pascal-win.ts b/lib/compilers/pascal-win.ts
index 3d4ef81eb..9f67f5988 100644
--- a/lib/compilers/pascal-win.ts
+++ b/lib/compilers/pascal-win.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {unwrap} from '../assert';
import {BaseCompiler} from '../base-compiler';
@@ -46,7 +46,7 @@ export class PascalWinCompiler extends BaseCompiler {
dprFilename: string;
pasUtils: PascalUtils;
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
info.supportsFiltersInBinary = true;
diff --git a/lib/compilers/pascal.ts b/lib/compilers/pascal.ts
index 9e2418dc6..2527ed019 100644
--- a/lib/compilers/pascal.ts
+++ b/lib/compilers/pascal.ts
@@ -28,7 +28,7 @@ import fs from 'fs-extra';
import _ from 'underscore';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {unwrap} from '../assert';
import {BaseCompiler} from '../base-compiler';
@@ -48,7 +48,7 @@ export class FPCCompiler extends BaseCompiler {
pasUtils: PascalUtils;
demangler: any | null = null;
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compileFilename = 'output.pas';
diff --git a/lib/compilers/pony.ts b/lib/compilers/pony.ts
index 5435b1f03..2577f2064 100644
--- a/lib/compilers/pony.ts
+++ b/lib/compilers/pony.ts
@@ -29,6 +29,7 @@ import _ from 'underscore';
import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
+import {unwrap} from '../assert';
export class PonyCompiler extends BaseCompiler {
static get key() {
@@ -62,7 +63,9 @@ export class PonyCompiler extends BaseCompiler {
}
override async generateIR(inputFilename: string, options: string[], filters: ParseFiltersAndOutputOptions) {
- const newOptions = _.filter(options, option => !['--pass', 'asm'].includes(option)).concat(this.compiler.irArg);
+ const newOptions = _.filter(options, option => !['--pass', 'asm'].includes(option)).concat(
+ unwrap(this.compiler.irArg),
+ );
const execOptions = this.getDefaultExecOptions();
// A higher max output is needed for when the user includes headers
diff --git a/lib/compilers/ptxas.ts b/lib/compilers/ptxas.ts
index 36aad0252..794df92e9 100644
--- a/lib/compilers/ptxas.ts
+++ b/lib/compilers/ptxas.ts
@@ -25,7 +25,7 @@
import path from 'path';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {ResultLine} from '../../types/resultline/resultline.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -39,7 +39,7 @@ export class PtxAssembler extends BaseCompiler {
return 'ptxas';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compileFilename = 'example.ptxas';
this.asm = new SassAsmParser();
diff --git a/lib/compilers/python.ts b/lib/compilers/python.ts
index ebfca451f..f7063ce12 100644
--- a/lib/compilers/python.ts
+++ b/lib/compilers/python.ts
@@ -23,7 +23,7 @@
// POSSIBILITY OF SUCH DAMAGE.
import {AsmResultSource, ParsedAsmResultLine} from '../../types/asmresult/asmresult.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {resolvePathFromAppRoot} from '../utils';
@@ -37,7 +37,7 @@ export class PythonCompiler extends BaseCompiler {
return 'python';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.compiler.demangler = '';
this.demanglerClass = null;
diff --git a/lib/compilers/racket.ts b/lib/compilers/racket.ts
index 6ef9c8ad5..016e9f734 100644
--- a/lib/compilers/racket.ts
+++ b/lib/compilers/racket.ts
@@ -25,7 +25,7 @@
import path from 'path';
import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {logger} from '../logger';
@@ -37,12 +37,15 @@ export class RacketCompiler extends BaseCompiler {
return 'racket';
}
- constructor(info: CompilerInfo, env) {
- // Disable output filters, as they currently don't do anything
- if (!info.disabledFilters) {
- info.disabledFilters = ['labels', 'directives', 'commentOnly', 'trim'];
- }
- super(info, env);
+ constructor(info: PreliminaryCompilerInfo, env) {
+ super(
+ {
+ // Disable output filters, as they currently don't do anything
+ disabledFilters: ['labels', 'directives', 'commentOnly', 'trim'],
+ ...info,
+ },
+ env,
+ );
this.raco = this.compilerProps<string>(`compiler.${this.compiler.id}.raco`);
}
diff --git a/lib/compilers/ruby.ts b/lib/compilers/ruby.ts
index 99f549318..127f8864e 100644
--- a/lib/compilers/ruby.ts
+++ b/lib/compilers/ruby.ts
@@ -24,7 +24,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {resolvePathFromAppRoot} from '../utils';
@@ -38,7 +38,7 @@ export class RubyCompiler extends BaseCompiler {
return 'ruby';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.disasmScriptPath =
this.compilerProps('disasmScript') || resolvePathFromAppRoot('etc', 'scripts', 'disasms', 'disasm.rb');
diff --git a/lib/compilers/rust.ts b/lib/compilers/rust.ts
index 1507fcc40..312445aca 100644
--- a/lib/compilers/rust.ts
+++ b/lib/compilers/rust.ts
@@ -26,7 +26,7 @@ import path from 'path';
import _ from 'underscore';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {BasicExecutionResult, UnprocessedExecResult} from '../../types/execution/execution.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {unwrap} from '../assert';
@@ -43,7 +43,7 @@ export class RustCompiler extends BaseCompiler {
return 'rust';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIntel = true;
this.compiler.supportsIrView = true;
diff --git a/lib/compilers/rustc-cg-gcc.ts b/lib/compilers/rustc-cg-gcc.ts
index 6c01408d7..1e1d13791 100644
--- a/lib/compilers/rustc-cg-gcc.ts
+++ b/lib/compilers/rustc-cg-gcc.ts
@@ -24,7 +24,7 @@
import path from 'path';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {RustCompiler} from './rust';
@@ -34,7 +34,7 @@ export class RustcCgGCCCompiler extends RustCompiler {
return 'rustc-cg-gcc';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIrView = false;
diff --git a/lib/compilers/scala.ts b/lib/compilers/scala.ts
index ce2ac3b29..2f8ef01e8 100644
--- a/lib/compilers/scala.ts
+++ b/lib/compilers/scala.ts
@@ -24,7 +24,7 @@
import Semver from 'semver';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {asSafeVer} from '../utils';
@@ -38,7 +38,7 @@ export class ScalaCompiler extends JavaCompiler {
javaHome: string;
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.javaHome = this.compilerProps<string>(`compiler.${this.compiler.id}.java_home`);
}
diff --git a/lib/compilers/spirv.ts b/lib/compilers/spirv.ts
index 24d0f946b..3e6add91c 100644
--- a/lib/compilers/spirv.ts
+++ b/lib/compilers/spirv.ts
@@ -27,12 +27,13 @@ import path from 'path';
import _ from 'underscore';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {logger} from '../logger';
import {SPIRVAsmParser} from '../parsers/asm-parser-spirv';
import * as utils from '../utils';
+import {unwrap} from '../assert';
export class SPIRVCompiler extends BaseCompiler {
protected translatorPath: string;
@@ -42,7 +43,7 @@ export class SPIRVCompiler extends BaseCompiler {
return 'spirv';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.asm = new SPIRVAsmParser(this.compilerProps);
@@ -72,7 +73,7 @@ export class SPIRVCompiler extends BaseCompiler {
}
if (this.compiler.supportsOptOutput && backendOptions.produceOptInfo) {
- options = options.concat(this.compiler.optArg);
+ options = options.concat(unwrap(this.compiler.optArg));
}
const libIncludes = this.getIncludeArguments(libraries);
diff --git a/lib/compilers/toit.ts b/lib/compilers/toit.ts
index 258f4e500..3fac046b4 100644
--- a/lib/compilers/toit.ts
+++ b/lib/compilers/toit.ts
@@ -24,7 +24,7 @@
import _ from 'underscore';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -35,7 +35,7 @@ export class ToitCompiler extends BaseCompiler {
return 'toit';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIntel = true;
}
diff --git a/lib/compilers/typescript-native.ts b/lib/compilers/typescript-native.ts
index 4debc288c..95e687b05 100644
--- a/lib/compilers/typescript-native.ts
+++ b/lib/compilers/typescript-native.ts
@@ -23,7 +23,7 @@
// POSSIBILITY OF SUCH DAMAGE.
import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -37,7 +37,7 @@ export class TypeScriptNativeCompiler extends BaseCompiler {
tscJit: string;
tscSharedLib: string;
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.compiler.supportsIntel = false;
diff --git a/lib/compilers/win32-vc.ts b/lib/compilers/win32-vc.ts
index be16a2875..aab20b1fe 100644
--- a/lib/compilers/win32-vc.ts
+++ b/lib/compilers/win32-vc.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {VcAsmParser} from '../parsers/asm-parser-vc';
import {VCParser} from './argument-parsers';
@@ -33,7 +33,7 @@ export class Win32VcCompiler extends Win32Compiler {
return 'win32-vc';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new VcAsmParser(this.compilerProps);
}
diff --git a/lib/compilers/win32-vc6.ts b/lib/compilers/win32-vc6.ts
index 1f07c7aeb..c4b13d7c8 100644
--- a/lib/compilers/win32-vc6.ts
+++ b/lib/compilers/win32-vc6.ts
@@ -22,7 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {Vc6AsmParser} from '../parsers/asm-parser-vc6';
import {VCParser} from './argument-parsers';
@@ -33,7 +33,7 @@ export class Win32Vc6Compiler extends Win32Compiler {
return 'win32-vc6';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new Vc6AsmParser(this.compilerProps);
}
diff --git a/lib/compilers/win32.ts b/lib/compilers/win32.ts
index 42bf2f67a..28a448e6a 100644
--- a/lib/compilers/win32.ts
+++ b/lib/compilers/win32.ts
@@ -28,13 +28,14 @@ import temp from 'temp';
import _ from 'underscore';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {MapFileReaderVS} from '../mapfiles/map-file-vs';
import {AsmParser} from '../parsers/asm-parser';
import {PELabelReconstructor} from '../pe32-support';
import * as utils from '../utils';
+import {unwrap} from '../assert';
export class Win32Compiler extends BaseCompiler {
static get key() {
@@ -43,7 +44,7 @@ export class Win32Compiler extends BaseCompiler {
binaryAsmParser: AsmParser;
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.binaryAsmParser = new AsmParser(this.compilerProps);
@@ -106,7 +107,7 @@ export class Win32Compiler extends BaseCompiler {
}
if (this.compiler.supportsOptOutput && backendOptions.produceOptInfo) {
- options = options.concat(this.compiler.optArg);
+ options = options.concat(unwrap(this.compiler.optArg));
}
const libIncludes = this.getIncludeArguments(libraries);
diff --git a/lib/compilers/wine-vc.ts b/lib/compilers/wine-vc.ts
index 6623a6bd7..c55712bb7 100644
--- a/lib/compilers/wine-vc.ts
+++ b/lib/compilers/wine-vc.ts
@@ -25,7 +25,7 @@
import path from 'path';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
import {MapFileReaderVS} from '../mapfiles/map-file-vs';
@@ -39,7 +39,7 @@ export class WineVcCompiler extends BaseCompiler {
return 'wine-vc';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
info.supportsFiltersInBinary = true;
super(info, env);
this.asm = new VcAsmParser();
diff --git a/lib/compilers/wsl-vc.ts b/lib/compilers/wsl-vc.ts
index 2ef9a7462..232a8e99a 100644
--- a/lib/compilers/wsl-vc.ts
+++ b/lib/compilers/wsl-vc.ts
@@ -30,7 +30,7 @@ import path from 'path';
import temp from 'temp';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {unwrap} from '../assert';
import {VcAsmParser} from '../parsers/asm-parser-vc';
@@ -41,7 +41,7 @@ export class WslVcCompiler extends Win32VcCompiler {
return 'wsl-vc';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.asm = new VcAsmParser();
}
diff --git a/lib/compilers/z88dk.ts b/lib/compilers/z88dk.ts
index 045919381..d08331713 100644
--- a/lib/compilers/z88dk.ts
+++ b/lib/compilers/z88dk.ts
@@ -27,7 +27,7 @@ import path from 'path';
import fs from 'fs-extra';
import {ExecutionOptions} from '../../types/compilation/compilation.interfaces';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {ArtifactType} from '../../types/tool.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -40,7 +40,7 @@ export class z88dkCompiler extends BaseCompiler {
return 'z88dk';
}
- constructor(compilerInfo: CompilerInfo, env) {
+ constructor(compilerInfo: PreliminaryCompilerInfo, env) {
super(compilerInfo, env);
this.outputFilebase = 'example';
this.asm = new AsmParserZ88dk(this.compilerProps);
diff --git a/lib/compilers/zig.ts b/lib/compilers/zig.ts
index abd304f5b..c12d724c7 100644
--- a/lib/compilers/zig.ts
+++ b/lib/compilers/zig.ts
@@ -27,7 +27,7 @@ import path from 'path';
import Semver from 'semver';
import _ from 'underscore';
-import {CompilerInfo} from '../../types/compiler.interfaces';
+import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -40,7 +40,7 @@ export class ZigCompiler extends BaseCompiler {
return 'zig';
}
- constructor(info: CompilerInfo, env) {
+ constructor(info: PreliminaryCompilerInfo, env) {
super(info, env);
this.compiler.supportsIntel = true;
this.compiler.supportsIrView = true;