@scriptc/compiler 0.4.0 → 0.4.2
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/ambient/scriptc-node-fallback.d.ts +617 -83
- package/dist/backend/cycle-analysis.d.ts +2 -1
- package/dist/backend/cycle-analysis.js +4 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +2 -1
- package/dist/backend/cycle-mutability.js +2 -2
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +10 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +2 -1
- package/dist/backend/immutability.js +2 -2
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +7 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +7 -3
- package/dist/backend/llvm/alloc.js +7 -4
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/array-search.js +4 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +23 -2
- package/dist/backend/llvm/bytes-loop-versions.js +115 -19
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +131 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +99 -2
- package/dist/backend/llvm/classes.js +436 -57
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +235 -16
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -5
- package/dist/backend/llvm/common.js +50 -5
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.js +8 -4
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -1
- package/dist/backend/llvm/counted-loops.js +62 -23
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +3 -1
- package/dist/backend/llvm/dense-array-access.js +61 -38
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +4 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +19 -16
- package/dist/backend/llvm/dense-array-loops.js +49 -13
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +50 -14
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +34 -1
- package/dist/backend/llvm/dyn.js +393 -14
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +27 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +67 -39
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +3 -25
- package/dist/backend/llvm/emit-statements.js +414 -37
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +159 -22
- package/dist/backend/llvm/emitter.js +573 -89
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +110 -40
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +51 -26
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +27 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +95 -5
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +29 -11
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +55 -0
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +48 -20
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +131 -35
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval.js +139 -11
- package/dist/backend/llvm/jsval.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +10 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +61 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +20 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +69 -17
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +75 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +65 -28
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +91 -61
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +14 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +43 -7
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/narrow-guards.js +64 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +11 -1
- package/dist/backend/llvm/publish.js +80 -22
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +1 -1
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +2 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.js +2 -2
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +7 -1
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +17 -9
- package/dist/backend/llvm/shapes.js +21 -17
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +88 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/thread-slots.test.js +5 -4
- package/dist/backend/llvm/thread-slots.test.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/mangle.d.ts +8 -0
- package/dist/backend/mangle.js +12 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +40 -2
- package/dist/backend/native/executable.js +40 -7
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +3 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +17 -6
- package/dist/backend/native-codegen.js +55 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +18 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -2
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/optimization.d.ts +2 -2
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +4 -0
- package/dist/backend/runtime-pack-core.js +4 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +7 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +12 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +38 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +6 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +89 -7
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +15 -1
- package/dist/cli/usage.js +30 -2
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +9 -0
- package/dist/contracts/check.js +2 -3
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +18 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +2 -1
- package/dist/diagnostics/envelope.js +5 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +32 -0
- package/dist/executable/executable-cache.js +65 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +50 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +3 -2
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
- package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +7 -2
- package/dist/frontend/lowering/builtins/crypto.js +63 -4
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +21 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +54 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +9 -5
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +9 -0
- package/dist/frontend/lowering/builtins/process.js +47 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +3 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +23 -4
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +2 -1
- package/dist/frontend/lowering/builtins/readline.js +23 -6
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +26 -0
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +6 -2
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.js +4 -3
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +4 -0
- package/dist/frontend/lowering/call-signatures.js +137 -13
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +34 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +2 -1
- package/dist/frontend/lowering/class-construction.js +8 -13
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +34 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +577 -152
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +77 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +3 -0
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +17 -0
- package/dist/frontend/lowering/class-protocols.js +117 -7
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +42 -4
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
- package/dist/frontend/lowering/class-to-primitive.js +31 -8
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.js +105 -75
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +8 -7
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +15 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +36 -32
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +2 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +32 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +11 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +2 -1
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +10 -1
- package/dist/frontend/lowering/containers/bytes.js +601 -24
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +52 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +80 -10
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +8 -7
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +85 -22
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +2 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
- package/dist/frontend/lowering/cycle-initialization.js +177 -39
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +204 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +48 -13
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +124 -8
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +30 -7
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +46 -7
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +52 -7
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -3
- package/dist/frontend/lowering/expressions/object-literals.js +75 -7
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +17 -8
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +5 -4
- package/dist/frontend/lowering/expressions/property-access.js +351 -16
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +112 -9
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +13 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +64 -10
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +46 -1
- package/dist/frontend/lowering/generic-functions.js +660 -73
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +9 -8
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +7 -2
- package/dist/frontend/lowering/key-order-witness.js +21 -4
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +38 -2
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +3 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +1 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +4 -0
- package/dist/frontend/lowering/lower-calls.js +504 -97
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +22 -0
- package/dist/frontend/lowering/lower-classes.js +339 -32
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +65 -15
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +148 -12
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +308 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +10 -4
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +578 -16
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +227 -72
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +24 -3
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +263 -60
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +39 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
- package/dist/frontend/lowering/lower-stmts.js +584 -69
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +575 -165
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +21 -4
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +151 -30
- package/dist/frontend/lowering/lowerer.js +725 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +172 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.js +3 -2
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +72 -30
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +37 -3
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
- package/dist/frontend/npm-static-bundled-chunks.js +173 -2
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.js +224 -4
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +16 -0
- package/dist/frontend/npm-static.js +93 -3
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +67 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +21 -0
- package/dist/frontend/program.js +174 -14
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +1 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +13 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +12 -0
- package/dist/frontend/services.js +37 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +21 -7
- package/dist/frontend/ts7/ast-node.js +131 -29
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +60 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +27 -2
- package/dist/frontend/ts7/ast-wire.js +124 -21
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +13 -1
- package/dist/frontend/ts7/checker.js +75 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +6 -5
- package/dist/frontend/ts7/program-host.js +12 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +18 -0
- package/dist/frontend/ts7/semantic-model.js +90 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +19 -4
- package/dist/frontend/ts7/session.js +1 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +38 -6
- package/dist/frontend/type-mapper.js +466 -47
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +453 -85
- package/dist/index.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +3 -2
- package/dist/ir/array-length-stability.js +22 -2
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +47 -1
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +41 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +5 -1
- package/dist/ir/builtin-signatures.js +187 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/final-fields.d.ts +2 -1
- package/dist/ir/final-fields.js +2 -2
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.test.js +2 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +13 -5
- package/dist/ir/int32-slots.js +112 -115
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +14 -4
- package/dist/ir/integer-loop-facts.js +172 -32
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +193 -39
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +201 -1
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +10 -1
- package/dist/ir/integer-ranges.js +122 -25
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +255 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +17 -2
- package/dist/ir/ir.js +11 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.js +38 -4
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +64 -5
- package/dist/ir/runtime-features.js +358 -101
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.d.ts +2 -0
- package/dist/ir/traverse.js +124 -70
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +77 -24
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +15 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/ir-policy.js +11 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +33 -4
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +8 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +10 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +22 -21
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +20 -52
package/dist/backend/llvm/dyn.js
CHANGED
|
@@ -4,7 +4,7 @@ import { BYTES_ELEM_NUM, SCR_ARR_FIELD, f64Lit, sizeToDouble } from "./common.js
|
|
|
4
4
|
import { emitUnionPeek, emitUnionTag } from "./union-repr.js";
|
|
5
5
|
import { INLINE_UNION_FIELD, loadInlineUnion, stackUnionBox, storeInlineUnion, unionBoxBits, } from "./inline-unions.js";
|
|
6
6
|
import { InternalCompilerError } from "../../errors.js";
|
|
7
|
-
import { accessorSlotProp, DYN_HANDLE_KINDS, isDirentShape, isDynTypedRefType, isRefCounted, typeKey, } from "../../ir/ir.js";
|
|
7
|
+
import { accessorSlotProp, DYN_HANDLE_KINDS, isDirentShape, isDynTypedRefType, isRefCounted, isUnitType, typeKey, } from "../../ir/ir.js";
|
|
8
8
|
import { dynDesc, streamTypedRefEligible } from "../../ir/analysis.js";
|
|
9
9
|
import { mangleRecordNew, mangleRecordStruct } from "../mangle.js";
|
|
10
10
|
import { BlockBuilder } from "./blocks.js";
|
|
@@ -35,6 +35,7 @@ export const DYN_HANDLE_TAG_NUM = {
|
|
|
35
35
|
child: 16,
|
|
36
36
|
fileHandle: 17,
|
|
37
37
|
dir: 44,
|
|
38
|
+
dgramSocket: 62,
|
|
38
39
|
cryptoHash: 52,
|
|
39
40
|
cryptoHmac: 53,
|
|
40
41
|
};
|
|
@@ -44,6 +45,22 @@ export const DYN_HANDLE_TAG_NUM = {
|
|
|
44
45
|
const DYN_HANDLE_BOX_FN = {
|
|
45
46
|
cryptoHash: "scr_crypto_hash_to_dyn",
|
|
46
47
|
cryptoHmac: "scr_crypto_hash_to_dyn",
|
|
48
|
+
dgramSocket: "scr_dgram_to_dyn",
|
|
49
|
+
};
|
|
50
|
+
/** Handle kinds whose box holds a unit-owned wrapper rather than the
|
|
51
|
+
* handle itself (a dgram socket's box carries its untyped listeners):
|
|
52
|
+
* the unit's own function unwraps it, with the tag check and TypeError
|
|
53
|
+
* of scr_dyn_handle_unbox. */
|
|
54
|
+
const DYN_HANDLE_UNBOX_FN = {
|
|
55
|
+
dgramSocket: "scr_dgram_from_dyn",
|
|
56
|
+
};
|
|
57
|
+
/** ScrMessageKind (scr_message.h): the node kinds message readers test. */
|
|
58
|
+
const MESSAGE_KIND = {
|
|
59
|
+
UNDEFINED: 0,
|
|
60
|
+
NULL: 1,
|
|
61
|
+
BOOL: 2,
|
|
62
|
+
NUMBER: 3,
|
|
63
|
+
STRING: 4,
|
|
47
64
|
};
|
|
48
65
|
export const DYN_KIND = {
|
|
49
66
|
NULL: 0,
|
|
@@ -83,6 +100,8 @@ export class LlDyn {
|
|
|
83
100
|
dynFuncThunks = new Map();
|
|
84
101
|
dynFuncBoxes = new Map();
|
|
85
102
|
dynFuncAdapters = new Map();
|
|
103
|
+
messageListeners = new Map();
|
|
104
|
+
messageReaders = new Map();
|
|
86
105
|
promiseDynAdapters = new Map();
|
|
87
106
|
mapDynOps = new Map();
|
|
88
107
|
dynToStrFn = null;
|
|
@@ -520,6 +539,44 @@ export class LlDyn {
|
|
|
520
539
|
}
|
|
521
540
|
/** Emit the standard in-helper pending check: on a pending exception
|
|
522
541
|
* run `cleanup` and return `dummy`. */
|
|
542
|
+
/** The failure block of a union dynCheck whose value matched no arm. A
|
|
543
|
+
* value of the one container kind exactly one arm can take (an object
|
|
544
|
+
* for the union's only record arm, an array for its only array arm,
|
|
545
|
+
* beside unit and scalar arms) runs that arm's builder, which throws the
|
|
546
|
+
* deepest failing path and the reason there (`expected string at
|
|
547
|
+
* $.order.owner.id, got undefined`) instead of the union's own outer
|
|
548
|
+
* path. Other values, and an arm builder that unexpectedly succeeds,
|
|
549
|
+
* fall through to the union's message. Only the failure path changes. */
|
|
550
|
+
unionArmFailure(B, def, kind) {
|
|
551
|
+
const scalar = (arm) => isUnitType(arm) ||
|
|
552
|
+
arm.kind === "f64" ||
|
|
553
|
+
arm.kind === "bool" ||
|
|
554
|
+
arm.kind === "string" ||
|
|
555
|
+
arm.kind === "bigint";
|
|
556
|
+
const containers = def.arms.filter((arm) => !scalar(arm));
|
|
557
|
+
const arm = containers.length === 1 ? containers[0] : null;
|
|
558
|
+
const container = arm?.kind === "array"
|
|
559
|
+
? DYN_KIND.ARR
|
|
560
|
+
: arm?.kind === "record" && !this.host.recordsById.get(arm.shapeId)?.tuple
|
|
561
|
+
? DYN_KIND.OBJ
|
|
562
|
+
: null;
|
|
563
|
+
if (!arm || container === null)
|
|
564
|
+
return;
|
|
565
|
+
const host = this.host;
|
|
566
|
+
const deep = B.newLabel("dcu.deep");
|
|
567
|
+
const outer = B.newLabel("dcu.outer");
|
|
568
|
+
const same = B.tmp();
|
|
569
|
+
B.line(`${same} = icmp eq i32 ${kind}, ${container}`);
|
|
570
|
+
B.condBr(same, deep, outer);
|
|
571
|
+
B.startBlock(deep);
|
|
572
|
+
const built = B.tmp();
|
|
573
|
+
B.line(`${built} = call ptr @${this.dynCheckHelper(arm)}(ptr %d, ptr %path)`);
|
|
574
|
+
this.pendingBail(B, "dcu.deep", () => { }, "ptr null");
|
|
575
|
+
const rc = vAdapters(host, arm);
|
|
576
|
+
B.line(`call void ${rc.release}(ptr ${built})`);
|
|
577
|
+
B.br(outer);
|
|
578
|
+
B.startBlock(outer);
|
|
579
|
+
}
|
|
523
580
|
pendingBail(B, hint, cleanup, dummy) {
|
|
524
581
|
const p = B.tmp();
|
|
525
582
|
for (const line of this.host.pendingTestLines(p))
|
|
@@ -1339,10 +1396,10 @@ export class LlDyn {
|
|
|
1339
1396
|
: []),
|
|
1340
1397
|
]
|
|
1341
1398
|
: [
|
|
1342
|
-
|
|
1343
|
-
{ index:
|
|
1399
|
+
// The dense states follow the data slots: they move with data and capacity.
|
|
1400
|
+
{ index: SCR_ARR_FIELD.len, type: "i32", name: "length" },
|
|
1401
|
+
{ index: SCR_ARR_FIELD.cap, type: "i32", name: "capacity" },
|
|
1344
1402
|
{ index: SCR_ARR_FIELD.data, type: "ptr", name: "data" },
|
|
1345
|
-
{ index: SCR_ARR_FIELD.present, type: "ptr", name: "presence" },
|
|
1346
1403
|
{ index: SCR_ARR_FIELD.filled, type: "i32", name: "filled" },
|
|
1347
1404
|
];
|
|
1348
1405
|
members.forEach((member) => {
|
|
@@ -1935,6 +1992,7 @@ export class LlDyn {
|
|
|
1935
1992
|
B.line(`call void @scr_dyn_release_v(ptr ${materialized})`);
|
|
1936
1993
|
B.terminate(`ret ptr ${checked}`);
|
|
1937
1994
|
B.startBlock(lFail);
|
|
1995
|
+
this.unionArmFailure(B, def, kind);
|
|
1938
1996
|
B.line(`call void @scr_dyn_check_fail(ptr %path, ptr ${want}, ptr %d)`);
|
|
1939
1997
|
B.terminate(`ret ptr null`);
|
|
1940
1998
|
break;
|
|
@@ -1995,6 +2053,7 @@ export class LlDyn {
|
|
|
1995
2053
|
B.line(`call void @scr_dyn_typed_ref_cache_cast(ptr %d, ptr ${host.cstr(key)}, ${host.sizeType} ${Buffer.byteLength(key, "utf8")}, ptr ${checked}, ptr ${rc.retain}, ptr ${rc.release}, i1 ${traceAdapter(host, t) !== null ? "true" : "false"})`);
|
|
1996
2054
|
B.terminate(`ret ptr ${checked}`);
|
|
1997
2055
|
B.startBlock(lFail);
|
|
2056
|
+
this.unionArmFailure(B, def, kind);
|
|
1998
2057
|
B.line(`call void @scr_dyn_check_fail(ptr %path, ptr ${want}, ptr %d)`);
|
|
1999
2058
|
B.terminate(`ret ptr null`);
|
|
2000
2059
|
break;
|
|
@@ -2079,9 +2138,16 @@ export class LlDyn {
|
|
|
2079
2138
|
// TypeError on any other kind or tag).
|
|
2080
2139
|
const h = DYN_HANDLE_KINDS.get(t.kind);
|
|
2081
2140
|
if (h) {
|
|
2082
|
-
host.declare(`declare ptr @scr_dyn_handle_unbox(ptr, i32, ptr, ptr)`);
|
|
2083
2141
|
const r = B.tmp();
|
|
2084
|
-
|
|
2142
|
+
const unbox = DYN_HANDLE_UNBOX_FN[t.kind];
|
|
2143
|
+
if (unbox) {
|
|
2144
|
+
host.declare(`declare ptr @${unbox}(ptr, ptr, ptr)`);
|
|
2145
|
+
B.line(`${r} = call ptr @${unbox}(ptr %d, ptr %path, ptr ${want})`);
|
|
2146
|
+
}
|
|
2147
|
+
else {
|
|
2148
|
+
host.declare(`declare ptr @scr_dyn_handle_unbox(ptr, i32, ptr, ptr)`);
|
|
2149
|
+
B.line(`${r} = call ptr @scr_dyn_handle_unbox(ptr %d, i32 ${DYN_HANDLE_TAG_NUM[t.kind]}, ptr %path, ptr ${want})`);
|
|
2150
|
+
}
|
|
2085
2151
|
B.terminate(`ret ptr ${r}`);
|
|
2086
2152
|
break;
|
|
2087
2153
|
}
|
|
@@ -2749,7 +2815,8 @@ export class LlDyn {
|
|
|
2749
2815
|
}
|
|
2750
2816
|
/* ── the dyn ToString pair (dynToStrHelper, ported) ────────────────── */
|
|
2751
2817
|
/** Node's String() over a dyn value — sc_ds (+1 result) over the
|
|
2752
|
-
* recursive sc_ds_buf walker. Borrowed operand;
|
|
2818
|
+
* recursive sc_ds_buf walker. Borrowed operand; an exception that an
|
|
2819
|
+
* object's toString or valueOf throws stays pending. */
|
|
2753
2820
|
dynToStrHelper() {
|
|
2754
2821
|
if (this.dynToStrFn)
|
|
2755
2822
|
return this.dynToStrFn;
|
|
@@ -2853,9 +2920,9 @@ export class LlDyn {
|
|
|
2853
2920
|
B.startBlock(labels.get(DYN_KIND.ARR));
|
|
2854
2921
|
{
|
|
2855
2922
|
// Array.prototype.toString: join(",") — null/undefined ELEMENTS
|
|
2856
|
-
// print empty (unlike top level), nested arrays flatten.
|
|
2923
|
+
// print empty (unlike top level), nested arrays flatten. The length
|
|
2924
|
+
// is read once, as join reads it.
|
|
2857
2925
|
const n = this.lenOf(B, "%d");
|
|
2858
|
-
const items = this.itemsOf(B, "%d");
|
|
2859
2926
|
this.i64Loop(B, "ds.ar", n, (i, brNext) => {
|
|
2860
2927
|
const nz = B.tmp();
|
|
2861
2928
|
B.line(`${nz} = icmp ugt ${this.S} ${i}, 0`);
|
|
@@ -2866,7 +2933,22 @@ export class LlDyn {
|
|
|
2866
2933
|
B.line(`call void @scr_jb_putc(ptr %b, i8 44)`);
|
|
2867
2934
|
B.br(lel);
|
|
2868
2935
|
B.startBlock(lel);
|
|
2869
|
-
|
|
2936
|
+
// Each index reads the element as join does (scr_dyn_arr_at, +1):
|
|
2937
|
+
// from the current storage, undefined past the current length,
|
|
2938
|
+
// and through the prototype for a hole. An element's toString
|
|
2939
|
+
// can append to, shrink or reallocate the array; a getter that
|
|
2940
|
+
// throws answers NULL with the exception pending.
|
|
2941
|
+
host.declare(`declare ptr @scr_dyn_arr_at(ptr, double)`);
|
|
2942
|
+
host.declare(`declare void @scr_dyn_release_v(ptr)`);
|
|
2943
|
+
const index = B.tmp();
|
|
2944
|
+
B.line(`${index} = uitofp ${this.S} ${i} to double`);
|
|
2945
|
+
const e = B.tmp();
|
|
2946
|
+
B.line(`${e} = call ptr @scr_dyn_arr_at(ptr %d, double ${index})`);
|
|
2947
|
+
const missing = B.tmp();
|
|
2948
|
+
B.line(`${missing} = icmp eq ptr ${e}, null`);
|
|
2949
|
+
const lGot = B.newLabel("ds.gt");
|
|
2950
|
+
B.condBr(missing, done, lGot);
|
|
2951
|
+
B.startBlock(lGot);
|
|
2870
2952
|
const ek = this.kindOf(B, e);
|
|
2871
2953
|
const isU = B.tmp();
|
|
2872
2954
|
const isN = B.tmp();
|
|
@@ -2874,20 +2956,31 @@ export class LlDyn {
|
|
|
2874
2956
|
B.line(`${isU} = icmp eq i32 ${ek}, ${DYN_KIND.UNDEF}`);
|
|
2875
2957
|
B.line(`${isN} = icmp eq i32 ${ek}, ${DYN_KIND.NULL}`);
|
|
2876
2958
|
B.line(`${unit} = or i1 ${isU}, ${isN}`);
|
|
2877
|
-
const lSkip = B.newLabel("ds.sk");
|
|
2878
2959
|
const lRec = B.newLabel("ds.rc");
|
|
2960
|
+
const lSkip = B.newLabel("ds.sk");
|
|
2879
2961
|
B.condBr(unit, lSkip, lRec);
|
|
2880
2962
|
B.startBlock(lSkip);
|
|
2963
|
+
B.line(`call void @scr_dyn_release_v(ptr ${e})`);
|
|
2881
2964
|
brNext();
|
|
2882
2965
|
B.startBlock(lRec);
|
|
2883
2966
|
B.line(`call void @sc_ds_buf(ptr %b, ptr ${e})`);
|
|
2967
|
+
B.line(`call void @scr_dyn_release_v(ptr ${e})`);
|
|
2968
|
+
// The first exception an element's conversion throws ends the
|
|
2969
|
+
// conversion; later elements are not read.
|
|
2970
|
+
const thrown = B.tmp();
|
|
2971
|
+
for (const line of host.pendingTestLines(thrown))
|
|
2972
|
+
B.line(line.trimStart());
|
|
2973
|
+
const lMore = B.newLabel("ds.mo");
|
|
2974
|
+
B.condBr(thrown, done, lMore);
|
|
2975
|
+
B.startBlock(lMore);
|
|
2884
2976
|
});
|
|
2885
2977
|
B.br(done);
|
|
2886
2978
|
}
|
|
2887
2979
|
B.startBlock(labels.get(DYN_KIND.OBJ));
|
|
2888
2980
|
{
|
|
2889
2981
|
// The checked-dynamic tree's error encoding renders Error.prototype.toString;
|
|
2890
|
-
//
|
|
2982
|
+
// other objects convert with ToPrimitive's string hint: a toString or
|
|
2983
|
+
// valueOf of their own or of their prototypes, else "[object Object]".
|
|
2891
2984
|
const marker = this.objGetLit(B, "%d", "%error");
|
|
2892
2985
|
const isErr = B.tmp();
|
|
2893
2986
|
B.line(`${isErr} = icmp ne ptr ${marker}, null`);
|
|
@@ -2895,8 +2988,21 @@ export class LlDyn {
|
|
|
2895
2988
|
const lPlain = B.newLabel("ds.pl");
|
|
2896
2989
|
B.condBr(isErr, lErr, lPlain);
|
|
2897
2990
|
B.startBlock(lPlain);
|
|
2898
|
-
|
|
2899
|
-
|
|
2991
|
+
{
|
|
2992
|
+
// Null leaves the exception the conversion threw pending.
|
|
2993
|
+
host.declare(`declare ptr @scr_dyn_string_coerce_js(ptr)`);
|
|
2994
|
+
host.declare(`declare void @scr_str_release(ptr)`);
|
|
2995
|
+
const text = B.tmp();
|
|
2996
|
+
B.line(`${text} = call ptr @scr_dyn_string_coerce_js(ptr %d)`);
|
|
2997
|
+
const converted = B.tmp();
|
|
2998
|
+
B.line(`${converted} = icmp ne ptr ${text}, null`);
|
|
2999
|
+
const lPut = B.newLabel("ds.pp");
|
|
3000
|
+
B.condBr(converted, lPut, done);
|
|
3001
|
+
B.startBlock(lPut);
|
|
3002
|
+
this.putScrStr(B, "%b", text);
|
|
3003
|
+
B.line(`call void @scr_str_release(ptr ${text})`);
|
|
3004
|
+
B.br(done);
|
|
3005
|
+
}
|
|
2900
3006
|
B.startBlock(lErr);
|
|
2901
3007
|
// Error.prototype.toString, reading name and message through the
|
|
2902
3008
|
// prototype. Null leaves the exception its conversion threw pending.
|
|
@@ -3993,6 +4099,279 @@ export class LlDyn {
|
|
|
3993
4099
|
this.defs.push(`define internal ptr @${name}(ptr %v, ptr %fname) ${FN_ATTRS} { ; box ${key} into dyn`, `entry:`, ` %c = call ptr @scr_closure_retain_v(ptr %v)`, ` %r = call ptr @scr_dyn_new_func(ptr %c, ptr @${thunk}, i32 ${t.params.length - (t.restAbi === "typed" ? 1 : 0)}, ptr ${sigLit}, ptr %fname)`, ` ret ptr %r`, `}`, ``);
|
|
3994
4100
|
return name;
|
|
3995
4101
|
}
|
|
4102
|
+
/** `sc_dml_<n>(ptr c, ptr message) -> i1`, the typed message entry of a
|
|
4103
|
+
* closure registered as a 'message' listener (ScrDynMessageListener):
|
|
4104
|
+
* builds the closure's parameter from the message's nodes and calls the
|
|
4105
|
+
* closure. It answers false, without calling it, when the message does
|
|
4106
|
+
* not have the parameter's exact layout, and the listener then runs
|
|
4107
|
+
* through its thunk on the decoded message, as before. Null when the
|
|
4108
|
+
* signature's parameter has no message reader (messageReadable). */
|
|
4109
|
+
messageListenerHelper(t) {
|
|
4110
|
+
const key = typeKey(t);
|
|
4111
|
+
const existing = this.messageListeners.get(key);
|
|
4112
|
+
if (existing !== undefined)
|
|
4113
|
+
return existing;
|
|
4114
|
+
const param = t.params[0];
|
|
4115
|
+
const supported = t.params.length === 1 &&
|
|
4116
|
+
t.rest !== true &&
|
|
4117
|
+
param !== undefined &&
|
|
4118
|
+
(t.ret.kind === "void" || t.ret.kind === "f64" || t.ret.kind === "bool") &&
|
|
4119
|
+
this.messageReadable(param, new Set());
|
|
4120
|
+
if (!supported) {
|
|
4121
|
+
this.messageListeners.set(key, null);
|
|
4122
|
+
return null;
|
|
4123
|
+
}
|
|
4124
|
+
const name = `sc_dml_${this.messageListeners.size}`;
|
|
4125
|
+
this.messageListeners.set(key, name);
|
|
4126
|
+
const B = new BlockBuilder();
|
|
4127
|
+
B.entryAllocas.push(`%fail = alloca i1`);
|
|
4128
|
+
B.line(`store i1 false, ptr %fail`);
|
|
4129
|
+
const value = B.tmp();
|
|
4130
|
+
B.line(`${value} = call ${this.valTy(param)} @${this.messageReaderHelper(param)}(ptr %m, ${this.host.sizeType} 0, ptr %fail)`);
|
|
4131
|
+
const failed = B.tmp();
|
|
4132
|
+
B.line(`${failed} = load i1, ptr %fail`);
|
|
4133
|
+
const lMiss = B.newLabel("dml.miss");
|
|
4134
|
+
const lCall = B.newLabel("dml.call");
|
|
4135
|
+
B.condBr(failed, lMiss, lCall);
|
|
4136
|
+
B.startBlock(lMiss);
|
|
4137
|
+
B.terminate(`ret i1 false`);
|
|
4138
|
+
B.startBlock(lCall);
|
|
4139
|
+
// The closure consumes its parameter; a pending exception stays for
|
|
4140
|
+
// the emitter, as after the thunk.
|
|
4141
|
+
const fnp = B.tmp();
|
|
4142
|
+
const fn = B.tmp();
|
|
4143
|
+
B.line(`${fnp} = getelementptr inbounds %ScrClosure, ptr %c, i64 0, i32 1`);
|
|
4144
|
+
B.line(`${fn} = load ptr, ptr ${fnp}`);
|
|
4145
|
+
const args = `ptr %c, ${this.valTy(param)} ${value}`;
|
|
4146
|
+
if (t.ret.kind === "void")
|
|
4147
|
+
B.line(`call void ${fn}(${args})`);
|
|
4148
|
+
else
|
|
4149
|
+
B.line(`${B.tmp()} = call ${this.valTy(t.ret)} ${fn}(${args})`);
|
|
4150
|
+
B.terminate(`ret i1 true`);
|
|
4151
|
+
this.defs.push(`define internal zeroext i1 @${name}(ptr %c, ptr %m) ${FN_ATTRS} { ; message entry for ${llvmCommentText(key)}`, B.render(), `}`, ``);
|
|
4152
|
+
return name;
|
|
4153
|
+
}
|
|
4154
|
+
/** Whether a message reader can build T: numbers, booleans and strings;
|
|
4155
|
+
* records of them with only declared fields, none of union type; and
|
|
4156
|
+
* boxed unions of those arms and null or undefined without a literal
|
|
4157
|
+
* discriminator, with at most one number, boolean and string arm. */
|
|
4158
|
+
messageReadable(t, seen) {
|
|
4159
|
+
switch (t.kind) {
|
|
4160
|
+
case "f64":
|
|
4161
|
+
case "bool":
|
|
4162
|
+
case "string":
|
|
4163
|
+
return true;
|
|
4164
|
+
case "record": {
|
|
4165
|
+
const shape = this.host.recordsById.get(t.shapeId);
|
|
4166
|
+
if (!shape || shape.tuple || shape.indexValue || shape.fields.length === 0)
|
|
4167
|
+
return false;
|
|
4168
|
+
if (seen.has(t.shapeId) || this.isRecursiveShape(t))
|
|
4169
|
+
return false;
|
|
4170
|
+
seen.add(t.shapeId);
|
|
4171
|
+
const readable = shape.fields.every((f) => !f.name.startsWith("%") &&
|
|
4172
|
+
f.type.kind !== "union" &&
|
|
4173
|
+
llFieldType(f.type, this.host.inlineUnions.record(f.type)) !== INLINE_UNION_FIELD &&
|
|
4174
|
+
this.messageReadable(f.type, seen));
|
|
4175
|
+
seen.delete(t.shapeId);
|
|
4176
|
+
return readable;
|
|
4177
|
+
}
|
|
4178
|
+
case "union": {
|
|
4179
|
+
const def = this.host.unionsById.get(t.unionId);
|
|
4180
|
+
// A discriminated union's checked conversion also tests the arm's
|
|
4181
|
+
// literal discriminator, which the readers do not.
|
|
4182
|
+
if (!def || def.discriminant || this.host.nullableUnions.has(t.unionId))
|
|
4183
|
+
return false;
|
|
4184
|
+
const scalars = new Set();
|
|
4185
|
+
for (const arm of def.arms) {
|
|
4186
|
+
if (arm.kind === "nullT" || arm.kind === "undefinedT")
|
|
4187
|
+
continue;
|
|
4188
|
+
if (arm.kind === "f64" || arm.kind === "bool" || arm.kind === "string") {
|
|
4189
|
+
if (scalars.has(arm.kind))
|
|
4190
|
+
return false;
|
|
4191
|
+
scalars.add(arm.kind);
|
|
4192
|
+
continue;
|
|
4193
|
+
}
|
|
4194
|
+
if (arm.kind !== "record" || !this.messageReadable(arm, seen))
|
|
4195
|
+
return false;
|
|
4196
|
+
}
|
|
4197
|
+
return true;
|
|
4198
|
+
}
|
|
4199
|
+
default:
|
|
4200
|
+
return false;
|
|
4201
|
+
}
|
|
4202
|
+
}
|
|
4203
|
+
/** `sc_dmr_<n>(ptr message, size node, ptr fail) -> T`: T (+1) built
|
|
4204
|
+
* from a message node, for a type messageReadable accepts. Sets *fail
|
|
4205
|
+
* and returns a dummy when the node does not have T's layout: the arm
|
|
4206
|
+
* the checked conversion would choose, a record's declared keys in
|
|
4207
|
+
* declaration order and no others. */
|
|
4208
|
+
messageReaderHelper(t) {
|
|
4209
|
+
const key = typeKey(t);
|
|
4210
|
+
const existing = this.messageReaders.get(key);
|
|
4211
|
+
if (existing)
|
|
4212
|
+
return existing;
|
|
4213
|
+
const name = `sc_dmr_${this.messageReaders.size}`;
|
|
4214
|
+
this.messageReaders.set(key, name);
|
|
4215
|
+
const host = this.host;
|
|
4216
|
+
const S = host.sizeType;
|
|
4217
|
+
if (t.kind !== "record")
|
|
4218
|
+
host.declare(`declare i32 @scr_message_kind(ptr, ${S})`);
|
|
4219
|
+
const retTy = this.valTy(t);
|
|
4220
|
+
const dummy = retTy === "double" ? f64Lit(0) : retTy === "i1" ? "false" : "null";
|
|
4221
|
+
const B = new BlockBuilder();
|
|
4222
|
+
const lFail = B.newLabel("dmr.fail");
|
|
4223
|
+
// scr_message_fields tests a record's kind itself.
|
|
4224
|
+
const kind = B.tmp();
|
|
4225
|
+
if (t.kind !== "record")
|
|
4226
|
+
B.line(`${kind} = call i32 @scr_message_kind(ptr %m, ${S} %n)`);
|
|
4227
|
+
const requireKind = (want) => {
|
|
4228
|
+
const ok = B.tmp();
|
|
4229
|
+
B.line(`${ok} = icmp eq i32 ${kind}, ${want}`);
|
|
4230
|
+
const lOk = B.newLabel("dmr.kind");
|
|
4231
|
+
B.condBr(ok, lOk, lFail);
|
|
4232
|
+
B.startBlock(lOk);
|
|
4233
|
+
};
|
|
4234
|
+
switch (t.kind) {
|
|
4235
|
+
case "f64":
|
|
4236
|
+
case "bool": {
|
|
4237
|
+
host.declare(`declare double @scr_message_number(ptr, ${S})`);
|
|
4238
|
+
requireKind(t.kind === "f64" ? MESSAGE_KIND.NUMBER : MESSAGE_KIND.BOOL);
|
|
4239
|
+
const n = B.tmp();
|
|
4240
|
+
B.line(`${n} = call double @scr_message_number(ptr %m, ${S} %n)`);
|
|
4241
|
+
if (t.kind === "f64")
|
|
4242
|
+
B.terminate(`ret double ${n}`);
|
|
4243
|
+
else {
|
|
4244
|
+
const b = B.tmp();
|
|
4245
|
+
B.line(`${b} = fcmp une double ${n}, ${f64Lit(0)}`);
|
|
4246
|
+
B.terminate(`ret i1 ${b}`);
|
|
4247
|
+
}
|
|
4248
|
+
break;
|
|
4249
|
+
}
|
|
4250
|
+
case "string": {
|
|
4251
|
+
host.declare(`declare ptr @scr_message_string(ptr, ${S})`);
|
|
4252
|
+
requireKind(MESSAGE_KIND.STRING);
|
|
4253
|
+
const str = B.tmp();
|
|
4254
|
+
B.line(`${str} = call ptr @scr_message_string(ptr %m, ${S} %n)`);
|
|
4255
|
+
B.terminate(`ret ptr ${str}`);
|
|
4256
|
+
break;
|
|
4257
|
+
}
|
|
4258
|
+
case "record": {
|
|
4259
|
+
const shape = host.recordsById.get(t.shapeId);
|
|
4260
|
+
const order = recordSourceFieldOrder(shape);
|
|
4261
|
+
const fields = new Map(shape.fields.map((f, i) => [f.name, { field: f, index: i }]));
|
|
4262
|
+
const base = host.nullableUnions.fieldBase(t.shapeId);
|
|
4263
|
+
const struct = mangleRecordStruct(t.shapeId);
|
|
4264
|
+
const names = this.recordNameTable(t.shapeId, shape);
|
|
4265
|
+
host.declare(`declare zeroext i1 @scr_message_fields(ptr, ${S}, ptr, ptr, ${S}, ptr)`);
|
|
4266
|
+
B.entryAllocas.push(`%kids = alloca [${order.length} x ${S}]`);
|
|
4267
|
+
const matched = B.tmp();
|
|
4268
|
+
B.line(`${matched} = call zeroext i1 @scr_message_fields(ptr %m, ${S} %n, ptr ${names.names}, ptr ${names.lens}, ${S} ${order.length}, ptr %kids)`);
|
|
4269
|
+
const lBuild = B.newLabel("dmr.build");
|
|
4270
|
+
B.condBr(matched, lBuild, lFail);
|
|
4271
|
+
B.startBlock(lBuild);
|
|
4272
|
+
B.line(`%r0 = call ptr @${mangleRecordNew(t.shapeId)}()`);
|
|
4273
|
+
order.forEach((fieldName, i) => {
|
|
4274
|
+
const { field, index } = fields.get(fieldName);
|
|
4275
|
+
const kidp = B.tmp();
|
|
4276
|
+
const kid = B.tmp();
|
|
4277
|
+
B.line(`${kidp} = getelementptr inbounds [${order.length} x ${S}], ptr %kids, i64 0, i64 ${i}`);
|
|
4278
|
+
B.line(`${kid} = load ${S}, ptr ${kidp}`);
|
|
4279
|
+
const v = B.tmp();
|
|
4280
|
+
B.line(`${v} = call ${this.valTy(field.type)} @${this.messageReaderHelper(field.type)}(ptr %m, ${S} ${kid}, ptr %fail)`);
|
|
4281
|
+
const failed = B.tmp();
|
|
4282
|
+
B.line(`${failed} = load i1, ptr %fail`);
|
|
4283
|
+
const lDrop = B.newLabel("dmr.drop");
|
|
4284
|
+
const lStore = B.newLabel("dmr.store");
|
|
4285
|
+
B.condBr(failed, lDrop, lStore);
|
|
4286
|
+
B.startBlock(lDrop);
|
|
4287
|
+
B.line(`call void ${releaseSym(host, t)}(ptr %r0)`);
|
|
4288
|
+
B.terminate(`ret ptr null`);
|
|
4289
|
+
B.startBlock(lStore);
|
|
4290
|
+
const p = B.tmp();
|
|
4291
|
+
B.line(`${p} = getelementptr inbounds %${struct}, ptr %r0, i64 0, i32 ${index + base} ; .${llvmCommentText(fieldName)}`);
|
|
4292
|
+
const fieldTy = llFieldType(field.type, host.inlineUnions.record(field.type));
|
|
4293
|
+
if (fieldTy === "i8") {
|
|
4294
|
+
const z = B.tmp();
|
|
4295
|
+
B.line(`${z} = zext i1 ${v} to i8`);
|
|
4296
|
+
B.line(`store i8 ${z}, ptr ${p}`);
|
|
4297
|
+
}
|
|
4298
|
+
else {
|
|
4299
|
+
B.line(`store ${fieldTy} ${v}, ptr ${p}`);
|
|
4300
|
+
}
|
|
4301
|
+
});
|
|
4302
|
+
B.terminate(`ret ptr %r0`);
|
|
4303
|
+
break;
|
|
4304
|
+
}
|
|
4305
|
+
case "union": {
|
|
4306
|
+
const def = host.unionsById.get(t.unionId);
|
|
4307
|
+
def.arms.forEach((arm, i) => {
|
|
4308
|
+
const lNext = B.newLabel("dmr.next");
|
|
4309
|
+
if (arm.kind === "nullT" || arm.kind === "undefinedT") {
|
|
4310
|
+
const hit = B.tmp();
|
|
4311
|
+
B.line(`${hit} = icmp eq i32 ${kind}, ${arm.kind === "nullT" ? MESSAGE_KIND.NULL : MESSAGE_KIND.UNDEFINED}`);
|
|
4312
|
+
const lHit = B.newLabel("dmr.unit");
|
|
4313
|
+
B.condBr(hit, lHit, lNext);
|
|
4314
|
+
B.startBlock(lHit);
|
|
4315
|
+
B.terminate(`ret ptr ${host.unitInstanceRef(t.unionId, i)}`);
|
|
4316
|
+
B.startBlock(lNext);
|
|
4317
|
+
return;
|
|
4318
|
+
}
|
|
4319
|
+
if (arm.kind !== "record") {
|
|
4320
|
+
const want = arm.kind === "f64"
|
|
4321
|
+
? MESSAGE_KIND.NUMBER
|
|
4322
|
+
: arm.kind === "bool"
|
|
4323
|
+
? MESSAGE_KIND.BOOL
|
|
4324
|
+
: MESSAGE_KIND.STRING;
|
|
4325
|
+
const hit = B.tmp();
|
|
4326
|
+
B.line(`${hit} = icmp eq i32 ${kind}, ${want}`);
|
|
4327
|
+
const lHit = B.newLabel("dmr.arm");
|
|
4328
|
+
B.condBr(hit, lHit, lNext);
|
|
4329
|
+
B.startBlock(lHit);
|
|
4330
|
+
}
|
|
4331
|
+
// A record arm that does not match leaves *fail clear for the
|
|
4332
|
+
// next arm, like the checked conversion's next-arm match.
|
|
4333
|
+
const v = B.tmp();
|
|
4334
|
+
B.line(`${v} = call ${this.valTy(arm)} @${this.messageReaderHelper(arm)}(ptr %m, ${S} %n, ptr %fail)`);
|
|
4335
|
+
if (arm.kind === "record") {
|
|
4336
|
+
const failed = B.tmp();
|
|
4337
|
+
B.line(`${failed} = load i1, ptr %fail`);
|
|
4338
|
+
const lHit = B.newLabel("dmr.arm");
|
|
4339
|
+
const lMiss = B.newLabel("dmr.miss");
|
|
4340
|
+
B.condBr(failed, lMiss, lHit);
|
|
4341
|
+
B.startBlock(lMiss);
|
|
4342
|
+
B.line(`store i1 false, ptr %fail`);
|
|
4343
|
+
B.br(lNext);
|
|
4344
|
+
B.startBlock(lHit);
|
|
4345
|
+
}
|
|
4346
|
+
const u = B.tmp();
|
|
4347
|
+
if (arm.kind === "f64") {
|
|
4348
|
+
host.declare(`declare ptr @scr_union_new_f64(i32, double)`);
|
|
4349
|
+
B.line(`${u} = call ptr @scr_union_new_f64(i32 ${i}, double ${v})`);
|
|
4350
|
+
}
|
|
4351
|
+
else if (arm.kind === "bool") {
|
|
4352
|
+
host.declare(`declare ptr @scr_union_new_bool(i32, i1 zeroext)`);
|
|
4353
|
+
B.line(`${u} = call ptr @scr_union_new_bool(i32 ${i}, i1 ${v})`);
|
|
4354
|
+
}
|
|
4355
|
+
else {
|
|
4356
|
+
const rc = vAdapters(host, arm);
|
|
4357
|
+
host.declare(`declare ptr @scr_union_new_ref(i32, ptr, ptr, ptr, ptr)`);
|
|
4358
|
+
B.line(`${u} = call ptr @scr_union_new_ref(i32 ${i}, ptr ${v}, ptr ${rc.retain}, ptr ${rc.release}, ptr ${traceArg(host, arm)})`);
|
|
4359
|
+
}
|
|
4360
|
+
B.terminate(`ret ptr ${u}`);
|
|
4361
|
+
B.startBlock(lNext);
|
|
4362
|
+
});
|
|
4363
|
+
B.br(lFail);
|
|
4364
|
+
break;
|
|
4365
|
+
}
|
|
4366
|
+
default:
|
|
4367
|
+
throw new InternalCompilerError(`llvm emitter bug: message reader of ${key}`);
|
|
4368
|
+
}
|
|
4369
|
+
B.startBlock(lFail);
|
|
4370
|
+
B.line(`store i1 true, ptr %fail`);
|
|
4371
|
+
B.terminate(`ret ${retTy} ${dummy}`);
|
|
4372
|
+
this.defs.push(`define internal ${retTy === "i1" ? "zeroext i1" : retTy} @${name}(ptr %m, ${S} %n, ptr %fail) ${FN_ATTRS} { ; message reader for ${llvmCommentText(key)}`, B.render(), `}`, ``);
|
|
4373
|
+
return name;
|
|
4374
|
+
}
|
|
3996
4375
|
/** The adapter closure body for one TARGET signature: caps[0] is an
|
|
3997
4376
|
* untraced obj-box owning the dyn function value. */
|
|
3998
4377
|
dynFuncAdapterHelper(t) {
|