@tsonic/emitter 0.0.12 → 0.0.13
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/dist/.tsbuildinfo +1 -1
- package/dist/array.test.js +6 -6
- package/dist/array.test.js.map +1 -1
- package/dist/core/attributes.d.ts +43 -0
- package/dist/core/attributes.d.ts.map +1 -0
- package/dist/core/attributes.js +128 -0
- package/dist/core/attributes.js.map +1 -0
- package/dist/core/attributes.test.d.ts +5 -0
- package/dist/core/attributes.test.d.ts.map +1 -0
- package/dist/core/attributes.test.js +296 -0
- package/dist/core/attributes.test.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/module-emitter/static-container.d.ts.map +1 -1
- package/dist/core/module-emitter/static-container.js +50 -1
- package/dist/core/module-emitter/static-container.js.map +1 -1
- package/dist/core/module-emitter.test.js +2 -1
- package/dist/core/module-emitter.test.js.map +1 -1
- package/dist/core/module-map.d.ts.map +1 -1
- package/dist/core/module-map.js +5 -1
- package/dist/core/module-map.js.map +1 -1
- package/dist/core/module-map.test.d.ts +8 -0
- package/dist/core/module-map.test.d.ts.map +1 -0
- package/dist/core/module-map.test.js +94 -0
- package/dist/core/module-map.test.js.map +1 -0
- package/dist/core/type-compatibility.d.ts +6 -1
- package/dist/core/type-compatibility.d.ts.map +1 -1
- package/dist/core/type-compatibility.js +12 -22
- package/dist/core/type-compatibility.js.map +1 -1
- package/dist/core/type-resolution.d.ts +2 -2
- package/dist/core/type-resolution.js +6 -6
- package/dist/core/type-resolution.js.map +1 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +47 -1
- package/dist/emitter.js.map +1 -1
- package/dist/expression-emitter.d.ts.map +1 -1
- package/dist/expression-emitter.js +3 -3
- package/dist/expression-emitter.js.map +1 -1
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +46 -15
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/calls.d.ts.map +1 -1
- package/dist/expressions/calls.js +86 -13
- package/dist/expressions/calls.js.map +1 -1
- package/dist/expressions/collections.d.ts.map +1 -1
- package/dist/expressions/collections.js +44 -35
- package/dist/expressions/collections.js.map +1 -1
- package/dist/expressions/identifiers.d.ts.map +1 -1
- package/dist/expressions/identifiers.js +1 -0
- package/dist/expressions/identifiers.js.map +1 -1
- package/dist/expressions/index.test.js +3 -1
- package/dist/expressions/index.test.js.map +1 -1
- package/dist/expressions/literals.d.ts +7 -15
- package/dist/expressions/literals.d.ts.map +1 -1
- package/dist/expressions/literals.js +15 -99
- package/dist/expressions/literals.js.map +1 -1
- package/dist/expressions/literals.test.js +11 -2
- package/dist/expressions/literals.test.js.map +1 -1
- package/dist/expressions/operators.d.ts +25 -11
- package/dist/expressions/operators.d.ts.map +1 -1
- package/dist/expressions/operators.js +151 -107
- package/dist/expressions/operators.js.map +1 -1
- package/dist/expressions/other.d.ts +3 -0
- package/dist/expressions/other.d.ts.map +1 -1
- package/dist/expressions/other.js +18 -1
- package/dist/expressions/other.js.map +1 -1
- package/dist/generator.test.js +2 -2
- package/dist/generator.test.js.map +1 -1
- package/dist/golden-tests/discovery.d.ts +14 -3
- package/dist/golden-tests/discovery.d.ts.map +1 -1
- package/dist/golden-tests/discovery.js +93 -10
- package/dist/golden-tests/discovery.js.map +1 -1
- package/dist/golden-tests/index.d.ts +1 -1
- package/dist/golden-tests/index.d.ts.map +1 -1
- package/dist/golden-tests/index.js.map +1 -1
- package/dist/golden-tests/runner.d.ts +1 -0
- package/dist/golden-tests/runner.d.ts.map +1 -1
- package/dist/golden-tests/runner.js +30 -27
- package/dist/golden-tests/runner.js.map +1 -1
- package/dist/golden-tests/types.d.ts +7 -0
- package/dist/golden-tests/types.d.ts.map +1 -1
- package/dist/golden.test.d.ts +12 -5
- package/dist/golden.test.d.ts.map +1 -1
- package/dist/golden.test.js +40 -21
- package/dist/golden.test.js.map +1 -1
- package/dist/integration.test.js +8 -8
- package/dist/integration.test.js.map +1 -1
- package/dist/invariants/emitter-globals-subset.test.js +4 -4
- package/dist/invariants/emitter-globals-subset.test.js.map +1 -1
- package/dist/invariants/numeric-proof-contract.test.js +20 -15
- package/dist/invariants/numeric-proof-contract.test.js.map +1 -1
- package/dist/specialization/generic-functions.test.js +366 -0
- package/dist/specialization/generic-functions.test.js.map +1 -1
- package/dist/specialization/interfaces.test.js +6 -6
- package/dist/specialization/interfaces.test.js.map +1 -1
- package/dist/specialization/type-aliases.test.js +88 -5
- package/dist/specialization/type-aliases.test.js.map +1 -1
- package/dist/statements/classes/members/methods.d.ts.map +1 -1
- package/dist/statements/classes/members/methods.js +13 -4
- package/dist/statements/classes/members/methods.js.map +1 -1
- package/dist/statements/classes/members/properties.d.ts.map +1 -1
- package/dist/statements/classes/members/properties.js +10 -1
- package/dist/statements/classes/members/properties.js.map +1 -1
- package/dist/statements/classes/properties.d.ts.map +1 -1
- package/dist/statements/classes/properties.js +4 -0
- package/dist/statements/classes/properties.js.map +1 -1
- package/dist/statements/control/conditionals.d.ts.map +1 -1
- package/dist/statements/control/conditionals.js +138 -1
- package/dist/statements/control/conditionals.js.map +1 -1
- package/dist/statements/declarations/classes.d.ts.map +1 -1
- package/dist/statements/declarations/classes.js +7 -1
- package/dist/statements/declarations/classes.js.map +1 -1
- package/dist/statements/declarations/functions.d.ts.map +1 -1
- package/dist/statements/declarations/functions.js +7 -1
- package/dist/statements/declarations/functions.js.map +1 -1
- package/dist/statements/declarations/structs.test.js +7 -5
- package/dist/statements/declarations/structs.test.js.map +1 -1
- package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/statements/declarations/type-aliases.js +7 -8
- package/dist/statements/declarations/type-aliases.js.map +1 -1
- package/dist/statements/declarations/variables.d.ts.map +1 -1
- package/dist/statements/declarations/variables.js +54 -2
- package/dist/statements/declarations/variables.js.map +1 -1
- package/dist/statements/index.test.js +2 -3
- package/dist/statements/index.test.js.map +1 -1
- package/dist/types/parameters.d.ts.map +1 -1
- package/dist/types/parameters.js +29 -0
- package/dist/types/parameters.js.map +1 -1
- package/dist/types/primitives.d.ts +12 -1
- package/dist/types/primitives.d.ts.map +1 -1
- package/dist/types/primitives.js +14 -1
- package/dist/types/primitives.js.map +1 -1
- package/dist/types/references.d.ts.map +1 -1
- package/dist/types/references.js +19 -12
- package/dist/types/references.js.map +1 -1
- package/dist/types/references.test.js +6 -8
- package/dist/types/references.test.js.map +1 -1
- package/package.json +5 -2
|
@@ -1,37 +1,117 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Test scenario discovery
|
|
3
|
+
*
|
|
4
|
+
* Directory structure:
|
|
5
|
+
* testcases/
|
|
6
|
+
* ├── common/ # Tests that work in BOTH modes
|
|
7
|
+
* │ ├── <category>/<test>/ # .ts sources + config.yaml
|
|
8
|
+
* │ ├── dotnet/<category>/<test>/ # Expected .cs for dotnet mode
|
|
9
|
+
* │ └── js/<category>/<test>/ # Expected .cs for js mode
|
|
10
|
+
* └── js-only/ # Tests that ONLY work in JS mode
|
|
11
|
+
* └── <category>/<test>/ # .ts, config.yaml, AND .cs together
|
|
3
12
|
*/
|
|
4
13
|
import * as fs from "fs";
|
|
5
14
|
import * as path from "path";
|
|
6
15
|
import { parseConfigYaml } from "./config-parser.js";
|
|
7
16
|
/**
|
|
8
|
-
* Discover all test scenarios
|
|
17
|
+
* Discover all test scenarios for a given runtime mode
|
|
18
|
+
* - dotnet mode: only common/ tests
|
|
19
|
+
* - js mode: common/ + js-only/ tests
|
|
9
20
|
*/
|
|
10
|
-
export const discoverScenarios = (baseDir) => {
|
|
21
|
+
export const discoverScenarios = (baseDir, runtimeMode) => {
|
|
22
|
+
const commonDir = path.join(baseDir, "common");
|
|
23
|
+
const jsOnlyDir = path.join(baseDir, "js-only");
|
|
24
|
+
// Common tests - source in common/, expected in common/{dotnet|js}/
|
|
25
|
+
const commonScenarios = discoverCommonScenarios(commonDir, runtimeMode);
|
|
26
|
+
// JS-only tests - only for js mode, source and expected together
|
|
27
|
+
const jsOnlyScenarios = runtimeMode === "js" ? discoverJsOnlyScenarios(jsOnlyDir) : [];
|
|
28
|
+
return [...commonScenarios, ...jsOnlyScenarios];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Discover scenarios from common/ directory
|
|
32
|
+
* Source files are in common/<category>/<test>/
|
|
33
|
+
* Expected .cs files are in common/{dotnet|js}/<category>/<test>/
|
|
34
|
+
*/
|
|
35
|
+
const discoverCommonScenarios = (commonDir, runtimeMode) => {
|
|
36
|
+
const scenarios = [];
|
|
37
|
+
const expectedBaseDir = path.join(commonDir, runtimeMode);
|
|
38
|
+
const walk = (dir, pathParts) => {
|
|
39
|
+
// Skip dotnet/ and js/ subdirectories (they contain expected output, not sources)
|
|
40
|
+
const dirName = path.basename(dir);
|
|
41
|
+
if (dirName === "dotnet" || dirName === "js") {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
45
|
+
const hasConfig = entries.some((e) => e.name === "config.yaml");
|
|
46
|
+
if (hasConfig) {
|
|
47
|
+
const configPath = path.join(dir, "config.yaml");
|
|
48
|
+
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
49
|
+
const testEntries = parseConfigYaml(configContent);
|
|
50
|
+
for (const entry of testEntries) {
|
|
51
|
+
if (!entry.input.endsWith(".ts")) {
|
|
52
|
+
throw new Error(`Invalid input (must end with .ts): ${entry.input} (config: ${configPath})`);
|
|
53
|
+
}
|
|
54
|
+
const inputPath = path.join(dir, entry.input);
|
|
55
|
+
const baseName = path.basename(entry.input, ".ts");
|
|
56
|
+
// Expected path is in common/{dotnet|js}/<pathParts>/<baseName>.cs
|
|
57
|
+
const expectedPath = path.join(expectedBaseDir, ...pathParts, `${baseName}.cs`);
|
|
58
|
+
if (!fs.existsSync(inputPath)) {
|
|
59
|
+
throw new Error(`Input file not found: ${inputPath} (title: "${entry.title}", config: ${configPath})`);
|
|
60
|
+
}
|
|
61
|
+
const expectDiagnostics = entry.expectDiagnostics;
|
|
62
|
+
if (!expectDiagnostics?.length) {
|
|
63
|
+
if (!fs.existsSync(expectedPath)) {
|
|
64
|
+
throw new Error(`Expected file not found: ${expectedPath} (title: "${entry.title}", config: ${configPath})`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
scenarios.push({
|
|
68
|
+
pathParts: ["common", ...pathParts],
|
|
69
|
+
title: entry.title,
|
|
70
|
+
inputPath,
|
|
71
|
+
expectedPath: expectDiagnostics?.length ? undefined : expectedPath,
|
|
72
|
+
expectDiagnostics,
|
|
73
|
+
expectDiagnosticsMode: entry.expectDiagnosticsMode,
|
|
74
|
+
runtimeMode,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Recurse into subdirectories (except dotnet/js)
|
|
79
|
+
for (const entry of entries) {
|
|
80
|
+
if (entry.isDirectory() &&
|
|
81
|
+
entry.name !== "dotnet" &&
|
|
82
|
+
entry.name !== "js") {
|
|
83
|
+
walk(path.join(dir, entry.name), [...pathParts, entry.name]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
if (fs.existsSync(commonDir)) {
|
|
88
|
+
walk(commonDir, []);
|
|
89
|
+
}
|
|
90
|
+
return scenarios;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Discover scenarios from js-only/ directory
|
|
94
|
+
* Source and expected files are in the same directory
|
|
95
|
+
*/
|
|
96
|
+
const discoverJsOnlyScenarios = (jsOnlyDir) => {
|
|
11
97
|
const scenarios = [];
|
|
12
98
|
const walk = (dir, pathParts) => {
|
|
13
99
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
14
|
-
// Check if this directory contains config.yaml
|
|
15
100
|
const hasConfig = entries.some((e) => e.name === "config.yaml");
|
|
16
101
|
if (hasConfig) {
|
|
17
|
-
// This is a test directory - read config
|
|
18
102
|
const configPath = path.join(dir, "config.yaml");
|
|
19
103
|
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
20
104
|
const testEntries = parseConfigYaml(configContent);
|
|
21
|
-
// Create scenarios for each test entry
|
|
22
105
|
for (const entry of testEntries) {
|
|
23
|
-
// Defensive check: parser should enforce this, but double-check
|
|
24
106
|
if (!entry.input.endsWith(".ts")) {
|
|
25
107
|
throw new Error(`Invalid input (must end with .ts): ${entry.input} (config: ${configPath})`);
|
|
26
108
|
}
|
|
27
109
|
const inputPath = path.join(dir, entry.input);
|
|
28
110
|
const baseName = path.basename(entry.input, ".ts");
|
|
29
111
|
const expectedPath = path.join(dir, `${baseName}.cs`);
|
|
30
|
-
// Verify input file exists
|
|
31
112
|
if (!fs.existsSync(inputPath)) {
|
|
32
113
|
throw new Error(`Input file not found: ${inputPath} (title: "${entry.title}", config: ${configPath})`);
|
|
33
114
|
}
|
|
34
|
-
// Only require .cs file if not expecting diagnostics
|
|
35
115
|
const expectDiagnostics = entry.expectDiagnostics;
|
|
36
116
|
if (!expectDiagnostics?.length) {
|
|
37
117
|
if (!fs.existsSync(expectedPath)) {
|
|
@@ -39,12 +119,13 @@ export const discoverScenarios = (baseDir) => {
|
|
|
39
119
|
}
|
|
40
120
|
}
|
|
41
121
|
scenarios.push({
|
|
42
|
-
pathParts,
|
|
122
|
+
pathParts: ["js-only", ...pathParts],
|
|
43
123
|
title: entry.title,
|
|
44
124
|
inputPath,
|
|
45
125
|
expectedPath: expectDiagnostics?.length ? undefined : expectedPath,
|
|
46
126
|
expectDiagnostics,
|
|
47
127
|
expectDiagnosticsMode: entry.expectDiagnosticsMode,
|
|
128
|
+
runtimeMode: "js",
|
|
48
129
|
});
|
|
49
130
|
}
|
|
50
131
|
}
|
|
@@ -55,7 +136,9 @@ export const discoverScenarios = (baseDir) => {
|
|
|
55
136
|
}
|
|
56
137
|
}
|
|
57
138
|
};
|
|
58
|
-
|
|
139
|
+
if (fs.existsSync(jsOnlyDir)) {
|
|
140
|
+
walk(jsOnlyDir, []);
|
|
141
|
+
}
|
|
59
142
|
return scenarios;
|
|
60
143
|
};
|
|
61
144
|
//# sourceMappingURL=discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/golden-tests/discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/golden-tests/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Golden test harness - Public API
|
|
3
3
|
*/
|
|
4
|
-
export type { TestEntry, Scenario, DescribeNode } from "./types.js";
|
|
4
|
+
export type { TestEntry, Scenario, DescribeNode, RuntimeMode, } from "./types.js";
|
|
5
5
|
export { parseConfigYaml } from "./config-parser.js";
|
|
6
6
|
export { discoverScenarios } from "./discovery.js";
|
|
7
7
|
export { buildDescribeTree } from "./tree-builder.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/golden-tests/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/golden-tests/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/golden-tests/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/golden-tests/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/golden-tests/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/golden-tests/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,EAAmB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAYvD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAkB1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,QAAQ,KAAG,OAAO,CAAC,IAAI,CAyKlE,CAAC"}
|
|
@@ -5,28 +5,28 @@ import { expect } from "chai";
|
|
|
5
5
|
import * as fs from "fs";
|
|
6
6
|
import * as path from "path";
|
|
7
7
|
import { fileURLToPath } from "url";
|
|
8
|
-
import { compile, buildIr, runNumericProofPass } from "@tsonic/frontend";
|
|
8
|
+
import { compile, buildIr, runNumericProofPass, runAttributeCollectionPass, } from "@tsonic/frontend";
|
|
9
9
|
import { emitCSharpFiles } from "../emitter.js";
|
|
10
|
-
|
|
11
|
-
// Resolve paths to js-globals and types packages for golden tests
|
|
10
|
+
// Resolve paths to globals packages for golden tests
|
|
12
11
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
13
12
|
const monorepoRoot = path.resolve(__dirname, "../../../..");
|
|
13
|
+
const globalsPath = path.join(monorepoRoot, "node_modules/@tsonic/globals");
|
|
14
14
|
const jsGlobalsPath = path.join(monorepoRoot, "node_modules/@tsonic/js-globals");
|
|
15
|
-
const
|
|
15
|
+
const corePath = path.join(monorepoRoot, "node_modules/@tsonic/core");
|
|
16
16
|
/**
|
|
17
17
|
* Normalize C# output for comparison
|
|
18
|
+
* Strips the header (Generated from, Generated at, WARNING) and normalizes whitespace
|
|
18
19
|
*/
|
|
19
20
|
export const normalizeCs = (code) => {
|
|
20
|
-
|
|
21
|
+
const lines = code.trim().replace(/\r\n/g, "\n").split("\n");
|
|
22
|
+
// Find where the body starts (namespace line)
|
|
23
|
+
const bodyStartIndex = lines.findIndex((line, i) => i > 0 && line.startsWith("namespace"));
|
|
24
|
+
// Strip header if found, otherwise use full code
|
|
25
|
+
const body = bodyStartIndex > 0 ? lines.slice(bodyStartIndex).join("\n") : code;
|
|
26
|
+
return (body
|
|
21
27
|
.trim()
|
|
22
|
-
//
|
|
23
|
-
.replace(/\
|
|
24
|
-
// Remove trailing whitespace
|
|
25
|
-
.replace(/\s+$/gm, "")
|
|
26
|
-
// Normalize timestamp line (make comparison timestamp-agnostic)
|
|
27
|
-
.replace(/\/\/ Generated at: .+/, "// Generated at: TIMESTAMP")
|
|
28
|
-
// Normalize file path to just filename (strip directory path)
|
|
29
|
-
.replace(/\/\/ Generated from: .+\/([^/]+)$/, "// Generated from: $1"));
|
|
28
|
+
// Remove trailing whitespace per line
|
|
29
|
+
.replace(/\s+$/gm, ""));
|
|
30
30
|
};
|
|
31
31
|
/**
|
|
32
32
|
* Run a single test scenario
|
|
@@ -40,12 +40,15 @@ export const runScenario = async (scenario) => {
|
|
|
40
40
|
const namespaceParts = scenario.pathParts.map((part) => part.replace(/-/g, "")); // Strip hyphens
|
|
41
41
|
const rootNamespace = ["TestCases", ...namespaceParts].join(".");
|
|
42
42
|
// Step 1: Compile TypeScript → Program
|
|
43
|
-
// Use
|
|
43
|
+
// Use appropriate typeRoots based on runtime mode
|
|
44
|
+
const typeRoots = scenario.runtimeMode === "js"
|
|
45
|
+
? [globalsPath, jsGlobalsPath, corePath]
|
|
46
|
+
: [globalsPath, corePath];
|
|
44
47
|
const compileResult = compile([scenario.inputPath], {
|
|
45
48
|
projectRoot: monorepoRoot, // Use monorepo root for node_modules resolution
|
|
46
49
|
sourceRoot,
|
|
47
50
|
rootNamespace,
|
|
48
|
-
typeRoots
|
|
51
|
+
typeRoots,
|
|
49
52
|
});
|
|
50
53
|
// Handle expected diagnostics tests
|
|
51
54
|
if (scenario.expectDiagnostics?.length) {
|
|
@@ -110,10 +113,18 @@ export const runScenario = async (scenario) => {
|
|
|
110
113
|
.join("\n");
|
|
111
114
|
throw new Error(`Numeric proof validation failed:\n${errors}`);
|
|
112
115
|
}
|
|
116
|
+
// Step 2.6: Run attribute collection pass (extracts A.on(X).type(Y) markers)
|
|
117
|
+
const attributeResult = runAttributeCollectionPass(proofResult.modules);
|
|
118
|
+
if (!attributeResult.ok) {
|
|
119
|
+
const errors = attributeResult.diagnostics
|
|
120
|
+
.map((d) => `${d.code}: ${d.message}`)
|
|
121
|
+
.join("\n");
|
|
122
|
+
throw new Error(`Attribute collection failed:\n${errors}`);
|
|
123
|
+
}
|
|
113
124
|
// Step 3: Emit IR → C#
|
|
114
125
|
// Note: Don't set entryPointPath - golden tests are NOT entry points
|
|
115
|
-
// Use the
|
|
116
|
-
const emitResult = emitCSharpFiles(
|
|
126
|
+
// Use the processed modules from the attribute pass
|
|
127
|
+
const emitResult = emitCSharpFiles(attributeResult.modules, {
|
|
117
128
|
rootNamespace,
|
|
118
129
|
});
|
|
119
130
|
if (!emitResult.ok) {
|
|
@@ -134,19 +145,11 @@ export const runScenario = async (scenario) => {
|
|
|
134
145
|
if (!actualCs) {
|
|
135
146
|
throw new Error(`Generated file key exists but content is missing: ${generatedKey}`);
|
|
136
147
|
}
|
|
137
|
-
// Read expected output (
|
|
148
|
+
// Read expected output (includes header) - only needed for non-diagnostic tests
|
|
138
149
|
if (!scenario.expectedPath) {
|
|
139
150
|
throw new Error(`Expected path missing for successful test: ${scenario.inputPath}`);
|
|
140
151
|
}
|
|
141
|
-
const
|
|
142
|
-
// Generate expected header using shared constant (with TIMESTAMP placeholder)
|
|
143
|
-
// Use just the filename for comparison (actual files may have full paths)
|
|
144
|
-
const fileName = path.basename(scenario.inputPath);
|
|
145
|
-
const expectedHeader = generateFileHeader(fileName, {
|
|
146
|
-
timestamp: "TIMESTAMP",
|
|
147
|
-
});
|
|
148
|
-
// Combine header with expected body
|
|
149
|
-
const expectedCs = expectedHeader + expectedCsBody;
|
|
152
|
+
const expectedCs = fs.readFileSync(scenario.expectedPath, "utf-8");
|
|
150
153
|
// Normalize and compare
|
|
151
154
|
const normalizedActual = normalizeCs(actualCs);
|
|
152
155
|
const normalizedExpected = normalizeCs(expectedCs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/golden-tests/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/golden-tests/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Golden test types
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Runtime mode for golden tests:
|
|
6
|
+
* - "dotnet": uses @tsonic/globals only (native .NET APIs)
|
|
7
|
+
* - "js": uses @tsonic/globals + @tsonic/js-globals (JSRuntime APIs)
|
|
8
|
+
*/
|
|
9
|
+
export type RuntimeMode = "dotnet" | "js";
|
|
4
10
|
/**
|
|
5
11
|
* Diagnostics matching mode:
|
|
6
12
|
* - "contains": expected codes must be present, extra codes allowed (default)
|
|
@@ -20,6 +26,7 @@ export type Scenario = {
|
|
|
20
26
|
readonly expectedPath?: string;
|
|
21
27
|
readonly expectDiagnostics?: readonly string[];
|
|
22
28
|
readonly expectDiagnosticsMode?: DiagnosticsMode;
|
|
29
|
+
readonly runtimeMode: RuntimeMode;
|
|
23
30
|
};
|
|
24
31
|
export type DescribeNode = {
|
|
25
32
|
readonly name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/golden-tests/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/golden-tests/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,CAAC"}
|
package/dist/golden.test.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Golden Test Harness for Tsonic Emitter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Directory structure:
|
|
5
|
+
* testcases/
|
|
6
|
+
* ├── common/ # Tests that work in BOTH modes
|
|
7
|
+
* │ ├── <category>/<test>/ # .ts sources + config.yaml
|
|
8
|
+
* │ ├── dotnet/<category>/<test>/ # Expected .cs for dotnet mode
|
|
9
|
+
* │ └── js/<category>/<test>/ # Expected .cs for js mode
|
|
10
|
+
* └── js-only/ # Tests that ONLY work in JS mode
|
|
11
|
+
* └── <category>/<test>/ # .ts, config.yaml, AND .cs together
|
|
12
|
+
*
|
|
13
|
+
* Two modes:
|
|
14
|
+
* - dotnet: common/ tests only, uses @tsonic/globals (native .NET APIs)
|
|
15
|
+
* - js: common/ + js-only/ tests, uses @tsonic/globals + @tsonic/js-globals
|
|
9
16
|
*/
|
|
10
17
|
export {};
|
|
11
18
|
//# sourceMappingURL=golden.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"golden.test.d.ts","sourceRoot":"","sources":["../src/golden.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"golden.test.d.ts","sourceRoot":"","sources":["../src/golden.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/golden.test.js
CHANGED
|
@@ -1,35 +1,54 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Golden Test Harness for Tsonic Emitter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Directory structure:
|
|
5
|
+
* testcases/
|
|
6
|
+
* ├── common/ # Tests that work in BOTH modes
|
|
7
|
+
* │ ├── <category>/<test>/ # .ts sources + config.yaml
|
|
8
|
+
* │ ├── dotnet/<category>/<test>/ # Expected .cs for dotnet mode
|
|
9
|
+
* │ └── js/<category>/<test>/ # Expected .cs for js mode
|
|
10
|
+
* └── js-only/ # Tests that ONLY work in JS mode
|
|
11
|
+
* └── <category>/<test>/ # .ts, config.yaml, AND .cs together
|
|
12
|
+
*
|
|
13
|
+
* Two modes:
|
|
14
|
+
* - dotnet: common/ tests only, uses @tsonic/globals (native .NET APIs)
|
|
15
|
+
* - js: common/ + js-only/ tests, uses @tsonic/globals + @tsonic/js-globals
|
|
9
16
|
*/
|
|
17
|
+
import { describe } from "mocha";
|
|
10
18
|
import * as path from "path";
|
|
11
19
|
import { fileURLToPath } from "url";
|
|
12
20
|
import { discoverScenarios, buildDescribeTree, registerNode, } from "./golden-tests/index.js";
|
|
13
21
|
const __filename = fileURLToPath(import.meta.url);
|
|
14
22
|
const __dirname = path.dirname(__filename);
|
|
15
|
-
const TESTCASES_DIR = path.join(__dirname, "../testcases");
|
|
16
23
|
/**
|
|
17
|
-
*
|
|
24
|
+
* Setup tests for a specific runtime mode
|
|
18
25
|
*/
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const setupMode = (mode) => {
|
|
27
|
+
const testcasesDir = path.join(__dirname, "../testcases");
|
|
28
|
+
try {
|
|
29
|
+
const scenarios = discoverScenarios(testcasesDir, mode);
|
|
30
|
+
if (scenarios.length === 0) {
|
|
31
|
+
console.warn(`⚠️ No golden test cases found for ${mode} mode`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const tree = buildDescribeTree(scenarios);
|
|
35
|
+
if (tree) {
|
|
36
|
+
registerNode(tree);
|
|
37
|
+
}
|
|
28
38
|
}
|
|
29
39
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`❌ Failed to setup ${mode} mode golden tests:`, error);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Main test suite setup (synchronous discovery for Mocha compatibility)
|
|
47
|
+
*/
|
|
48
|
+
describe("Golden Tests (dotnet mode)", () => {
|
|
49
|
+
setupMode("dotnet");
|
|
50
|
+
});
|
|
51
|
+
describe("Golden Tests (js mode)", () => {
|
|
52
|
+
setupMode("js");
|
|
53
|
+
});
|
|
35
54
|
//# sourceMappingURL=golden.test.js.map
|
package/dist/golden.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"golden.test.js","sourceRoot":"","sources":["../src/golden.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"golden.test.js","sourceRoot":"","sources":["../src/golden.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,MAAM,yBAAyB,CAAC;AAGjC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,SAAS,GAAG,CAAC,IAAiB,EAAQ,EAAE;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAExD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,OAAO,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,IAAI,EAAE,CAAC;gBACT,YAAY,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,qBAAqB,EAAE,KAAK,CAAC,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/integration.test.js
CHANGED
|
@@ -76,7 +76,7 @@ describe("End-to-End Integration", () => {
|
|
|
76
76
|
const csharp = compileToCSharp(source);
|
|
77
77
|
// Should emit type alias as class
|
|
78
78
|
expect(csharp).to.include("class HasId__Alias");
|
|
79
|
-
expect(csharp).to.match(/double\s+id\s*\{\s*get;\s*set;/);
|
|
79
|
+
expect(csharp).to.match(/required\s+double\s+id\s*\{\s*get;\s*set;/);
|
|
80
80
|
// Should use type alias as constraint
|
|
81
81
|
expect(csharp).to.include("where T : HasId");
|
|
82
82
|
// Should have function
|
|
@@ -96,9 +96,9 @@ describe("End-to-End Integration", () => {
|
|
|
96
96
|
// Should emit C# class (not interface)
|
|
97
97
|
expect(csharp).to.match(/public\s+class\s+User/);
|
|
98
98
|
expect(csharp).not.to.include("interface User");
|
|
99
|
-
// Should have auto-properties
|
|
100
|
-
expect(csharp).to.match(/public\s+double\s+id\s*\{\s*get;\s*set;/);
|
|
101
|
-
expect(csharp).to.match(/public\s+string\s+name\s*\{\s*get;\s*set;/);
|
|
99
|
+
// Should have auto-properties (required for non-optional)
|
|
100
|
+
expect(csharp).to.match(/public\s+required\s+double\s+id\s*\{\s*get;\s*set;/);
|
|
101
|
+
expect(csharp).to.match(/public\s+required\s+string\s+name\s*\{\s*get;\s*set;/);
|
|
102
102
|
// Optional property should be nullable
|
|
103
103
|
expect(csharp).to.match(/public\s+string\?\s+email\s*\{\s*get;\s*set;/);
|
|
104
104
|
});
|
|
@@ -112,8 +112,8 @@ describe("End-to-End Integration", () => {
|
|
|
112
112
|
const csharp = compileToCSharp(source);
|
|
113
113
|
// Should emit sealed class with __Alias suffix
|
|
114
114
|
expect(csharp).to.match(/public\s+sealed\s+class\s+Point__Alias/);
|
|
115
|
-
expect(csharp).to.match(/public\s+double\s+x\s*\{\s*get;\s*set;/);
|
|
116
|
-
expect(csharp).to.match(/public\s+double\s+y\s*\{\s*get;\s*set;/);
|
|
115
|
+
expect(csharp).to.match(/public\s+required\s+double\s+x\s*\{\s*get;\s*set;/);
|
|
116
|
+
expect(csharp).to.match(/public\s+required\s+double\s+y\s*\{\s*get;\s*set;/);
|
|
117
117
|
});
|
|
118
118
|
it("should compile generic interface", () => {
|
|
119
119
|
const source = `
|
|
@@ -125,8 +125,8 @@ describe("End-to-End Integration", () => {
|
|
|
125
125
|
const csharp = compileToCSharp(source);
|
|
126
126
|
// Should emit generic class
|
|
127
127
|
expect(csharp).to.match(/public\s+class\s+Result\s*<T>/);
|
|
128
|
-
expect(csharp).to.match(/public\s+bool\s+ok/);
|
|
129
|
-
expect(csharp).to.match(/public\s+T\s+value/);
|
|
128
|
+
expect(csharp).to.match(/public\s+required\s+bool\s+ok/);
|
|
129
|
+
expect(csharp).to.match(/public\s+required\s+T\s+value/);
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
132
|
describe("Generic Classes", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../src/integration.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../src/integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,10 +38,10 @@ const EMITTER_SPECIAL_CASES = {
|
|
|
38
38
|
*/
|
|
39
39
|
const REQUIRED_IN_JS_GLOBALS = ["Array", "Promise", "PromiseLike", "Error"];
|
|
40
40
|
/**
|
|
41
|
-
* Types that MUST be declared in
|
|
41
|
+
* Types that MUST be declared in base globals for the emitter to work correctly.
|
|
42
42
|
* These are types that have special-case handling when runtime === "dotnet".
|
|
43
43
|
*/
|
|
44
|
-
const
|
|
44
|
+
const REQUIRED_IN_BASE_GLOBALS = ["Array", "Promise", "PromiseLike"];
|
|
45
45
|
/**
|
|
46
46
|
* Types that are NOT in any globals package.
|
|
47
47
|
* These must NOT be special-cased because TS name resolution will fail first.
|
|
@@ -82,11 +82,11 @@ describe("Emitter-Globals Subset Invariant", () => {
|
|
|
82
82
|
// This assertion documents the invariant
|
|
83
83
|
assert.deepEqual(jsSpecialCases.sort(), REQUIRED_IN_JS_GLOBALS.sort(), "JS-mode special cases must match required js-globals types");
|
|
84
84
|
});
|
|
85
|
-
it("all dotnet-mode special cases are in
|
|
85
|
+
it("all dotnet-mode special cases are in base globals", () => {
|
|
86
86
|
const dotnetSpecialCases = Object.entries(EMITTER_SPECIAL_CASES)
|
|
87
87
|
.filter(([_, modes]) => modes.dotnet)
|
|
88
88
|
.map(([name]) => name);
|
|
89
|
-
assert.deepEqual(dotnetSpecialCases.sort(),
|
|
89
|
+
assert.deepEqual(dotnetSpecialCases.sort(), REQUIRED_IN_BASE_GLOBALS.sort(), "Dotnet-mode special cases must match required base globals types");
|
|
90
90
|
});
|
|
91
91
|
it("Error is only special-cased in JS mode", () => {
|
|
92
92
|
const errorConfig = EMITTER_SPECIAL_CASES.Error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter-globals-subset.test.js","sourceRoot":"","sources":["../../src/invariants/emitter-globals-subset.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAG;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAEjC,oDAAoD;IACpD,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAEnC,oDAAoD;IACpD,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAEvC,4DAA4D;IAC5D,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;CAC1B,CAAC;AAEX;;;GAGG;AACH,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"emitter-globals-subset.test.js","sourceRoot":"","sources":["../../src/invariants/emitter-globals-subset.test.ts"],"names":[],"mappings":"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"}
|