@markw65/monkeyc-optimizer 1.1.66 → 1.1.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -1
- package/build/api.cjs +35 -35
- package/build/{chunk-UDJNFXSX.cjs → chunk-2OEXWI65.cjs} +358 -320
- package/build/{chunk-67LU4GPQ.cjs → chunk-OASVKTK5.cjs} +7 -4
- package/build/optimizer.cjs +21 -19
- package/build/sdk-util.cjs +15 -15
- package/build/src/build-config.d.ts +2 -0
- package/build/src/mc-rewrite.d.ts +1 -1
- package/build/src/optimizer.d.ts +6 -6
- package/build/src/pragma-checker.d.ts +2 -2
- package/build/src/type-flow/type-flow-util.d.ts +1 -1
- package/build/src/util.d.ts +1 -1
- package/build/util.cjs +26 -26
- package/build/worker-thread.cjs +4 -4
- package/package.json +3 -3
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_OASVKTK5_exports = {};
|
|
30
|
+
__export(chunk_OASVKTK5_exports, {
|
|
31
31
|
AwaitedError: () => AwaitedError,
|
|
32
32
|
GenericQueue: () => GenericQueue,
|
|
33
33
|
bumpLogging: () => bumpLogging,
|
|
@@ -55,7 +55,7 @@ __export(chunk_67LU4GPQ_exports, {
|
|
|
55
55
|
spawnByLine: () => spawnByLine,
|
|
56
56
|
wouldLog: () => wouldLog
|
|
57
57
|
});
|
|
58
|
-
module.exports = __toCommonJS(
|
|
58
|
+
module.exports = __toCommonJS(chunk_OASVKTK5_exports);
|
|
59
59
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
60
60
|
var child_process = __toESM(require("child_process"));
|
|
61
61
|
var fsc = __toESM(require("fs"));
|
|
@@ -5729,7 +5729,10 @@ var init_util = (0, import_chunk_ABYVSU2C.__esm)({
|
|
|
5729
5729
|
this.messagePromise = messagePromise;
|
|
5730
5730
|
}
|
|
5731
5731
|
resolve() {
|
|
5732
|
-
return this.messagePromise.then((message) =>
|
|
5732
|
+
return this.messagePromise.then((message) => {
|
|
5733
|
+
this.message = message;
|
|
5734
|
+
return this;
|
|
5735
|
+
});
|
|
5733
5736
|
}
|
|
5734
5737
|
};
|
|
5735
5738
|
}
|
package/build/optimizer.cjs
CHANGED
|
@@ -18,29 +18,30 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var optimizer_exports = {};
|
|
20
20
|
__export(optimizer_exports, {
|
|
21
|
-
StateNodeAttributes: () =>
|
|
22
|
-
buildConfigDescription: () =>
|
|
23
|
-
buildOptimizedProject: () =>
|
|
24
|
-
copyRecursiveAsNeeded: () =>
|
|
25
|
-
defaultConfig: () =>
|
|
26
|
-
display: () =>
|
|
27
|
-
generateOneConfig: () =>
|
|
28
|
-
generateOptimizedProject: () =>
|
|
29
|
-
getConfig: () =>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
21
|
+
StateNodeAttributes: () => import_chunk_2OEXWI65.StateNodeAttributes,
|
|
22
|
+
buildConfigDescription: () => import_chunk_2OEXWI65.buildConfigDescription,
|
|
23
|
+
buildOptimizedProject: () => import_chunk_2OEXWI65.buildOptimizedProject,
|
|
24
|
+
copyRecursiveAsNeeded: () => import_chunk_OASVKTK5.copyRecursiveAsNeeded,
|
|
25
|
+
defaultConfig: () => import_chunk_2OEXWI65.defaultConfig,
|
|
26
|
+
display: () => import_chunk_2OEXWI65.display,
|
|
27
|
+
generateOneConfig: () => import_chunk_2OEXWI65.generateOneConfig,
|
|
28
|
+
generateOptimizedProject: () => import_chunk_2OEXWI65.generateOptimizedProject,
|
|
29
|
+
getConfig: () => import_chunk_2OEXWI65.getConfig,
|
|
30
|
+
getFnMapAnalysis: () => import_chunk_2OEXWI65.getFnMapAnalysis,
|
|
31
|
+
getProjectAnalysis: () => import_chunk_2OEXWI65.getProjectAnalysis,
|
|
32
|
+
get_jungle: () => import_chunk_2OEXWI65.get_jungle,
|
|
33
|
+
isErrorWithLocation: () => import_chunk_2OEXWI65.isErrorWithLocation,
|
|
34
|
+
launchSimulator: () => import_chunk_2OEXWI65.launchSimulator,
|
|
35
|
+
manifestProducts: () => import_chunk_2OEXWI65.manifestProducts,
|
|
36
|
+
mctree: () => import_chunk_2OEXWI65.mctree,
|
|
37
|
+
simulateProgram: () => import_chunk_2OEXWI65.simulateProgram
|
|
37
38
|
});
|
|
38
39
|
module.exports = __toCommonJS(optimizer_exports);
|
|
39
|
-
var
|
|
40
|
-
var
|
|
40
|
+
var import_chunk_2OEXWI65 = require("./chunk-2OEXWI65.cjs");
|
|
41
|
+
var import_chunk_OASVKTK5 = require("./chunk-OASVKTK5.cjs");
|
|
41
42
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
42
43
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
43
|
-
(0,
|
|
44
|
+
(0, import_chunk_2OEXWI65.init_optimizer)();
|
|
44
45
|
// Annotate the CommonJS export names for ESM import in node:
|
|
45
46
|
0 && (module.exports = {
|
|
46
47
|
StateNodeAttributes,
|
|
@@ -52,6 +53,7 @@ var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
|
52
53
|
generateOneConfig,
|
|
53
54
|
generateOptimizedProject,
|
|
54
55
|
getConfig,
|
|
56
|
+
getFnMapAnalysis,
|
|
55
57
|
getProjectAnalysis,
|
|
56
58
|
get_jungle,
|
|
57
59
|
isErrorWithLocation,
|
package/build/sdk-util.cjs
CHANGED
|
@@ -18,25 +18,25 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var sdk_util_exports = {};
|
|
20
20
|
__export(sdk_util_exports, {
|
|
21
|
-
SectionKinds: () =>
|
|
22
|
-
appSupport: () =>
|
|
23
|
-
connectiq: () =>
|
|
24
|
-
getDeviceInfo: () =>
|
|
25
|
-
getFunctionDocumentation: () =>
|
|
26
|
-
getLanguages: () =>
|
|
27
|
-
getSdkPath: () =>
|
|
28
|
-
isWin: () =>
|
|
29
|
-
optimizeProgram: () =>
|
|
30
|
-
readPrg: () =>
|
|
31
|
-
readPrgWithOffsets: () =>
|
|
32
|
-
xmlUtil: () =>
|
|
21
|
+
SectionKinds: () => import_chunk_2OEXWI65.SectionKinds,
|
|
22
|
+
appSupport: () => import_chunk_2OEXWI65.appSupport,
|
|
23
|
+
connectiq: () => import_chunk_2OEXWI65.connectiq,
|
|
24
|
+
getDeviceInfo: () => import_chunk_2OEXWI65.getDeviceInfo,
|
|
25
|
+
getFunctionDocumentation: () => import_chunk_2OEXWI65.getFunctionDocumentation,
|
|
26
|
+
getLanguages: () => import_chunk_2OEXWI65.getLanguages,
|
|
27
|
+
getSdkPath: () => import_chunk_2OEXWI65.getSdkPath,
|
|
28
|
+
isWin: () => import_chunk_2OEXWI65.isWin,
|
|
29
|
+
optimizeProgram: () => import_chunk_2OEXWI65.optimizeProgram,
|
|
30
|
+
readPrg: () => import_chunk_2OEXWI65.readPrg,
|
|
31
|
+
readPrgWithOffsets: () => import_chunk_2OEXWI65.readPrgWithOffsets,
|
|
32
|
+
xmlUtil: () => import_chunk_2OEXWI65.xml_util_exports
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(sdk_util_exports);
|
|
35
|
-
var
|
|
36
|
-
var
|
|
35
|
+
var import_chunk_2OEXWI65 = require("./chunk-2OEXWI65.cjs");
|
|
36
|
+
var import_chunk_OASVKTK5 = require("./chunk-OASVKTK5.cjs");
|
|
37
37
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
38
38
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
39
|
-
(0,
|
|
39
|
+
(0, import_chunk_2OEXWI65.init_sdk_util)();
|
|
40
40
|
// Annotate the CommonJS export names for ESM import in node:
|
|
41
41
|
0 && (module.exports = {
|
|
42
42
|
SectionKinds,
|
|
@@ -2,6 +2,7 @@ export type DiagnosticType = "ERROR" | "WARNING" | "INFO";
|
|
|
2
2
|
export type LookupRules = "COMPILER1" | "COMPILER2" | "DEFAULT";
|
|
3
3
|
export type EnforceStatic = "YES" | "NO";
|
|
4
4
|
export type BuildConfig = {
|
|
5
|
+
ignore_settings_files?: boolean;
|
|
5
6
|
workspace?: string;
|
|
6
7
|
jungleFiles?: string;
|
|
7
8
|
developerKeyPath?: string;
|
|
@@ -43,6 +44,7 @@ export type BuildConfig = {
|
|
|
43
44
|
iterateOptimizer?: boolean;
|
|
44
45
|
covarianceWarnings?: boolean;
|
|
45
46
|
checkTypes?: DiagnosticType | "OFF";
|
|
47
|
+
strictTypeCheck?: "On" | "Off" | "Default";
|
|
46
48
|
removeArgc?: boolean;
|
|
47
49
|
postBuildPRE?: boolean;
|
|
48
50
|
allowForbiddenOpts?: boolean;
|
|
@@ -4,7 +4,7 @@ import { BuildConfig, Diagnostic, FilesToOptimizeMap, LookupDefinition, ProgramS
|
|
|
4
4
|
import { xmlUtil } from "./sdk-util";
|
|
5
5
|
export declare function getFileSources(fnMap: FilesToOptimizeMap): Promise<void>;
|
|
6
6
|
export declare function getFileASTs(fnMap: FilesToOptimizeMap): Promise<boolean>;
|
|
7
|
-
export declare function analyze(fnMap: FilesToOptimizeMap, resourcesMap: Record<string, JungleResourceMap>, manifestXML: xmlUtil.Document | undefined, config: BuildConfig): Promise<ProgramStateAnalysis>;
|
|
7
|
+
export declare function analyze(fnMap: FilesToOptimizeMap, resourcesMap: Record<string, JungleResourceMap>, manifestXML: xmlUtil.Document | undefined, config: BuildConfig, allowParseErrors?: boolean): Promise<ProgramStateAnalysis>;
|
|
8
8
|
export declare function reportMissingSymbols(state: ProgramStateAnalysis, config?: BuildConfig): void;
|
|
9
9
|
export declare function getLiteralFromDecls(lookupDefns: LookupDefinition[]): mctree.Literal | mctree.AsExpression | null;
|
|
10
10
|
export declare function optimizeMonkeyC(fnMap: FilesToOptimizeMap, resourcesMap: Record<string, JungleResourceMap>, manifestXML: xmlUtil.Document, config: BuildConfig): Promise<{
|
package/build/src/optimizer.d.ts
CHANGED
|
@@ -70,13 +70,8 @@ export type PreAnalysis = {
|
|
|
70
70
|
fnMap: FilesToOptimizeMap;
|
|
71
71
|
paths: string[];
|
|
72
72
|
};
|
|
73
|
-
declare type RequiredNonNull<T> = {
|
|
74
|
-
[K1 in keyof T]-?: {
|
|
75
|
-
[K2 in keyof T[K1]]-?: NonNullable<T[K1][K2]>;
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
73
|
export type Analysis = {
|
|
79
|
-
fnMap:
|
|
74
|
+
fnMap: FilesToOptimizeMap;
|
|
80
75
|
paths: string[];
|
|
81
76
|
state: ProgramStateAnalysis;
|
|
82
77
|
typeMap?: TypeMap | null | undefined;
|
|
@@ -93,3 +88,8 @@ export declare function generateOneConfig(buildConfig: JungleQualifier, manifest
|
|
|
93
88
|
sdkVersion: number | undefined;
|
|
94
89
|
}>;
|
|
95
90
|
export declare function getProjectAnalysis(targets: Target[], analysis: PreAnalysis | null, manifestXML: xmlUtil.Document, options: BuildConfig): Promise<Analysis | PreAnalysis>;
|
|
91
|
+
export declare function getFnMapAnalysis(fnMap: FilesToOptimizeMap, resourcesMap: Record<string, JungleResourceMap>, manifestXML: xmlUtil.Document, options: BuildConfig): Promise<{
|
|
92
|
+
fnMap: FilesToOptimizeMap;
|
|
93
|
+
state: ProgramStateAnalysis;
|
|
94
|
+
typeMap: TypeMap | null;
|
|
95
|
+
}>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { mctree } from "@markw65/prettier-plugin-monkeyc";
|
|
2
|
-
import { Diagnostic,
|
|
3
|
-
export declare function pragmaChecker(state:
|
|
2
|
+
import { Diagnostic, ProgramStateAnalysis } from "./optimizer-types";
|
|
3
|
+
export declare function pragmaChecker(state: ProgramStateAnalysis, ast: mctree.Program, diagnostics: Diagnostic[] | null | undefined): Promise<void>;
|
|
@@ -17,7 +17,7 @@ export declare function printBlockHeader(block: TypeFlowBlock): void;
|
|
|
17
17
|
export declare function describeEvent(event: Event): Promise<string>;
|
|
18
18
|
export declare function printBlockEvents(block: TypeFlowBlock, extra?: (event: Event) => string): void;
|
|
19
19
|
export declare function printBlockTrailer(block: TypeFlowBlock): void;
|
|
20
|
-
export declare function findObjectDeclsByProperty(state: ProgramStateAnalysis, object: ExactOrUnion, next: mctree.
|
|
20
|
+
export declare function findObjectDeclsByProperty(state: ProgramStateAnalysis, object: ExactOrUnion, next: mctree.Identifier): readonly [null, null] | [StateNode[], StateNode[]];
|
|
21
21
|
export declare function refineObjectTypeByDecls(istate: InterpState, object: ExactOrUnion, trueDecls: StateNode[]): ExactOrUnion;
|
|
22
22
|
export declare function findNextObjectType(istate: InterpState, trueDecls: StateNode[], next: mctree.DottedMemberExpression): import("./types").UnionType | import("./types").NumberType | import("./types").LongType | import("./types").FloatType | import("./types").DoubleType | import("./types").CharType | import("./types").StringType | import("./types").ArrayType | import("./types").DictionaryType | import("./types").MethodType | import("./types").ModuleType | import("./types").FunctionType | import("./types").ClassType | import("./types").ObjectType | import("./types").EnumType | import("./types").SymbolType | import("./types").TypedefType | null;
|
|
23
23
|
export declare function resolveDottedMember(istate: InterpState, object: ExactOrUnion, next: mctree.DottedMemberExpression): {
|
package/build/src/util.d.ts
CHANGED
package/build/util.cjs
CHANGED
|
@@ -18,35 +18,35 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var util_exports = {};
|
|
20
20
|
__export(util_exports, {
|
|
21
|
-
AwaitedError: () =>
|
|
22
|
-
GenericQueue: () =>
|
|
23
|
-
bumpLogging: () =>
|
|
24
|
-
copyRecursiveAsNeeded: () =>
|
|
25
|
-
every: () =>
|
|
26
|
-
first_modified: () =>
|
|
27
|
-
forEach: () =>
|
|
28
|
-
globSome: () =>
|
|
29
|
-
globa: () =>
|
|
30
|
-
last_modified: () =>
|
|
31
|
-
log: () =>
|
|
32
|
-
logPromise: () =>
|
|
33
|
-
logger: () =>
|
|
34
|
-
map: () =>
|
|
35
|
-
popcount: () =>
|
|
36
|
-
promiseAll: () =>
|
|
37
|
-
pushUnique: () =>
|
|
38
|
-
readByLine: () =>
|
|
39
|
-
reduce: () =>
|
|
40
|
-
sameArrays: () =>
|
|
41
|
-
setBanner: () =>
|
|
42
|
-
some: () =>
|
|
43
|
-
spawnByLine: () =>
|
|
44
|
-
wouldLog: () =>
|
|
21
|
+
AwaitedError: () => import_chunk_OASVKTK5.AwaitedError,
|
|
22
|
+
GenericQueue: () => import_chunk_OASVKTK5.GenericQueue,
|
|
23
|
+
bumpLogging: () => import_chunk_OASVKTK5.bumpLogging,
|
|
24
|
+
copyRecursiveAsNeeded: () => import_chunk_OASVKTK5.copyRecursiveAsNeeded,
|
|
25
|
+
every: () => import_chunk_OASVKTK5.every,
|
|
26
|
+
first_modified: () => import_chunk_OASVKTK5.first_modified,
|
|
27
|
+
forEach: () => import_chunk_OASVKTK5.forEach,
|
|
28
|
+
globSome: () => import_chunk_OASVKTK5.globSome,
|
|
29
|
+
globa: () => import_chunk_OASVKTK5.globa,
|
|
30
|
+
last_modified: () => import_chunk_OASVKTK5.last_modified,
|
|
31
|
+
log: () => import_chunk_OASVKTK5.log,
|
|
32
|
+
logPromise: () => import_chunk_OASVKTK5.logPromise,
|
|
33
|
+
logger: () => import_chunk_OASVKTK5.logger,
|
|
34
|
+
map: () => import_chunk_OASVKTK5.map,
|
|
35
|
+
popcount: () => import_chunk_OASVKTK5.popcount,
|
|
36
|
+
promiseAll: () => import_chunk_OASVKTK5.promiseAll,
|
|
37
|
+
pushUnique: () => import_chunk_OASVKTK5.pushUnique,
|
|
38
|
+
readByLine: () => import_chunk_OASVKTK5.readByLine,
|
|
39
|
+
reduce: () => import_chunk_OASVKTK5.reduce,
|
|
40
|
+
sameArrays: () => import_chunk_OASVKTK5.sameArrays,
|
|
41
|
+
setBanner: () => import_chunk_OASVKTK5.setBanner,
|
|
42
|
+
some: () => import_chunk_OASVKTK5.some,
|
|
43
|
+
spawnByLine: () => import_chunk_OASVKTK5.spawnByLine,
|
|
44
|
+
wouldLog: () => import_chunk_OASVKTK5.wouldLog
|
|
45
45
|
});
|
|
46
46
|
module.exports = __toCommonJS(util_exports);
|
|
47
|
-
var
|
|
47
|
+
var import_chunk_OASVKTK5 = require("./chunk-OASVKTK5.cjs");
|
|
48
48
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
49
|
-
(0,
|
|
49
|
+
(0, import_chunk_OASVKTK5.init_util)();
|
|
50
50
|
// Annotate the CommonJS export names for ESM import in node:
|
|
51
51
|
0 && (module.exports = {
|
|
52
52
|
AwaitedError,
|
package/build/worker-thread.cjs
CHANGED
|
@@ -21,17 +21,17 @@ __export(worker_thread_exports, {
|
|
|
21
21
|
default: () => worker_thread_default
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(worker_thread_exports);
|
|
24
|
-
var
|
|
25
|
-
var
|
|
24
|
+
var import_chunk_2OEXWI65 = require("./chunk-2OEXWI65.cjs");
|
|
25
|
+
var import_chunk_OASVKTK5 = require("./chunk-OASVKTK5.cjs");
|
|
26
26
|
var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
|
|
27
27
|
var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
|
|
28
28
|
var import_node_worker_threads = require("node:worker_threads");
|
|
29
29
|
var require_worker_thread = (0, import_chunk_ABYVSU2C.__commonJS)({
|
|
30
30
|
"src/worker-thread.ts"() {
|
|
31
|
-
(0,
|
|
31
|
+
(0, import_chunk_2OEXWI65.init_worker_task)();
|
|
32
32
|
if (import_node_worker_threads.parentPort) {
|
|
33
33
|
import_node_worker_threads.parentPort.on("message", async (task) => {
|
|
34
|
-
return import_node_worker_threads.parentPort.postMessage(await (0,
|
|
34
|
+
return import_node_worker_threads.parentPort.postMessage(await (0, import_chunk_2OEXWI65.performTask)(task));
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@markw65/monkeyc-optimizer",
|
|
3
3
|
"type": "commonjs",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.67",
|
|
5
5
|
"description": "Source to source optimizer for Garmin Monkey C code",
|
|
6
6
|
"main": "build/optimizer.cjs",
|
|
7
7
|
"types": "build/src/optimizer.d.ts",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"prepack": "node esbuild.mjs --release && mkdir -p bin && cp test/cft-font-info.js bin",
|
|
25
25
|
"test": "npm run test-mocha && npm run test-analysis && npm run test-optimized && npm run test-unopt && npm run test-post-only && npm run test-tiny && npm run test-remote && npm run test-remote-tests && npm run test-personality",
|
|
26
26
|
"test-mocha": "npx mocha --timeout 999999 build/mocha.cjs",
|
|
27
|
-
"test-remote": "node ./test/test.js --showInfo --postOptimize --product=pick-one --github",
|
|
28
|
-
"test-remote-tests-default": "
|
|
27
|
+
"test-remote": "node ./test/test.js --showInfo --postOptimize --product=pick-one --ignore-settings-files --github",
|
|
28
|
+
"test-remote-tests-default": "npm run test-remote -- --run-tests",
|
|
29
29
|
"test-remote-tests-with-forbidden": "npm run test-remote-tests-default -- --allowForbiddenOpts",
|
|
30
30
|
"test-remote-tests": "npm run test-remote-tests-default && npm run test-remote-tests-with-forbidden",
|
|
31
31
|
"test-optimized-default": "node test/test.js --showInfo --postOptimize --typeCheckLevel Strict --run-tests --product=fenix5 --product=fr235 --jungle ./test/OptimizerTests/monkey.jungle",
|