diff options
Diffstat (limited to 'lib/compilers')
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; |