semantifold 0.3.0 → 0.4.0
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/README.md +58 -15
- package/build/index.d.ts +48 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +57 -8
- package/build/src/artifact-path.d.ts +23 -1
- package/build/src/artifact-path.d.ts.map +1 -1
- package/build/src/artifact-path.js +45 -3
- package/build/src/artifacts.d.ts.map +1 -1
- package/build/src/artifacts.js +66 -1
- package/build/src/backends/c-validation.d.ts.map +1 -1
- package/build/src/backends/c-validation.js +7 -3
- package/build/src/backends/cpp-validation.d.ts.map +1 -1
- package/build/src/backends/cpp-validation.js +7 -3
- package/build/src/backends/csharp.js +7 -1
- package/build/src/backends/dart-runtime.d.ts +2 -0
- package/build/src/backends/dart-runtime.d.ts.map +1 -0
- package/build/src/backends/dart-runtime.js +41 -0
- package/build/src/backends/dart.d.ts +20 -0
- package/build/src/backends/dart.d.ts.map +1 -0
- package/build/src/backends/dart.js +321 -0
- package/build/src/backends/effects.d.ts +60 -0
- package/build/src/backends/effects.d.ts.map +1 -0
- package/build/src/backends/effects.js +746 -0
- package/build/src/backends/go.js +18 -4
- package/build/src/backends/identifiers.d.ts +36 -4
- package/build/src/backends/identifiers.d.ts.map +1 -1
- package/build/src/backends/identifiers.js +154 -10
- package/build/src/backends/index.d.ts.map +1 -1
- package/build/src/backends/index.js +27 -4
- package/build/src/backends/ios.d.ts +68 -0
- package/build/src/backends/ios.d.ts.map +1 -0
- package/build/src/backends/ios.js +1503 -0
- package/build/src/backends/java.d.ts.map +1 -1
- package/build/src/backends/java.js +429 -36
- package/build/src/backends/javascript.d.ts +6 -0
- package/build/src/backends/javascript.d.ts.map +1 -1
- package/build/src/backends/javascript.js +380 -24
- package/build/src/backends/kotlin-runtime.d.ts +3 -0
- package/build/src/backends/kotlin-runtime.d.ts.map +1 -0
- package/build/src/backends/kotlin-runtime.js +29 -0
- package/build/src/backends/kotlin.d.ts +23 -0
- package/build/src/backends/kotlin.d.ts.map +1 -0
- package/build/src/backends/kotlin.js +136 -0
- package/build/src/backends/native-validation.d.ts +2 -2
- package/build/src/backends/native-validation.d.ts.map +1 -1
- package/build/src/backends/native-validation.js +2 -2
- package/build/src/backends/ordered-expressions.d.ts.map +1 -1
- package/build/src/backends/ordered-expressions.js +39 -7
- package/build/src/backends/php-stdlib-support.d.ts +19 -0
- package/build/src/backends/php-stdlib-support.d.ts.map +1 -0
- package/build/src/backends/php-stdlib-support.js +227 -0
- package/build/src/backends/php.d.ts.map +1 -1
- package/build/src/backends/php.js +448 -33
- package/build/src/backends/program.d.ts +81 -0
- package/build/src/backends/program.d.ts.map +1 -0
- package/build/src/backends/program.js +1308 -0
- package/build/src/backends/python.js +7 -1
- package/build/src/backends/ruby.d.ts.map +1 -1
- package/build/src/backends/ruby.js +310 -24
- package/build/src/backends/rust-runtime.d.ts +7 -0
- package/build/src/backends/rust-runtime.d.ts.map +1 -0
- package/build/src/backends/rust-runtime.js +32 -0
- package/build/src/backends/rust-validation.d.ts +9 -0
- package/build/src/backends/rust-validation.d.ts.map +1 -0
- package/build/src/backends/rust-validation.js +78 -0
- package/build/src/backends/rust.d.ts +24 -0
- package/build/src/backends/rust.d.ts.map +1 -0
- package/build/src/backends/rust.js +344 -0
- package/build/src/backends/scalars.d.ts +14 -6
- package/build/src/backends/scalars.d.ts.map +1 -1
- package/build/src/backends/scalars.js +167 -17
- package/build/src/backends/shared.d.ts +23 -4
- package/build/src/backends/shared.d.ts.map +1 -1
- package/build/src/backends/shared.js +2158 -62
- package/build/src/backends/stdlib-support.d.ts +14 -0
- package/build/src/backends/stdlib-support.d.ts.map +1 -0
- package/build/src/backends/stdlib-support.js +237 -0
- package/build/src/backends/swift-runtime.d.ts +3 -0
- package/build/src/backends/swift-runtime.d.ts.map +1 -0
- package/build/src/backends/swift-runtime.js +14 -0
- package/build/src/backends/swift.d.ts +8 -0
- package/build/src/backends/swift.d.ts.map +1 -0
- package/build/src/backends/swift.js +127 -0
- package/build/src/backends/typescript.d.ts.map +1 -1
- package/build/src/backends/typescript.js +344 -24
- package/build/src/backends/wasm.d.ts +43 -0
- package/build/src/backends/wasm.d.ts.map +1 -0
- package/build/src/backends/wasm.js +2164 -0
- package/build/src/backends/writer.d.ts +235 -4
- package/build/src/backends/writer.d.ts.map +1 -1
- package/build/src/backends/writer.js +468 -3
- package/build/src/diagnostic.d.ts +4 -3
- package/build/src/diagnostic.d.ts.map +1 -1
- package/build/src/diagnostic.js +5 -3
- package/build/src/frontends/c.d.ts.map +1 -1
- package/build/src/frontends/c.js +5 -3
- package/build/src/frontends/cpp.d.ts.map +1 -1
- package/build/src/frontends/cpp.js +5 -3
- package/build/src/frontends/csharp.d.ts.map +1 -1
- package/build/src/frontends/csharp.js +7 -3
- package/build/src/frontends/dart.d.ts +10 -0
- package/build/src/frontends/dart.d.ts.map +1 -0
- package/build/src/frontends/dart.js +913 -0
- package/build/src/frontends/index.d.ts +3 -1
- package/build/src/frontends/index.d.ts.map +1 -1
- package/build/src/frontends/index.js +15 -5
- package/build/src/frontends/java.d.ts +110 -1
- package/build/src/frontends/java.d.ts.map +1 -1
- package/build/src/frontends/java.js +1725 -70
- package/build/src/frontends/javascript-typescript.d.ts +69 -1
- package/build/src/frontends/javascript-typescript.d.ts.map +1 -1
- package/build/src/frontends/javascript-typescript.js +1825 -93
- package/build/src/frontends/kotlin.d.ts +10 -0
- package/build/src/frontends/kotlin.d.ts.map +1 -0
- package/build/src/frontends/kotlin.js +685 -0
- package/build/src/frontends/php.d.ts +118 -1
- package/build/src/frontends/php.d.ts.map +1 -1
- package/build/src/frontends/php.js +1583 -76
- package/build/src/frontends/program.d.ts +74 -0
- package/build/src/frontends/program.d.ts.map +1 -0
- package/build/src/frontends/program.js +989 -0
- package/build/src/frontends/ruby.d.ts +68 -1
- package/build/src/frontends/ruby.d.ts.map +1 -1
- package/build/src/frontends/ruby.js +1446 -101
- package/build/src/frontends/rust-parser.d.ts +11 -0
- package/build/src/frontends/rust-parser.d.ts.map +1 -0
- package/build/src/frontends/rust-parser.js +15 -0
- package/build/src/frontends/rust.d.ts +14 -0
- package/build/src/frontends/rust.d.ts.map +1 -0
- package/build/src/frontends/rust.js +715 -0
- package/build/src/frontends/scalars.d.ts +10 -0
- package/build/src/frontends/scalars.d.ts.map +1 -1
- package/build/src/frontends/scalars.js +28 -2
- package/build/src/frontends/swift.d.ts +10 -0
- package/build/src/frontends/swift.d.ts.map +1 -0
- package/build/src/frontends/swift.js +860 -0
- package/build/src/frontends/types.d.ts +186 -0
- package/build/src/frontends/types.d.ts.map +1 -0
- package/build/src/frontends/types.js +634 -0
- package/build/src/language-registry.d.ts +46 -4
- package/build/src/language-registry.d.ts.map +1 -1
- package/build/src/language-registry.js +167 -13
- package/build/src/mapping.d.ts +2 -2
- package/build/src/mapping.d.ts.map +1 -1
- package/build/src/mapping.js +31 -10
- package/build/src/semantic/capabilities.d.ts +66 -0
- package/build/src/semantic/capabilities.d.ts.map +1 -0
- package/build/src/semantic/capabilities.js +649 -0
- package/build/src/semantic/effects.d.ts +26 -0
- package/build/src/semantic/effects.d.ts.map +1 -0
- package/build/src/semantic/effects.js +764 -0
- package/build/src/semantic/generics.d.ts +23 -0
- package/build/src/semantic/generics.d.ts.map +1 -0
- package/build/src/semantic/generics.js +61 -0
- package/build/src/semantic/lifetime.d.ts +37 -0
- package/build/src/semantic/lifetime.d.ts.map +1 -0
- package/build/src/semantic/lifetime.js +527 -0
- package/build/src/semantic/provenance.d.ts +9 -2
- package/build/src/semantic/provenance.d.ts.map +1 -1
- package/build/src/semantic/provenance.js +462 -20
- package/build/src/semantic/scalars.d.ts +11 -0
- package/build/src/semantic/scalars.d.ts.map +1 -1
- package/build/src/semantic/scalars.js +16 -1
- package/build/src/semantic/stdlib.d.ts +254 -0
- package/build/src/semantic/stdlib.d.ts.map +1 -0
- package/build/src/semantic/stdlib.js +880 -0
- package/build/src/semantic/types.d.ts +2952 -202
- package/build/src/semantic/types.d.ts.map +1 -1
- package/build/src/semantic/types.js +688 -15
- package/build/src/semantic/validate.d.ts +85 -5
- package/build/src/semantic/validate.d.ts.map +1 -1
- package/build/src/semantic/validate.js +2576 -98
- package/build/src/stdlib-facades.d.ts +304 -0
- package/build/src/stdlib-facades.d.ts.map +1 -0
- package/build/src/stdlib-facades.js +1167 -0
- package/build/src/stdlib-negotiation.d.ts +69 -0
- package/build/src/stdlib-negotiation.d.ts.map +1 -0
- package/build/src/stdlib-negotiation.js +403 -0
- package/build/src/stdlib-providers.d.ts +72 -0
- package/build/src/stdlib-providers.d.ts.map +1 -0
- package/build/src/stdlib-providers.js +339 -0
- package/build/src/toolchains.d.ts +55 -1
- package/build/src/toolchains.d.ts.map +1 -1
- package/build/src/toolchains.js +15 -4
- package/docs/architecture.md +45 -13
- package/docs/dart.md +60 -0
- package/docs/goals.md +3 -3
- package/docs/ios.md +121 -0
- package/docs/kotlin.md +42 -0
- package/docs/language-support.md +231 -26
- package/docs/multi-file-modules.md +52 -0
- package/docs/parser-qualification.md +121 -8
- package/docs/plans/2026-09-05-standard-library-portability.md +10 -10
- package/docs/rust.md +88 -0
- package/docs/source-maps.md +15 -7
- package/docs/standard-library-portability.md +39 -8
- package/docs/swift.md +44 -0
- package/docs/testing.md +366 -4
- package/docs/webassembly.md +52 -0
- package/index.js +63 -8
- package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +2 -2
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/README.md +45 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/binding.gyp +30 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/binding.cc +20 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/binding_test.js +9 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/index.d.ts +28 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/index.js +11 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/grammar.js +1630 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/package.json +64 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/darwin-arm64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/darwin-x64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/linux-arm64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/linux-x64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/win32-arm64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/win32-x64/tree-sitter-rust.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/highlights.scm +159 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/injections.scm +9 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/tags.scm +60 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/grammar.json +9405 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/node-types.json +5399 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/parser.c +192569 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/scanner.c +393 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/alloc.h +54 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/array.h +290 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/tree-sitter-rust.wasm +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/tree-sitter.json +53 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +3 -2
- package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +5 -4
- package/package.json +5 -2
- package/src/artifact-path.js +47 -2
- package/src/artifacts.js +67 -0
- package/src/backends/c-validation.js +6 -1
- package/src/backends/cpp-validation.js +6 -1
- package/src/backends/csharp.js +3 -0
- package/src/backends/dart-runtime.js +41 -0
- package/src/backends/dart.js +326 -0
- package/src/backends/effects.js +705 -0
- package/src/backends/go.js +14 -2
- package/src/backends/identifiers.js +160 -9
- package/src/backends/index.js +27 -2
- package/src/backends/ios.js +1612 -0
- package/src/backends/java.js +454 -36
- package/src/backends/javascript.js +389 -23
- package/src/backends/kotlin-runtime.js +29 -0
- package/src/backends/kotlin.js +141 -0
- package/src/backends/native-validation.js +1 -1
- package/src/backends/ordered-expressions.js +40 -6
- package/src/backends/php-stdlib-support.js +239 -0
- package/src/backends/php.js +469 -32
- package/src/backends/program.js +1407 -0
- package/src/backends/python.js +3 -0
- package/src/backends/ruby.js +326 -23
- package/src/backends/rust-runtime.js +34 -0
- package/src/backends/rust-validation.js +75 -0
- package/src/backends/rust.js +335 -0
- package/src/backends/scalars.js +141 -16
- package/src/backends/shared.js +2304 -124
- package/src/backends/stdlib-support.js +234 -0
- package/src/backends/swift-runtime.js +14 -0
- package/src/backends/swift.js +132 -0
- package/src/backends/typescript.js +349 -23
- package/src/backends/wasm.js +2208 -0
- package/src/backends/writer.js +520 -2
- package/src/diagnostic.js +4 -2
- package/src/frontends/c.js +4 -2
- package/src/frontends/cpp.js +4 -2
- package/src/frontends/csharp.js +4 -2
- package/src/frontends/dart.js +963 -0
- package/src/frontends/index.js +14 -4
- package/src/frontends/java.js +1977 -69
- package/src/frontends/javascript-typescript.js +2046 -102
- package/src/frontends/kotlin.js +713 -0
- package/src/frontends/php.js +1725 -79
- package/src/frontends/program.js +1062 -0
- package/src/frontends/ruby.js +1624 -98
- package/src/frontends/rust-parser.js +18 -0
- package/src/frontends/rust.js +714 -0
- package/src/frontends/scalars.js +31 -1
- package/src/frontends/swift.js +893 -0
- package/src/frontends/types.js +750 -0
- package/src/language-registry.js +172 -12
- package/src/mapping.js +33 -9
- package/src/semantic/capabilities.js +671 -0
- package/src/semantic/effects.js +737 -0
- package/src/semantic/generics.js +58 -0
- package/src/semantic/lifetime.js +517 -0
- package/src/semantic/provenance.js +412 -19
- package/src/semantic/scalars.js +17 -0
- package/src/semantic/stdlib.js +921 -0
- package/src/semantic/types.js +765 -14
- package/src/semantic/validate.js +2934 -209
- package/src/stdlib-facades.js +1211 -0
- package/src/stdlib-negotiation.js +446 -0
- package/src/stdlib-providers.js +377 -0
- package/src/toolchains.js +16 -3
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Emits one target-language scalar type spelling.
|
|
3
|
-
* @param {import("../semantic/types.js").
|
|
4
|
-
* @param {import("../semantic/types.js").
|
|
2
|
+
* Emits one target-language scalar or function-return type spelling.
|
|
3
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
4
|
+
* @param {import("../semantic/types.js").SemanticFunctionReturnType} type - Semantic type.
|
|
5
5
|
* @returns {string} Target type spelling.
|
|
6
6
|
*/
|
|
7
|
-
export declare function emitScalarType(language: import("../semantic/types.js").
|
|
7
|
+
export declare function emitScalarType(language: import("../semantic/types.js").TextBackendLanguage, type: import("../semantic/types.js").SemanticFunctionReturnType): string;
|
|
8
|
+
/**
|
|
9
|
+
* Emits one recursively parameterized semantic type for the Task 006 cohort.
|
|
10
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
11
|
+
* @param {import("../semantic/types.js").SemanticFunctionReturnType} type - Semantic type.
|
|
12
|
+
* @param {boolean} [javaBoxed] - Whether Java scalar arguments require boxed spellings.
|
|
13
|
+
* @returns {string} Exact target spelling.
|
|
14
|
+
*/
|
|
15
|
+
export declare function emitSemanticType(language: import("../semantic/types.js").TextBackendLanguage, type: import("../semantic/types.js").SemanticFunctionReturnType, javaBoxed?: boolean): string;
|
|
8
16
|
/**
|
|
9
17
|
* Emits a safely escaped target-language string literal.
|
|
10
|
-
* @param {import("../semantic/types.js").
|
|
18
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
11
19
|
* @param {string} value - Valid Unicode scalar string.
|
|
12
20
|
* @returns {string} Target string literal.
|
|
13
21
|
*/
|
|
14
|
-
export declare function emitStringLiteral(language: import("../semantic/types.js").
|
|
22
|
+
export declare function emitStringLiteral(language: import("../semantic/types.js").TextBackendLanguage, value: string): string;
|
|
15
23
|
//# sourceMappingURL=scalars.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../../../src/backends/scalars.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../../../src/backends/scalars.js"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAJ5B,OAAO,sBAAsB,EAAE,mBAIH,EAAE,IAAI,EAHlC,OAAO,sBAAsB,EAAE,0BAGG,GAFhC,MAAM,CAIlB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAL9B,OAAO,sBAAsB,EAAE,mBAKD,EAAE,IAAI,EAJpC,OAAO,sBAAsB,EAAE,0BAIK,EAAE,SAAS,AAHvD,CACA,EADQ,OAGuD,GAFrD,MAAM,CAmClB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAJ/B,OAAO,sBAAsB,EAAE,mBAIA,EAAE,KAAK,EAHtC,MAGsC,GAFpC,MAAM,CAiBlB"}
|
|
@@ -1,45 +1,165 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
-
/** @type {Readonly<Record<import("../semantic/types.js").
|
|
2
|
+
/** @type {Readonly<Record<import("../semantic/types.js").TextBackendLanguage, Readonly<Record<import("../semantic/types.js").FunctionReturnTypeName, string>>>>} */
|
|
3
3
|
const targetScalarTypes = Object.freeze({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
dart: Object.freeze({ boolean: "bool", integer: "int", string: "String", void: "void" }),
|
|
5
|
+
swift: Object.freeze({ boolean: "Bool", integer: "Int64", string: "String", void: "Void" }),
|
|
6
|
+
rust: Object.freeze({ boolean: "bool", integer: "i64", string: "String", void: "()" }),
|
|
7
|
+
cpp: Object.freeze({ boolean: "bool", integer: "std::int64_t", string: "std::string", void: "void" }),
|
|
8
|
+
c: Object.freeze({ boolean: "bool", integer: "int64_t", string: "SemantifoldString", void: "void" }),
|
|
9
|
+
csharp: Object.freeze({ boolean: "bool", integer: "long", string: "string", void: "void" }),
|
|
10
|
+
go: Object.freeze({ boolean: "bool", integer: "int64", string: "string", void: "void" }),
|
|
11
|
+
java: Object.freeze({ boolean: "boolean", integer: "int", string: "String", void: "void" }),
|
|
12
|
+
kotlin: Object.freeze({ boolean: "Boolean", integer: "Long", string: "String", void: "Unit" }),
|
|
13
|
+
javascript: Object.freeze({ boolean: "boolean", integer: "number", string: "string", void: "void" }),
|
|
14
|
+
php: Object.freeze({ boolean: "bool", integer: "int", string: "string", void: "void" }),
|
|
15
|
+
python: Object.freeze({ boolean: "bool", integer: "int", string: "str", void: "None" }),
|
|
16
|
+
ruby: Object.freeze({ boolean: "bool", integer: "Integer", string: "String", void: "void" }),
|
|
17
|
+
typescript: Object.freeze({ boolean: "boolean", integer: "number", string: "string", void: "void" })
|
|
14
18
|
});
|
|
15
19
|
/**
|
|
16
|
-
* Emits one target-language scalar type spelling.
|
|
17
|
-
* @param {import("../semantic/types.js").
|
|
18
|
-
* @param {import("../semantic/types.js").
|
|
20
|
+
* Emits one target-language scalar or function-return type spelling.
|
|
21
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
22
|
+
* @param {import("../semantic/types.js").SemanticFunctionReturnType} type - Semantic type.
|
|
19
23
|
* @returns {string} Target type spelling.
|
|
20
24
|
*/
|
|
21
25
|
export function emitScalarType(language, type) {
|
|
22
|
-
return targetScalarTypes[language][type.name];
|
|
26
|
+
return type.kind == "TypeReference" ? targetScalarTypes[language][type.name] : "";
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Emits one recursively parameterized semantic type for the Task 006 cohort.
|
|
30
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
31
|
+
* @param {import("../semantic/types.js").SemanticFunctionReturnType} type - Semantic type.
|
|
32
|
+
* @param {boolean} [javaBoxed] - Whether Java scalar arguments require boxed spellings.
|
|
33
|
+
* @returns {string} Exact target spelling.
|
|
34
|
+
*/
|
|
35
|
+
export function emitSemanticType(language, type, javaBoxed = false) {
|
|
36
|
+
if (type.kind == "RecordType" || type.kind == "ReferenceType") {
|
|
37
|
+
throw new TypeError("Nominal type emission requires declaration context.");
|
|
38
|
+
}
|
|
39
|
+
if (type.kind == "OwnedResourceType" || type.kind == "OwnedReferenceType") {
|
|
40
|
+
throw new TypeError("Owned type emission requires declaration context.");
|
|
41
|
+
}
|
|
42
|
+
if (type.kind == "TypeVariableReference")
|
|
43
|
+
throw new TypeError("Type-variable emission requires declaration context.");
|
|
44
|
+
if (type.kind == "OptionalType")
|
|
45
|
+
throw new TypeError("Optional type emission requires target-specific context.");
|
|
46
|
+
if (type.kind == "TypeReference") {
|
|
47
|
+
if (language == "java" && javaBoxed) {
|
|
48
|
+
return type.name == "integer" ? "Integer" : type.name == "boolean" ? "Boolean" : type.name == "string" ? "String" : "void";
|
|
49
|
+
}
|
|
50
|
+
return emitScalarType(language, type);
|
|
51
|
+
}
|
|
52
|
+
const element = type.kind == "ListType" ? type.elementType : type.valueType;
|
|
53
|
+
const nested = emitSemanticType(language, element, language == "java");
|
|
54
|
+
if (type.kind == "ListType") {
|
|
55
|
+
if (language == "ruby")
|
|
56
|
+
return `Array[${nested}]`;
|
|
57
|
+
if (language == "php")
|
|
58
|
+
return `list<${nested}>`;
|
|
59
|
+
if (language == "javascript" || language == "typescript")
|
|
60
|
+
return `ReadonlyArray<${nested}>`;
|
|
61
|
+
if (language == "java")
|
|
62
|
+
return `java.util.List<${nested}>`;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
if (language == "ruby")
|
|
66
|
+
return `Hash[String,${nested}]`;
|
|
67
|
+
if (language == "php")
|
|
68
|
+
return `array<string,${nested}>`;
|
|
69
|
+
if (language == "javascript" || language == "typescript")
|
|
70
|
+
return `ReadonlyMap<string, ${nested}>`;
|
|
71
|
+
if (language == "java")
|
|
72
|
+
return `java.util.Map<String,${nested}>`;
|
|
73
|
+
}
|
|
74
|
+
return "";
|
|
23
75
|
}
|
|
24
76
|
/**
|
|
25
77
|
* Emits a safely escaped target-language string literal.
|
|
26
|
-
* @param {import("../semantic/types.js").
|
|
78
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
27
79
|
* @param {string} value - Valid Unicode scalar string.
|
|
28
80
|
* @returns {string} Target string literal.
|
|
29
81
|
*/
|
|
30
82
|
export function emitStringLiteral(language, value) {
|
|
83
|
+
if (language == "dart")
|
|
84
|
+
return emitDartString(value);
|
|
85
|
+
if (language == "swift")
|
|
86
|
+
return emitSwiftString(value);
|
|
31
87
|
if (language == "php")
|
|
32
88
|
return emitPhpString(value);
|
|
33
89
|
if (language == "ruby")
|
|
34
90
|
return emitRubyString(value);
|
|
35
91
|
if (language == "java")
|
|
36
92
|
return emitJavaString(value);
|
|
93
|
+
if (language == "kotlin")
|
|
94
|
+
return emitKotlinString(value);
|
|
37
95
|
const literal = JSON.stringify(value);
|
|
38
96
|
if (typeof literal != "string")
|
|
39
97
|
throw new TypeError("A validated semantic string did not serialize.");
|
|
40
98
|
const escapedLineSeparators = literal.replaceAll("\u2028", "\\u2028").replaceAll("\u2029", "\\u2029");
|
|
41
99
|
return language == "csharp" ? escapedLineSeparators.replaceAll("\u0085", "\\u0085") : escapedLineSeparators;
|
|
42
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Emits an ordinary noninterpolated Dart string.
|
|
103
|
+
* @param {string} value Valid Unicode scalar string.
|
|
104
|
+
* @returns {string} Dart string literal.
|
|
105
|
+
*/
|
|
106
|
+
function emitDartString(value) {
|
|
107
|
+
let emitted = "\"";
|
|
108
|
+
for (const character of value) {
|
|
109
|
+
const codePoint = /** @type {number} */ (character.codePointAt(0));
|
|
110
|
+
if (character == "\"")
|
|
111
|
+
emitted += "\\\"";
|
|
112
|
+
else if (character == "\\")
|
|
113
|
+
emitted += "\\\\";
|
|
114
|
+
else if (character == "$")
|
|
115
|
+
emitted += "\\$";
|
|
116
|
+
else if (character == "\n")
|
|
117
|
+
emitted += "\\n";
|
|
118
|
+
else if (character == "\r")
|
|
119
|
+
emitted += "\\r";
|
|
120
|
+
else if (character == "\t")
|
|
121
|
+
emitted += "\\t";
|
|
122
|
+
else if (character == "\b")
|
|
123
|
+
emitted += "\\b";
|
|
124
|
+
else if (character == "\f")
|
|
125
|
+
emitted += "\\f";
|
|
126
|
+
else if (character == "\v")
|
|
127
|
+
emitted += "\\v";
|
|
128
|
+
else if (codePoint < 32 || codePoint == 127 || codePoint == 0x85 || codePoint == 0x2028 || codePoint == 0x2029) {
|
|
129
|
+
emitted += `\\u{${codePoint.toString(16)}}`;
|
|
130
|
+
}
|
|
131
|
+
else
|
|
132
|
+
emitted += character;
|
|
133
|
+
}
|
|
134
|
+
return `${emitted}"`;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Emits one noninterpolated Swift string over Unicode scalar values.
|
|
138
|
+
* @param {string} value - Valid Unicode scalar string.
|
|
139
|
+
* @returns {string} Swift string literal.
|
|
140
|
+
*/
|
|
141
|
+
function emitSwiftString(value) {
|
|
142
|
+
let emitted = "\"";
|
|
143
|
+
for (const character of value) {
|
|
144
|
+
const codePoint = /** @type {number} */ (character.codePointAt(0));
|
|
145
|
+
if (character == "\"")
|
|
146
|
+
emitted += "\\\"";
|
|
147
|
+
else if (character == "\\")
|
|
148
|
+
emitted += "\\\\";
|
|
149
|
+
else if (character == "\n")
|
|
150
|
+
emitted += "\\n";
|
|
151
|
+
else if (character == "\r")
|
|
152
|
+
emitted += "\\r";
|
|
153
|
+
else if (character == "\t")
|
|
154
|
+
emitted += "\\t";
|
|
155
|
+
else if (codePoint < 32 || codePoint == 127 || codePoint == 0x85 || codePoint == 0x2028 || codePoint == 0x2029) {
|
|
156
|
+
emitted += `\\u{${codePoint.toString(16)}}`;
|
|
157
|
+
}
|
|
158
|
+
else
|
|
159
|
+
emitted += character;
|
|
160
|
+
}
|
|
161
|
+
return `${emitted}"`;
|
|
162
|
+
}
|
|
43
163
|
/**
|
|
44
164
|
* Emits a PHP double-quoted string while preventing interpolation.
|
|
45
165
|
* @param {string} value - Valid Unicode scalar string.
|
|
@@ -141,4 +261,34 @@ function emitJavaString(value) {
|
|
|
141
261
|
}
|
|
142
262
|
return `${emitted}"`;
|
|
143
263
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kcy9zY2FsYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWiwySkFBMko7QUFDM0osTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUMsQ0FBQztJQUNyRixDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQztJQUNwRixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUM7SUFDM0UsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQyxDQUFDO0lBQ3hFLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsQ0FBQztJQUMzRSxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUM7SUFDcEYsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVB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TyxHQUFHLE9BQU8sR0FBRyxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEB0eXBlIHtSZWFkb25seTxSZWNvcmQ8aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZSwgUmVhZG9ubHk8UmVjb3JkPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljVHlwZU5hbWUsIHN0cmluZz4+Pj59ICovXG5jb25zdCB0YXJnZXRTY2FsYXJUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuICBjcHA6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcInN0ZDo6aW50NjRfdFwiLCBzdHJpbmc6IFwic3RkOjpzdHJpbmdcIn0pLFxuICBjOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJpbnQ2NF90XCIsIHN0cmluZzogXCJTZW1hbnRpZm9sZFN0cmluZ1wifSksXG4gIGNzaGFycDogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sXCIsIGludGVnZXI6IFwibG9uZ1wiLCBzdHJpbmc6IFwic3RyaW5nXCJ9KSxcbiAgZ286IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludDY0XCIsIHN0cmluZzogXCJzdHJpbmdcIn0pLFxuICBqYXZhOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xlYW5cIiwgaW50ZWdlcjogXCJpbnRcIiwgc3RyaW5nOiBcIlN0cmluZ1wifSksXG4gIGphdmFzY3JpcHQ6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbGVhblwiLCBpbnRlZ2VyOiBcIm51bWJlclwiLCBzdHJpbmc6IFwic3RyaW5nXCJ9KSxcbiAgcGhwOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJpbnRcIiwgc3RyaW5nOiBcInN0cmluZ1wifSksXG4gIHB5dGhvbjogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sXCIsIGludGVnZXI6IFwiaW50XCIsIHN0cmluZzogXCJzdHJcIn0pLFxuICBydWJ5OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJJbnRlZ2VyXCIsIHN0cmluZzogXCJTdHJpbmdcIn0pLFxuICB0eXBlc2NyaXB0OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xlYW5cIiwgaW50ZWdlcjogXCJudW1iZXJcIiwgc3RyaW5nOiBcInN0cmluZ1wifSlcbn0pXG5cbi8qKlxuICogRW1pdHMgb25lIHRhcmdldC1sYW5ndWFnZSBzY2FsYXIgdHlwZSBzcGVsbGluZy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlR5cGVSZWZlcmVuY2V9IHR5cGUgLSBTZW1hbnRpYyBzY2FsYXIgdHlwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRhcmdldCB0eXBlIHNwZWxsaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdFNjYWxhclR5cGUobGFuZ3VhZ2UsIHR5cGUpIHtcbiAgcmV0dXJuIHRhcmdldFNjYWxhclR5cGVzW2xhbmd1YWdlXVt0eXBlLm5hbWVdXG59XG5cbi8qKlxuICogRW1pdHMgYSBzYWZlbHkgZXNjYXBlZCB0YXJnZXQtbGFuZ3VhZ2Ugc3RyaW5nIGxpdGVyYWwuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gVGFyZ2V0IHN0cmluZyBsaXRlcmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdFN0cmluZ0xpdGVyYWwobGFuZ3VhZ2UsIHZhbHVlKSB7XG4gIGlmIChsYW5ndWFnZSA9PSBcInBocFwiKSByZXR1cm4gZW1pdFBocFN0cmluZyh2YWx1ZSlcbiAgaWYgKGxhbmd1YWdlID09IFwicnVieVwiKSByZXR1cm4gZW1pdFJ1YnlTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcImphdmFcIikgcmV0dXJuIGVtaXRKYXZhU3RyaW5nKHZhbHVlKVxuXG4gIGNvbnN0IGxpdGVyYWwgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcblxuICBpZiAodHlwZW9mIGxpdGVyYWwgIT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkEgdmFsaWRhdGVkIHNlbWFudGljIHN0cmluZyBkaWQgbm90IHNlcmlhbGl6ZS5cIilcblxuICBjb25zdCBlc2NhcGVkTGluZVNlcGFyYXRvcnMgPSBsaXRlcmFsLnJlcGxhY2VBbGwoXCJcXHUyMDI4XCIsIFwiXFxcXHUyMDI4XCIpLnJlcGxhY2VBbGwoXCJcXHUyMDI5XCIsIFwiXFxcXHUyMDI5XCIpXG5cbiAgcmV0dXJuIGxhbmd1YWdlID09IFwiY3NoYXJwXCIgPyBlc2NhcGVkTGluZVNlcGFyYXRvcnMucmVwbGFjZUFsbChcIlxcdTAwODVcIiwgXCJcXFxcdTAwODVcIikgOiBlc2NhcGVkTGluZVNlcGFyYXRvcnNcbn1cblxuLyoqXG4gKiBFbWl0cyBhIFBIUCBkb3VibGUtcXVvdGVkIHN0cmluZyB3aGlsZSBwcmV2ZW50aW5nIGludGVycG9sYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBQSFAgc3RyaW5nIGxpdGVyYWwuXG4gKi9cbmZ1bmN0aW9uIGVtaXRQaHBTdHJpbmcodmFsdWUpIHtcbiAgbGV0IGVtaXR0ZWQgPSBcIlxcXCJcIlxuXG4gIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZVBvaW50ID0gY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApXG5cbiAgICBpZiAoY2hhcmFjdGVyID09IFwiXFxcIlwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXCJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcXFxcIikgZW1pdHRlZCArPSBcIlxcXFxcXFxcXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCIkXCIpIGVtaXR0ZWQgKz0gXCJcXFxcJFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxmXCIpIGVtaXR0ZWQgKz0gXCJcXFxcZlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx2XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdlwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50ID09IDI3KSBlbWl0dGVkICs9IFwiXFxcXGVcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCAhPT0gdW5kZWZpbmVkICYmIChjb2RlUG9pbnQgPCAzMiB8fCBjb2RlUG9pbnQgPT0gMTI3KSkge1xuICAgICAgZW1pdHRlZCArPSBgXFxcXHgke2NvZGVQb2ludC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpfWBcbiAgICB9IGVsc2UgZW1pdHRlZCArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIHJldHVybiBgJHtlbWl0dGVkfVwiYFxufVxuXG4vKipcbiAqIEVtaXRzIGEgUnVieSBkb3VibGUtcXVvdGVkIHN0cmluZyB3aGlsZSBwcmV2ZW50aW5nIGludGVycG9sYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSdWJ5IHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0UnVieVN0cmluZyh2YWx1ZSkge1xuICBsZXQgZW1pdHRlZCA9IFwiXFxcIlwiXG5cbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSBjaGFyYWN0ZXIuY29kZVBvaW50QXQoMClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFwiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcIlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxcXFwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXFxcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIiNcIikgZW1pdHRlZCArPSBcIlxcXFwjXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXG5cIikgZW1pdHRlZCArPSBcIlxcXFxuXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHJcIikgZW1pdHRlZCArPSBcIlxcXFxyXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHRcIikgZW1pdHRlZCArPSBcIlxcXFx0XCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGZcIikgZW1pdHRlZCArPSBcIlxcXFxmXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHZcIikgZW1pdHRlZCArPSBcIlxcXFx2XCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgPT0gMjcpIGVtaXR0ZWQgKz0gXCJcXFxcZVwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50ICE9PSB1bmRlZmluZWQgJiYgKGNvZGVQb2ludCA8IDMyIHx8IGNvZGVQb2ludCA9PSAxMjcpKSB7XG4gICAgICBlbWl0dGVkICs9IGBcXFxcdXske2NvZGVQb2ludC50b1N0cmluZygxNil9fWBcbiAgICB9IGVsc2UgZW1pdHRlZCArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIHJldHVybiBgJHtlbWl0dGVkfVwiYFxufVxuXG4vKipcbiAqIEVtaXRzIGEgSmF2YSBzdHJpbmcgdXNpbmcgc3RhbmRhcmQgb3IgZml4ZWQtd2lkdGggb2N0YWwgY29udHJvbCBlc2NhcGVzLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gSmF2YSBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdEphdmFTdHJpbmcodmFsdWUpIHtcbiAgbGV0IGVtaXR0ZWQgPSBcIlxcXCJcIlxuXG4gIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZVBvaW50ID0gY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApXG5cbiAgICBpZiAoY2hhcmFjdGVyID09IFwiXFxcIlwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXCJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcXFxcIikgZW1pdHRlZCArPSBcIlxcXFxcXFxcXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGJcIikgZW1pdHRlZCArPSBcIlxcXFxiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHRcIikgZW1pdHRlZCArPSBcIlxcXFx0XCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXG5cIikgZW1pdHRlZCArPSBcIlxcXFxuXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGZcIikgZW1pdHRlZCArPSBcIlxcXFxmXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHJcIikgZW1pdHRlZCArPSBcIlxcXFxyXCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgIT09IHVuZGVmaW5lZCAmJiAoY29kZVBvaW50IDwgMzIgfHwgY29kZVBvaW50ID09IDEyNykpIHtcbiAgICAgIGVtaXR0ZWQgKz0gYFxcXFwke2NvZGVQb2ludC50b1N0cmluZyg4KS5wYWRTdGFydCgzLCBcIjBcIil9YFxuICAgIH0gZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG4iXX0=
|
|
264
|
+
/**
|
|
265
|
+
* Emits an ordinary noninterpolated Kotlin string over Unicode scalar values.
|
|
266
|
+
* @param {string} value - Valid Unicode scalar string.
|
|
267
|
+
* @returns {string} Kotlin string literal.
|
|
268
|
+
*/
|
|
269
|
+
function emitKotlinString(value) {
|
|
270
|
+
let emitted = "\"";
|
|
271
|
+
for (const character of value) {
|
|
272
|
+
const codePoint = /** @type {number} */ (character.codePointAt(0));
|
|
273
|
+
if (character == "\"")
|
|
274
|
+
emitted += "\\\"";
|
|
275
|
+
else if (character == "\\")
|
|
276
|
+
emitted += "\\\\";
|
|
277
|
+
else if (character == "$")
|
|
278
|
+
emitted += "\\$";
|
|
279
|
+
else if (character == "\b")
|
|
280
|
+
emitted += "\\b";
|
|
281
|
+
else if (character == "\t")
|
|
282
|
+
emitted += "\\t";
|
|
283
|
+
else if (character == "\n")
|
|
284
|
+
emitted += "\\n";
|
|
285
|
+
else if (character == "\r")
|
|
286
|
+
emitted += "\\r";
|
|
287
|
+
else if (codePoint < 32 || codePoint == 127)
|
|
288
|
+
emitted += `\\u${codePoint.toString(16).padStart(4, "0")}`;
|
|
289
|
+
else
|
|
290
|
+
emitted += character;
|
|
291
|
+
}
|
|
292
|
+
return `${emitted}"`;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kcy9zY2FsYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixvS0FBb0s7QUFDcEssTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3RGLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3pGLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3BGLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ25HLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDbEcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDekYsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDdEYsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDekYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDNUYsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDbEcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDckYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDckYsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJ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LElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksTUFBTSxDQUFBO2FBQ3hDLElBQUksU0FBUyxJQUFJLEdBQUc7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3RDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLElBQUksR0FBRztZQUFFLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFBOztZQUNsRyxPQUFPLElBQUksU0FBUyxDQUFBO0lBQzNCLENBQUM7SUFFRCxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKiogQHR5cGUge1JlYWRvbmx5PFJlY29yZDxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UZXh0QmFja2VuZExhbmd1YWdlLCBSZWFkb25seTxSZWNvcmQ8aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuRnVuY3Rpb25SZXR1cm5UeXBlTmFtZSwgc3RyaW5nPj4+Pn0gKi9cbmNvbnN0IHRhcmdldFNjYWxhclR5cGVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGRhcnQ6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwidm9pZFwifSksXG4gIHN3aWZ0OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcIkJvb2xcIiwgaW50ZWdlcjogXCJJbnQ2NFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwiVm9pZFwifSksXG4gIHJ1c3Q6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImk2NFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwiKClcIn0pLFxuICBjcHA6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcInN0ZDo6aW50NjRfdFwiLCBzdHJpbmc6IFwic3RkOjpzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgYzogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sXCIsIGludGVnZXI6IFwiaW50NjRfdFwiLCBzdHJpbmc6IFwiU2VtYW50aWZvbGRTdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgY3NoYXJwOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJsb25nXCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgZ286IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludDY0XCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgamF2YTogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sZWFuXCIsIGludGVnZXI6IFwiaW50XCIsIHN0cmluZzogXCJTdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAga290bGluOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcIkJvb2xlYW5cIiwgaW50ZWdlcjogXCJMb25nXCIsIHN0cmluZzogXCJTdHJpbmdcIiwgdm9pZDogXCJVbml0XCJ9KSxcbiAgamF2YXNjcmlwdDogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sZWFuXCIsIGludGVnZXI6IFwibnVtYmVyXCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgcGhwOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJpbnRcIiwgc3RyaW5nOiBcInN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pLFxuICBweXRob246IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludFwiLCBzdHJpbmc6IFwic3RyXCIsIHZvaWQ6IFwiTm9uZVwifSksXG4gIHJ1Ynk6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcIkludGVnZXJcIiwgc3RyaW5nOiBcIlN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pLFxuICB0eXBlc2NyaXB0OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xlYW5cIiwgaW50ZWdlcjogXCJudW1iZXJcIiwgc3RyaW5nOiBcInN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pXG59KVxuXG4vKipcbiAqIEVtaXRzIG9uZSB0YXJnZXQtbGFuZ3VhZ2Ugc2NhbGFyIG9yIGZ1bmN0aW9uLXJldHVybiB0eXBlIHNwZWxsaW5nLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UZXh0QmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNGdW5jdGlvblJldHVyblR5cGV9IHR5cGUgLSBTZW1hbnRpYyB0eXBlLlxuICogQHJldHVybnMge3N0cmluZ30gVGFyZ2V0IHR5cGUgc3BlbGxpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0U2NhbGFyVHlwZShsYW5ndWFnZSwgdHlwZSkge1xuICByZXR1cm4gdHlwZS5raW5kID09IFwiVHlwZVJlZmVyZW5jZVwiID8gdGFyZ2V0U2NhbGFyVHlwZXNbbGFuZ3VhZ2VdW3R5cGUubmFtZV0gOiBcIlwiXG59XG5cbi8qKlxuICogRW1pdHMgb25lIHJlY3Vyc2l2ZWx5IHBhcmFtZXRlcml6ZWQgc2VtYW50aWMgdHlwZSBmb3IgdGhlIFRhc2sgMDA2IGNvaG9ydC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGV4dEJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljRnVuY3Rpb25SZXR1cm5UeXBlfSB0eXBlIC0gU2VtYW50aWMgdHlwZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2phdmFCb3hlZF0gLSBXaGV0aGVyIEphdmEgc2NhbGFyIGFyZ3VtZW50cyByZXF1aXJlIGJveGVkIHNwZWxsaW5ncy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEV4YWN0IHRhcmdldCBzcGVsbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRTZW1hbnRpY1R5cGUobGFuZ3VhZ2UsIHR5cGUsIGphdmFCb3hlZCA9IGZhbHNlKSB7XG4gIGlmICh0eXBlLmtpbmQgPT0gXCJSZWNvcmRUeXBlXCIgfHwgdHlwZS5raW5kID09IFwiUmVmZXJlbmNlVHlwZVwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vbWluYWwgdHlwZSBlbWlzc2lvbiByZXF1aXJlcyBkZWNsYXJhdGlvbiBjb250ZXh0LlwiKVxuICB9XG4gIGlmICh0eXBlLmtpbmQgPT0gXCJPd25lZFJlc291cmNlVHlwZVwiIHx8IHR5cGUua2luZCA9PSBcIk93bmVkUmVmZXJlbmNlVHlwZVwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk93bmVkIHR5cGUgZW1pc3Npb24gcmVxdWlyZXMgZGVjbGFyYXRpb24gY29udGV4dC5cIilcbiAgfVxuICBpZiAodHlwZS5raW5kID09IFwiVHlwZVZhcmlhYmxlUmVmZXJlbmNlXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJUeXBlLXZhcmlhYmxlIGVtaXNzaW9uIHJlcXVpcmVzIGRlY2xhcmF0aW9uIGNvbnRleHQuXCIpXG4gIGlmICh0eXBlLmtpbmQgPT0gXCJPcHRpb25hbFR5cGVcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9wdGlvbmFsIHR5cGUgZW1pc3Npb24gcmVxdWlyZXMgdGFyZ2V0LXNwZWNpZmljIGNvbnRleHQuXCIpXG4gIGlmICh0eXBlLmtpbmQgPT0gXCJUeXBlUmVmZXJlbmNlXCIpIHtcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhXCIgJiYgamF2YUJveGVkKSB7XG4gICAgICByZXR1cm4gdHlwZS5uYW1lID09IFwiaW50ZWdlclwiID8gXCJJbnRlZ2VyXCIgOiB0eXBlLm5hbWUgPT0gXCJib29sZWFuXCIgPyBcIkJvb2xlYW5cIiA6IHR5cGUubmFtZSA9PSBcInN0cmluZ1wiID8gXCJTdHJpbmdcIiA6IFwidm9pZFwiXG4gICAgfVxuXG4gICAgcmV0dXJuIGVtaXRTY2FsYXJUeXBlKGxhbmd1YWdlLCB0eXBlKVxuICB9XG5cbiAgY29uc3QgZWxlbWVudCA9IHR5cGUua2luZCA9PSBcIkxpc3RUeXBlXCIgPyB0eXBlLmVsZW1lbnRUeXBlIDogdHlwZS52YWx1ZVR5cGVcbiAgY29uc3QgbmVzdGVkID0gZW1pdFNlbWFudGljVHlwZShsYW5ndWFnZSwgZWxlbWVudCwgbGFuZ3VhZ2UgPT0gXCJqYXZhXCIpXG5cbiAgaWYgKHR5cGUua2luZCA9PSBcIkxpc3RUeXBlXCIpIHtcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJydWJ5XCIpIHJldHVybiBgQXJyYXlbJHtuZXN0ZWR9XWBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJwaHBcIikgcmV0dXJuIGBsaXN0PCR7bmVzdGVkfT5gXG4gICAgaWYgKGxhbmd1YWdlID09IFwiamF2YXNjcmlwdFwiIHx8IGxhbmd1YWdlID09IFwidHlwZXNjcmlwdFwiKSByZXR1cm4gYFJlYWRvbmx5QXJyYXk8JHtuZXN0ZWR9PmBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhXCIpIHJldHVybiBgamF2YS51dGlsLkxpc3Q8JHtuZXN0ZWR9PmBcbiAgfSBlbHNlIHtcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJydWJ5XCIpIHJldHVybiBgSGFzaFtTdHJpbmcsJHtuZXN0ZWR9XWBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJwaHBcIikgcmV0dXJuIGBhcnJheTxzdHJpbmcsJHtuZXN0ZWR9PmBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhc2NyaXB0XCIgfHwgbGFuZ3VhZ2UgPT0gXCJ0eXBlc2NyaXB0XCIpIHJldHVybiBgUmVhZG9ubHlNYXA8c3RyaW5nLCAke25lc3RlZH0+YFxuICAgIGlmIChsYW5ndWFnZSA9PSBcImphdmFcIikgcmV0dXJuIGBqYXZhLnV0aWwuTWFwPFN0cmluZywke25lc3RlZH0+YFxuICB9XG5cbiAgcmV0dXJuIFwiXCJcbn1cblxuLyoqXG4gKiBFbWl0cyBhIHNhZmVseSBlc2NhcGVkIHRhcmdldC1sYW5ndWFnZSBzdHJpbmcgbGl0ZXJhbC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGV4dEJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUYXJnZXQgc3RyaW5nIGxpdGVyYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0U3RyaW5nTGl0ZXJhbChsYW5ndWFnZSwgdmFsdWUpIHtcbiAgaWYgKGxhbmd1YWdlID09IFwiZGFydFwiKSByZXR1cm4gZW1pdERhcnRTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcInN3aWZ0XCIpIHJldHVybiBlbWl0U3dpZnRTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcInBocFwiKSByZXR1cm4gZW1pdFBocFN0cmluZyh2YWx1ZSlcbiAgaWYgKGxhbmd1YWdlID09IFwicnVieVwiKSByZXR1cm4gZW1pdFJ1YnlTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcImphdmFcIikgcmV0dXJuIGVtaXRKYXZhU3RyaW5nKHZhbHVlKVxuICBpZiAobGFuZ3VhZ2UgPT0gXCJrb3RsaW5cIikgcmV0dXJuIGVtaXRLb3RsaW5TdHJpbmcodmFsdWUpXG5cbiAgY29uc3QgbGl0ZXJhbCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuXG4gIGlmICh0eXBlb2YgbGl0ZXJhbCAhPSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQSB2YWxpZGF0ZWQgc2VtYW50aWMgc3RyaW5nIGRpZCBub3Qgc2VyaWFsaXplLlwiKVxuXG4gIGNvbnN0IGVzY2FwZWRMaW5lU2VwYXJhdG9ycyA9IGxpdGVyYWwucmVwbGFjZUFsbChcIlxcdTIwMjhcIiwgXCJcXFxcdTIwMjhcIikucmVwbGFjZUFsbChcIlxcdTIwMjlcIiwgXCJcXFxcdTIwMjlcIilcblxuICByZXR1cm4gbGFuZ3VhZ2UgPT0gXCJjc2hhcnBcIiA/IGVzY2FwZWRMaW5lU2VwYXJhdG9ycy5yZXBsYWNlQWxsKFwiXFx1MDA4NVwiLCBcIlxcXFx1MDA4NVwiKSA6IGVzY2FwZWRMaW5lU2VwYXJhdG9yc1xufVxuXG4vKipcbiAqIEVtaXRzIGFuIG9yZGluYXJ5IG5vbmludGVycG9sYXRlZCBEYXJ0IHN0cmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBEYXJ0IHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0RGFydFN0cmluZyh2YWx1ZSkge1xuICBsZXQgZW1pdHRlZCA9IFwiXFxcIlwiXG5cbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKSlcblxuICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFwiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcIlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxcXFwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXFxcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikgZW1pdHRlZCArPSBcIlxcXFwkXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXG5cIikgZW1pdHRlZCArPSBcIlxcXFxuXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHJcIikgZW1pdHRlZCArPSBcIlxcXFxyXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHRcIikgZW1pdHRlZCArPSBcIlxcXFx0XCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGJcIikgZW1pdHRlZCArPSBcIlxcXFxiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGZcIikgZW1pdHRlZCArPSBcIlxcXFxmXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHZcIikgZW1pdHRlZCArPSBcIlxcXFx2XCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgPCAzMiB8fCBjb2RlUG9pbnQgPT0gMTI3IHx8IGNvZGVQb2ludCA9PSAweDg1IHx8IGNvZGVQb2ludCA9PSAweDIwMjggfHwgY29kZVBvaW50ID09IDB4MjAyOSkge1xuICAgICAgZW1pdHRlZCArPSBgXFxcXHV7JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpfX1gXG4gICAgfSBlbHNlIGVtaXR0ZWQgKz0gY2hhcmFjdGVyXG4gIH1cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG5cbi8qKlxuICogRW1pdHMgb25lIG5vbmludGVycG9sYXRlZCBTd2lmdCBzdHJpbmcgb3ZlciBVbmljb2RlIHNjYWxhciB2YWx1ZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTd2lmdCBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdFN3aWZ0U3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50IDwgMzIgfHwgY29kZVBvaW50ID09IDEyNyB8fCBjb2RlUG9pbnQgPT0gMHg4NSB8fCBjb2RlUG9pbnQgPT0gMHgyMDI4IHx8IGNvZGVQb2ludCA9PSAweDIwMjkpIHtcbiAgICAgIGVtaXR0ZWQgKz0gYFxcXFx1eyR7Y29kZVBvaW50LnRvU3RyaW5nKDE2KX19YFxuICAgIH0gZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG5cbi8qKlxuICogRW1pdHMgYSBQSFAgZG91YmxlLXF1b3RlZCBzdHJpbmcgd2hpbGUgcHJldmVudGluZyBpbnRlcnBvbGF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gUEhQIHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0UGhwU3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiJFwiKSBlbWl0dGVkICs9IFwiXFxcXCRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcblwiKSBlbWl0dGVkICs9IFwiXFxcXG5cIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcclwiKSBlbWl0dGVkICs9IFwiXFxcXHJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdFwiKSBlbWl0dGVkICs9IFwiXFxcXHRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcZlwiKSBlbWl0dGVkICs9IFwiXFxcXGZcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdlwiKSBlbWl0dGVkICs9IFwiXFxcXHZcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCA9PSAyNykgZW1pdHRlZCArPSBcIlxcXFxlXCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgIT09IHVuZGVmaW5lZCAmJiAoY29kZVBvaW50IDwgMzIgfHwgY29kZVBvaW50ID09IDEyNykpIHtcbiAgICAgIGVtaXR0ZWQgKz0gYFxcXFx4JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKX1gXG4gICAgfSBlbHNlIGVtaXR0ZWQgKz0gY2hhcmFjdGVyXG4gIH1cblxuICByZXR1cm4gYCR7ZW1pdHRlZH1cImBcbn1cblxuLyoqXG4gKiBFbWl0cyBhIFJ1YnkgZG91YmxlLXF1b3RlZCBzdHJpbmcgd2hpbGUgcHJldmVudGluZyBpbnRlcnBvbGF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gUnVieSBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdFJ1YnlTdHJpbmcodmFsdWUpIHtcbiAgbGV0IGVtaXR0ZWQgPSBcIlxcXCJcIlxuXG4gIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZVBvaW50ID0gY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApXG5cbiAgICBpZiAoY2hhcmFjdGVyID09IFwiXFxcIlwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXCJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcXFxcIikgZW1pdHRlZCArPSBcIlxcXFxcXFxcXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCIjXCIpIGVtaXR0ZWQgKz0gXCJcXFxcI1wiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxmXCIpIGVtaXR0ZWQgKz0gXCJcXFxcZlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx2XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdlwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50ID09IDI3KSBlbWl0dGVkICs9IFwiXFxcXGVcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCAhPT0gdW5kZWZpbmVkICYmIChjb2RlUG9pbnQgPCAzMiB8fCBjb2RlUG9pbnQgPT0gMTI3KSkge1xuICAgICAgZW1pdHRlZCArPSBgXFxcXHV7JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpfX1gXG4gICAgfSBlbHNlIGVtaXR0ZWQgKz0gY2hhcmFjdGVyXG4gIH1cblxuICByZXR1cm4gYCR7ZW1pdHRlZH1cImBcbn1cblxuLyoqXG4gKiBFbWl0cyBhIEphdmEgc3RyaW5nIHVzaW5nIHN0YW5kYXJkIG9yIGZpeGVkLXdpZHRoIG9jdGFsIGNvbnRyb2wgZXNjYXBlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbGlkIFVuaWNvZGUgc2NhbGFyIHN0cmluZy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEphdmEgc3RyaW5nIGxpdGVyYWwuXG4gKi9cbmZ1bmN0aW9uIGVtaXRKYXZhU3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcYlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxmXCIpIGVtaXR0ZWQgKz0gXCJcXFxcZlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50ICE9PSB1bmRlZmluZWQgJiYgKGNvZGVQb2ludCA8IDMyIHx8IGNvZGVQb2ludCA9PSAxMjcpKSB7XG4gICAgICBlbWl0dGVkICs9IGBcXFxcJHtjb2RlUG9pbnQudG9TdHJpbmcoOCkucGFkU3RhcnQoMywgXCIwXCIpfWBcbiAgICB9IGVsc2UgZW1pdHRlZCArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIHJldHVybiBgJHtlbWl0dGVkfVwiYFxufVxuXG4vKipcbiAqIEVtaXRzIGFuIG9yZGluYXJ5IG5vbmludGVycG9sYXRlZCBLb3RsaW4gc3RyaW5nIG92ZXIgVW5pY29kZSBzY2FsYXIgdmFsdWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gS290bGluIHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0S290bGluU3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiJFwiKSBlbWl0dGVkICs9IFwiXFxcXCRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcYlwiKSBlbWl0dGVkICs9IFwiXFxcXGJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdFwiKSBlbWl0dGVkICs9IFwiXFxcXHRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcblwiKSBlbWl0dGVkICs9IFwiXFxcXG5cIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcclwiKSBlbWl0dGVkICs9IFwiXFxcXHJcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCA8IDMyIHx8IGNvZGVQb2ludCA9PSAxMjcpIGVtaXR0ZWQgKz0gYFxcXFx1JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDQsIFwiMFwiKX1gXG4gICAgZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG4iXX0=
|
|
@@ -1,20 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Checks the intentionally narrow backend contract.
|
|
3
3
|
* @param {import("../semantic/types.js").SemanticModule} module - Semantic module.
|
|
4
|
-
* @param {import("../semantic/types.js").
|
|
4
|
+
* @param {import("../semantic/types.js").BackendLanguage} language - Backend language or binary target.
|
|
5
|
+
* @param {{externalDeclarationIds?: Set<string>, program?: boolean, visibleFunctions?: Map<string, import("../semantic/types.js").FunctionDeclaration>, visibleRecords?: Map<string, import("../semantic/types.js").RecordDeclaration>, visibleClasses?: Map<string, import("../semantic/types.js").ClassDeclaration>, visibleErrors?: Map<string, import("../semantic/types.js").ErrorDeclaration>, visibleCallEffects?: Map<string, Set<string>>}} [options] - Resolved program validation context.
|
|
5
6
|
* @returns {void}
|
|
6
7
|
*/
|
|
7
|
-
export declare function validateBackendModule(module: import("../semantic/types.js").SemanticModule, language: import("../semantic/types.js").
|
|
8
|
+
export declare function validateBackendModule(module: import("../semantic/types.js").SemanticModule, language: import("../semantic/types.js").BackendLanguage, options?: {
|
|
9
|
+
externalDeclarationIds?: Set<string>;
|
|
10
|
+
program?: boolean;
|
|
11
|
+
visibleFunctions?: Map<string, import("../semantic/types.js").FunctionDeclaration>;
|
|
12
|
+
visibleRecords?: Map<string, import("../semantic/types.js").RecordDeclaration>;
|
|
13
|
+
visibleClasses?: Map<string, import("../semantic/types.js").ClassDeclaration>;
|
|
14
|
+
visibleErrors?: Map<string, import("../semantic/types.js").ErrorDeclaration>;
|
|
15
|
+
visibleCallEffects?: Map<string, Set<string>>;
|
|
16
|
+
}): void;
|
|
17
|
+
/**
|
|
18
|
+
* Emits one recursive semantic type while mapping every constituent identity.
|
|
19
|
+
* @param {import("./writer.js").SourceWriter} writer - Source-aware writer.
|
|
20
|
+
* @param {import("../semantic/types.js").SemanticFunctionReturnType} type - Semantic type.
|
|
21
|
+
* @param {string} path - Exact type occurrence path.
|
|
22
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
23
|
+
* @param {boolean} [javaBoxed] - Whether a Java scalar is a generic argument.
|
|
24
|
+
* @returns {void}
|
|
25
|
+
*/
|
|
26
|
+
export declare function emitType(writer: import("./writer.js").SourceWriter, type: import("../semantic/types.js").SemanticFunctionReturnType, path: string, language: import("../semantic/types.js").TextBackendLanguage, javaBoxed?: boolean): void;
|
|
8
27
|
/**
|
|
9
28
|
* Emits a supported expression.
|
|
10
29
|
* @param {import("./writer.js").SourceWriter} writer - Source-aware writer.
|
|
11
30
|
* @param {import("../semantic/types.js").Expression} expression - Semantic expression.
|
|
12
31
|
* @param {string} path - Exact JSON Pointer for this expression occurrence.
|
|
13
|
-
* @param {import("../semantic/types.js").
|
|
32
|
+
* @param {import("../semantic/types.js").TextBackendLanguage} language - Target language.
|
|
14
33
|
* @param {(name: string) => string} emitIdentifier - Identifier formatter.
|
|
15
34
|
* @returns {void}
|
|
16
35
|
*/
|
|
17
|
-
export declare function emitExpression(writer: import("./writer.js").SourceWriter, expression: import("../semantic/types.js").Expression, path: string, language: import("../semantic/types.js").
|
|
36
|
+
export declare function emitExpression(writer: import("./writer.js").SourceWriter, expression: import("../semantic/types.js").Expression, path: string, language: import("../semantic/types.js").TextBackendLanguage, emitIdentifier: (name: string) => string): void;
|
|
18
37
|
/**
|
|
19
38
|
* Reports whether JavaScript-family execution can create IEEE-754 signed zero.
|
|
20
39
|
* Semantifold integers have one mathematical zero, so those targets canonicalize
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/backends/shared.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/backends/shared.js"],"names":[],"mappings":"AAqDA;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EALjC,OAAO,sBAAsB,EAAE,cAKE,EAAE,QAAQ,EAJ3C,OAAO,sBAAsB,EAAE,eAIY,EAAE,OAAO,AAH5D,CACA,EADQ;IAAC,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;IAAC,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAG/W,GAFvD,IAAI,CA4GhB;AAiyDD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAPpB,OAAO,aAAa,EAAE,YAOF,EAAE,IAAI,EAN1B,OAAO,sBAAsB,EAAE,0BAML,EAAE,IAAI,EALhC,MAKgC,EAAE,QAAQ,EAJ1C,OAAO,sBAAsB,EAAE,mBAIW,EAAE,SAAS,AAH7D,CACA,EADQ,OAG6D,GAF3D,IAAI,CA4EhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAP1B,OAAO,aAAa,EAAE,YAOI,EAAE,UAAU,EANtC,OAAO,sBAAsB,EAAE,UAMO,EAAE,IAAI,EAL5C,MAK4C,EAAE,QAAQ,EAJtD,OAAO,sBAAsB,EAAE,mBAIuB,EAAE,cAAc,EAHtE,CAAC,IAAI,EAAE,MAAM,KAAK,MAGoD,GAFpE,IAAI,CAkYhB;AA8GD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAH1C,OAAO,sBAAsB,EAAE,cAGW,GAFxC,OAAO,CAKnB"}
|