@scriptc/compiler 0.4.2 → 0.4.4
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 +470 -66
- package/dist/backend/cycle-analysis.d.ts +4 -1
- package/dist/backend/cycle-analysis.js +6 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +55 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +7 -0
- package/dist/backend/cycle-mutability.js +19 -1
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +2 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +6 -3
- package/dist/backend/immutability.js +33 -29
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +16 -1
- package/dist/backend/llvm/alloc.js +54 -4
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
- package/dist/backend/llvm/appended-array-literals.js +44 -36
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +4 -3
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +4 -3
- package/dist/backend/llvm/array-search.js +21 -9
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +1 -1
- package/dist/backend/llvm/blocks.js +2 -2
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/byte-windows.js +2 -0
- package/dist/backend/llvm/byte-windows.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +6 -1
- package/dist/backend/llvm/bytes-alias.js +8 -2
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +47 -5
- package/dist/backend/llvm/bytes-loop-versions.js +479 -32
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +263 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +7 -5
- package/dist/backend/llvm/classes.js +44 -20
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +167 -7
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +9 -3
- package/dist/backend/llvm/common.js +9 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
- package/dist/backend/llvm/constant-callbacks.js +83 -52
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +7 -0
- package/dist/backend/llvm/counted-loops.js +18 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/debug-info.js +2 -5
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +39 -8
- package/dist/backend/llvm/dense-array-access.js +222 -52
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +36 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +17 -1
- package/dist/backend/llvm/dense-array-loops.js +194 -5
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +90 -1
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +30 -0
- package/dist/backend/llvm/dyn.js +373 -70
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +13 -28
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +93 -0
- package/dist/backend/llvm/emit-journal.js +170 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -0
- package/dist/backend/llvm/emit-module.js +211 -33
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -4
- package/dist/backend/llvm/emit-statements.js +268 -84
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter-state.d.ts +7 -0
- package/dist/backend/llvm/emitter-state.js +14 -0
- package/dist/backend/llvm/emitter-state.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +186 -37
- package/dist/backend/llvm/emitter.js +733 -90
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +65 -7
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +11 -13
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +48 -20
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +47 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +28 -14
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +14 -2
- package/dist/backend/llvm/expr-containers.js +143 -37
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +14 -0
- package/dist/backend/llvm/expr-dynamic.js +18 -11
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +119 -38
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -6
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +12 -0
- package/dist/backend/llvm/expr-records.js +106 -0
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-bridges.js +210 -69
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +74 -20
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
- package/dist/backend/llvm/int32-kind-loops.js +106 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +25 -1
- package/dist/backend/llvm/integer-values.js +95 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +1 -1
- package/dist/backend/llvm/js-ic.js +1 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/key-orders.d.ts +7 -0
- package/dist/backend/llvm/key-orders.js +33 -0
- package/dist/backend/llvm/key-orders.js.map +1 -0
- package/dist/backend/llvm/lib-connect.js +4 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +11 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +213 -5
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +4 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +4 -0
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +16 -6
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +37 -1
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +94 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +35 -5
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +115 -19
- 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/loop-state.d.ts +33 -0
- package/dist/backend/llvm/loop-state.js +42 -0
- package/dist/backend/llvm/loop-state.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
- package/dist/backend/llvm/map-number-lookup.js +91 -31
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +55 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +4 -2
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +2 -1
- package/dist/backend/llvm/nullable-unions.js +15 -3
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +10 -0
- package/dist/backend/llvm/publish.js +15 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/receivers.js +6 -1
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +1 -9
- package/dist/backend/llvm/record-results.js +2 -11
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +3 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +7 -2
- package/dist/backend/llvm/reference-writes.js +89 -72
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/running-extrema.d.ts +11 -0
- package/dist/backend/llvm/running-extrema.js +115 -0
- package/dist/backend/llvm/running-extrema.js.map +1 -0
- package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
- package/dist/backend/llvm/running-extrema.test.js +89 -0
- package/dist/backend/llvm/running-extrema.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +71 -15
- package/dist/backend/llvm/shapes.js +224 -40
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +53 -7
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +6 -0
- package/dist/backend/llvm/speculative-integers.js +2 -2
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-captures.js +1 -5
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +3 -2
- package/dist/backend/llvm/stack-objects.js +5 -2
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +12 -0
- package/dist/backend/llvm/string-reads.js +44 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/union-repr.d.ts +4 -3
- package/dist/backend/llvm/union-repr.js +6 -5
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -0
- package/dist/backend/llvm/walk-borrows.js +46 -41
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +3 -0
- package/dist/backend/llvm/walkers.js +101 -65
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
- package/dist/backend/llvm/wrapping-sums.js +126 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/may-throw.d.ts +8 -10
- package/dist/backend/may-throw.js +14 -10
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -0
- package/dist/backend/native/executable.js +7 -0
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +5 -3
- package/dist/backend/native-codegen-core.js +13 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +6 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +4 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.d.ts +12 -1
- package/dist/backend/publication.js +37 -14
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/publication.test.js +30 -0
- package/dist/backend/publication.test.js.map +1 -1
- package/dist/backend/result-slots.d.ts +16 -0
- package/dist/backend/result-slots.js +23 -0
- package/dist/backend/result-slots.js.map +1 -0
- 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 +1 -0
- package/dist/backend/runtime-pack-core.js +1 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +2 -1
- package/dist/backend/stack-observations.js +67 -42
- package/dist/backend/stack-observations.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +26 -0
- package/dist/backend/target-cpu.js +98 -0
- package/dist/backend/target-cpu.js.map +1 -0
- package/dist/backend/target-cpu.test.d.ts +1 -0
- package/dist/backend/target-cpu.test.js +38 -0
- package/dist/backend/target-cpu.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +5 -3
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +20 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +4 -1
- package/dist/cli/usage.js +10 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +1 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/check.js +4 -3
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.js +10 -2
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.js +12 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +3 -0
- package/dist/diagnostics/envelope.js +1 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +5 -0
- package/dist/executable/executable-cache.js +5 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +3 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +41 -0
- package/dist/frontend/decl-projection.js +949 -0
- package/dist/frontend/decl-projection.js.map +1 -0
- package/dist/frontend/decl-projection.test.d.ts +1 -0
- package/dist/frontend/decl-projection.test.js +30 -0
- package/dist/frontend/decl-projection.test.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +15 -0
- package/dist/frontend/dts-paths.js +25 -0
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +6 -0
- package/dist/frontend/input-tracker.js +51 -28
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +19 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +100 -2
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
- package/dist/frontend/lowering/builtins/async-context.js +62 -3
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +13 -2
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +87 -10
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.js +4 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +3 -3
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
- package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
- package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +6 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +9 -1
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +7 -1
- package/dist/frontend/lowering/builtins/promises.js +236 -139
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
- package/dist/frontend/lowering/builtins/readline.js +35 -3
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +24 -1
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +6 -3
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +0 -1
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
- package/dist/frontend/lowering/cjs-inline-require.js +307 -4
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
- package/dist/frontend/lowering/class-callbacks.js +82 -12
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +4 -1
- package/dist/frontend/lowering/class-construction.js +17 -3
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +49 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.js +880 -108
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +47 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +2 -1
- package/dist/frontend/lowering/class-iterables.js +9 -1
- package/dist/frontend/lowering/class-iterables.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +83 -24
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +25 -0
- package/dist/frontend/lowering/class-protocols.js +183 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +31 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
- package/dist/frontend/lowering/class-runtime-statics.js +29 -4
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +91 -1
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
- package/dist/frontend/lowering/completion-callbacks.js +146 -0
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
- package/dist/frontend/lowering/containers/array-callbacks.js +345 -24
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +10 -0
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +5 -0
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +26 -3
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +19 -8
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
- package/dist/frontend/lowering/containers/bytes.js +455 -46
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +3 -0
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +7 -2
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
- package/dist/frontend/lowering/containers/indexed-objects.js +46 -7
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +55 -9
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +43 -19
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +11 -0
- package/dist/frontend/lowering/date-values.js +207 -0
- package/dist/frontend/lowering/date-values.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.js +15 -1
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.js +9 -1
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/error-methods.js +47 -2
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +53 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +100 -28
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +169 -13
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +64 -5
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +95 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +138 -51
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +12 -0
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +168 -10
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +212 -33
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +6 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js +4 -0
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +39 -3
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +28 -0
- package/dist/frontend/lowering/frozen-records.js +322 -0
- package/dist/frontend/lowering/frozen-records.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +64 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +7 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
- package/dist/frontend/lowering/indexed-unions.js +401 -0
- package/dist/frontend/lowering/indexed-unions.js.map +1 -0
- package/dist/frontend/lowering/iterable-values.d.ts +49 -0
- package/dist/frontend/lowering/iterable-values.js +297 -0
- package/dist/frontend/lowering/iterable-values.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +186 -1
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
- package/dist/frontend/lowering/js-class-fields.js +45 -10
- package/dist/frontend/lowering/js-class-fields.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +18 -3
- package/dist/frontend/lowering/key-order-witness.js +974 -48
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +530 -10
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +15 -3
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +4 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +7 -0
- package/dist/frontend/lowering/lower-calls.js +462 -44
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +11 -2
- package/dist/frontend/lowering/lower-classes.js +324 -69
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +3 -1
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +215 -3
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +11 -0
- package/dist/frontend/lowering/lower-functions.js +83 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +42 -32
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +6 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +53 -17
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +53 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +5 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +2 -2
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
- package/dist/frontend/lowering/lower-stdlib.js +30 -0
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
- package/dist/frontend/lowering/lower-stmts.js +553 -81
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +20 -2
- package/dist/frontend/lowering/lower-stream.js +1483 -156
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +107 -8
- package/dist/frontend/lowering/lowerer.js +381 -36
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
- package/dist/frontend/lowering/module-namespace-elements.js +82 -5
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/new-target.d.ts +12 -0
- package/dist/frontend/lowering/new-target.js +280 -0
- package/dist/frontend/lowering/new-target.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
- package/dist/frontend/lowering/object-factory-new.js +20 -6
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/overload-choice.d.ts +33 -0
- package/dist/frontend/lowering/overload-choice.js +190 -0
- package/dist/frontend/lowering/overload-choice.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +73 -8
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/undefined-index.d.ts +27 -0
- package/dist/frontend/lowering/undefined-index.js +82 -0
- package/dist/frontend/lowering/undefined-index.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +29 -13
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +18 -0
- package/dist/frontend/npm-static-bundled-chunks.js +9 -11
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static.js +4 -20
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +3 -0
- package/dist/frontend/package-shims.js +71 -8
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.js +19 -11
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +25 -0
- package/dist/frontend/process-fork.js +2 -0
- package/dist/frontend/process-fork.js.map +1 -0
- package/dist/frontend/program-analysis.d.ts +5 -1
- package/dist/frontend/program-analysis.js +5 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +21 -6
- package/dist/frontend/program.js +681 -83
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +43 -3
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/token-equivalence.d.ts +3 -0
- package/dist/frontend/token-equivalence.js +409 -0
- package/dist/frontend/token-equivalence.js.map +1 -0
- package/dist/frontend/token-equivalence.test.d.ts +1 -0
- package/dist/frontend/token-equivalence.test.js +67 -0
- package/dist/frontend/token-equivalence.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +22 -0
- package/dist/frontend/ts7/ast-node.js +1048 -103
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +24 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +4 -3
- package/dist/frontend/ts7/ast-wire.js +34 -24
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.test.js +23 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +3 -4
- package/dist/frontend/ts7/checker-backend.js +2 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +5 -9
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +4 -0
- package/dist/frontend/ts7/checker.js +7 -0
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
- package/dist/frontend/ts7/lib-diagnostics.js +307 -0
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +7 -0
- package/dist/frontend/ts7/program-host.js +25 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +3 -0
- package/dist/frontend/ts7/semantic-model.js +5 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +6 -1
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +1 -1
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +14 -1
- package/dist/frontend/ts7/session.js +22 -0
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +13 -1
- package/dist/frontend/type-mapper.js +229 -20
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +46 -4
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +5 -3
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +4 -0
- package/dist/ir/array-length-stability.js +19 -6
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +24 -0
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.d.ts +7 -0
- package/dist/ir/builtin-effects.js +60 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +6 -4
- package/dist/ir/builtin-signatures.js +222 -13
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +2 -1
- package/dist/ir/callback-specialization.js +23 -18
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +19 -0
- package/dist/ir/char-unit-locals.js +185 -0
- package/dist/ir/char-unit-locals.js.map +1 -0
- package/dist/ir/char-unit-locals.test.d.ts +1 -0
- package/dist/ir/char-unit-locals.test.js +94 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +2 -1
- package/dist/ir/final-fields.js +14 -16
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +2 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +3 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/initializer-bindings.d.ts +2 -1
- package/dist/ir/initializer-bindings.js +27 -20
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +108 -0
- package/dist/ir/int32-arrays.js +831 -0
- package/dist/ir/int32-arrays.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +24 -2
- package/dist/ir/int32-slots.js +266 -57
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +33 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +3 -3
- package/dist/ir/integer-loops.js +28 -10
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +10 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +5 -0
- package/dist/ir/integer-ranges.js +125 -12
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +30 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +83 -10
- package/dist/ir/ir.js +77 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +23 -2
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +4 -0
- package/dist/ir/js-ic.js +17 -1
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +46 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +57 -0
- package/dist/ir/node-index.js +215 -0
- package/dist/ir/node-index.js.map +1 -0
- package/dist/ir/paired-while-loops.d.ts +25 -0
- package/dist/ir/paired-while-loops.js +335 -0
- package/dist/ir/paired-while-loops.js.map +1 -0
- package/dist/ir/paired-while-loops.test.d.ts +1 -0
- package/dist/ir/paired-while-loops.test.js +163 -0
- package/dist/ir/paired-while-loops.test.js.map +1 -0
- package/dist/ir/parameter-versions.d.ts +25 -0
- package/dist/ir/parameter-versions.js +300 -0
- package/dist/ir/parameter-versions.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +34 -13
- package/dist/ir/runtime-features.js +177 -39
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.d.ts +12 -2
- package/dist/ir/serialize.js +16 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +17 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/traverse.js +18 -6
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +167 -40
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +3 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cache.d.ts +6 -1
- package/dist/native/cache.js +28 -5
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +16 -2
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +21 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.d.ts +1 -1
- package/dist/native/executable-cache.js +2 -2
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +4 -2
- package/dist/native/prepare.js +130 -32
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +96 -20
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.test.js +2 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/text-file.d.ts +13 -3
- package/dist/native/text-file.js +63 -9
- package/dist/native/text-file.js.map +1 -1
- package/dist/native/text-file.test.d.ts +1 -0
- package/dist/native/text-file.test.js +49 -0
- package/dist/native/text-file.test.js.map +1 -0
- package/dist/native/toolchain.js +4 -4
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +3 -3
- package/dist/native/toolchain.test.js.map +1 -1
- package/package.json +21 -21
- package/shims/chalk/v5.ts +688 -0
- package/shims/hono-node-server/v2.ts +645 -0
- package/shims/hot-shots/client.ts +1126 -0
- package/shims/hot-shots/v8-unix-dgram.ts +8 -0
- package/shims/hot-shots/v8.ts +8 -0
- package/surface-manifest.json +27 -7
|
@@ -3,8 +3,8 @@ import { keyedHelperName } from "./lowering/stable-names.js";
|
|
|
3
3
|
import { mockCallRecordType, mockContextType } from "./mock-shapes.js";
|
|
4
4
|
import * as ts from "./ts7/adapter.js";
|
|
5
5
|
import { bodyReadsArguments } from "./arguments-usage.js";
|
|
6
|
-
import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
|
|
7
|
-
import { BIGINT_T } from "../ir/ir.js";
|
|
6
|
+
import { BYTES_ELEMENT_NAME, arrayOf, isDynTypedRefType, BOOL, bytesOf, canConvertToDyn, canDynCheckTo, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DATE_T, DYN, F64, funcOf, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, iterableArmsElem, isUnitType, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, ZLIB_STREAM_MODES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, maybePromiseUnionArmsOk, unionContainerArmsOk, UNDEFINED_T, VOID, } from "../ir/ir.js";
|
|
7
|
+
import { BIGINT_T, KEY_ORDER_FIELD } from "../ir/ir.js";
|
|
8
8
|
import { literalValues } from "./literal-values.js";
|
|
9
9
|
import { remapUnionDiscriminant } from "./union-discriminants.js";
|
|
10
10
|
import { isJsSourceFile, isNodeTypesPath } from "./program.js";
|
|
@@ -121,6 +121,7 @@ export const CRYPTO_KEY_OPTION_DYN_TYPES = new Set([
|
|
|
121
121
|
"PrivateKeyInput",
|
|
122
122
|
"PublicKeyInput",
|
|
123
123
|
"RSAKeyPairKeyObjectOptions",
|
|
124
|
+
"X25519KeyPairOptions",
|
|
124
125
|
"RSAKeyPairOptions",
|
|
125
126
|
"SignKeyObjectInput",
|
|
126
127
|
"SignPrivateKeyInput",
|
|
@@ -150,6 +151,9 @@ export const FETCH_AMBIENT_TYPES = [
|
|
|
150
151
|
"ReadableStreamReadResult",
|
|
151
152
|
"ReadableStreamReadValueResult",
|
|
152
153
|
"ReadableStreamReadDoneResult",
|
|
154
|
+
"TransformStream",
|
|
155
|
+
"WritableStream",
|
|
156
|
+
"WritableStreamDefaultWriter",
|
|
153
157
|
"Blob",
|
|
154
158
|
"File",
|
|
155
159
|
"BlobPropertyBag",
|
|
@@ -446,6 +450,20 @@ export class ShapeRegistry {
|
|
|
446
450
|
const missing = extra.filter((name) => !order.includes(name));
|
|
447
451
|
return missing.length === 0 ? order : [...order, ...missing];
|
|
448
452
|
}
|
|
453
|
+
/** Gives a shape with orderVariants its KEY_ORDER_FIELD, in place,
|
|
454
|
+
* after the bodies lowered (key-order-witness.ts adds the field to each
|
|
455
|
+
* of the shape's literals). Allocation zeroes it, which every other
|
|
456
|
+
* construction keeps. */
|
|
457
|
+
addKeyOrderField(shapeId) {
|
|
458
|
+
const shape = this.byId.get(shapeId);
|
|
459
|
+
if (!shape || shape.fields.some((f) => f.name === KEY_ORDER_FIELD))
|
|
460
|
+
return;
|
|
461
|
+
shape.fields = [...shape.fields, { name: KEY_ORDER_FIELD, type: F64 }].sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
|
|
462
|
+
this.revision++;
|
|
463
|
+
const key = this.keyOf(shape.fields, false, shape.indexValue);
|
|
464
|
+
if (!this.byKey.has(key))
|
|
465
|
+
this.byKey.set(key, shapeId);
|
|
466
|
+
}
|
|
449
467
|
/** Adds optional fields to an interned shape in place: members a type
|
|
450
468
|
* assertion attaches to the shape's values (`r as R & { tag: string }`
|
|
451
469
|
* followed by `view.tag = ...`; see assertion-members.ts). Every value
|
|
@@ -1067,8 +1085,16 @@ function genChannels(yieldTs, retTs, nextTs, ctx) {
|
|
|
1067
1085
|
if (!nextT || nextT.kind === "void" || nextT.kind === "nullT")
|
|
1068
1086
|
return null;
|
|
1069
1087
|
const ownChannel = (t) => t.kind === "f64" || t.kind === "bool" || t.kind === "string";
|
|
1088
|
+
// A record yield channel keeps its type beside a dyn return (an
|
|
1089
|
+
// `IterableIterator<Row>`). A record return channel beside a dyn yield
|
|
1090
|
+
// does not: the value a delegating `yield*` answers (Effect.gen's
|
|
1091
|
+
// generators) is often an object whose methods a record would drop.
|
|
1070
1092
|
const dynMix = (yieldT.kind === "dyn" && retT.kind !== "dyn" && retT.kind !== "void" && !ownChannel(retT)) ||
|
|
1071
|
-
(retT.kind === "dyn" &&
|
|
1093
|
+
(retT.kind === "dyn" &&
|
|
1094
|
+
yieldT.kind !== "dyn" &&
|
|
1095
|
+
yieldT.kind !== "void" &&
|
|
1096
|
+
!ownChannel(yieldT) &&
|
|
1097
|
+
yieldT.kind !== "record");
|
|
1072
1098
|
if (dynMix)
|
|
1073
1099
|
return { yieldT: DYN, retT: DYN, nextT };
|
|
1074
1100
|
return { yieldT, retT, nextT };
|
|
@@ -1489,9 +1515,15 @@ function mapTypeInner(type, ctx) {
|
|
|
1489
1515
|
// TypeScript's intrinsic globalThis symbol has no declaration. A stored
|
|
1490
1516
|
// reference needs native object identity, including var's undefined state.
|
|
1491
1517
|
const intrinsic = type.getSymbol();
|
|
1492
|
-
|
|
1493
|
-
ts.symbolName(
|
|
1494
|
-
|
|
1518
|
+
const isIntrinsicGlobal = (symbol) => symbol !== undefined &&
|
|
1519
|
+
ts.symbolName(symbol) === "globalThis" &&
|
|
1520
|
+
symbol.declarations.length === 0;
|
|
1521
|
+
if (isIntrinsicGlobal(intrinsic))
|
|
1522
|
+
return DYN;
|
|
1523
|
+
// `typeof globalThis & { key?: T }` (the global-singleton spelling) is the
|
|
1524
|
+
// same global object with declared extra members.
|
|
1525
|
+
if (type.isIntersectionType() &&
|
|
1526
|
+
ts.constituentTypes(type).some((part) => isIntrinsicGlobal(part.getSymbol())))
|
|
1495
1527
|
return DYN;
|
|
1496
1528
|
if (ctx.jsDynamicDeclaration !== undefined && intrinsic !== undefined) {
|
|
1497
1529
|
const objectLiteral = (intrinsic.flags & ts.SymbolFlags.ObjectLiteral) !== 0;
|
|
@@ -1994,6 +2026,23 @@ function mapTypeInner(type, ctx) {
|
|
|
1994
2026
|
return arrayOf(unitOnlyUnion(unions));
|
|
1995
2027
|
if (tupleShape?.elementFlags === undefined)
|
|
1996
2028
|
return null;
|
|
2029
|
+
// A leading-required tuple ending in a rest element whose positions
|
|
2030
|
+
// all share one type (`[string, ...string[]]`, the non-empty list)
|
|
2031
|
+
// is an array of that type: every read, write and method behaves as
|
|
2032
|
+
// the array's, and tsc already proves the required positions exist.
|
|
2033
|
+
const flags = tupleShape.elementFlags;
|
|
2034
|
+
if (flags.length >= 2 &&
|
|
2035
|
+
(flags[flags.length - 1] & ts.ElementFlags.Rest) !== 0 &&
|
|
2036
|
+
flags.slice(0, -1).every((f) => (f & ts.ElementFlags.Required) !== 0)) {
|
|
2037
|
+
const elems = args.map((a) => mapType(a, ctx));
|
|
2038
|
+
const first = elems[0];
|
|
2039
|
+
if (first &&
|
|
2040
|
+
first.kind !== "void" &&
|
|
2041
|
+
isSupportedArrayElem(first) &&
|
|
2042
|
+
elems.every((e) => e !== null && typeEquals(e, first)))
|
|
2043
|
+
return arrayOf(first);
|
|
2044
|
+
return null;
|
|
2045
|
+
}
|
|
1997
2046
|
// Optional/rest elements have no fixed native tuple layout.
|
|
1998
2047
|
if (tupleShape.elementFlags.some((f) => !(f & ts.ElementFlags.Required))) {
|
|
1999
2048
|
return null;
|
|
@@ -2585,7 +2634,7 @@ function mapTypeInner(type, ctx) {
|
|
|
2585
2634
|
}
|
|
2586
2635
|
if (psym &&
|
|
2587
2636
|
FETCH_AMBIENT_TYPES.includes(ts.symbolName(psym)) &&
|
|
2588
|
-
!(ts.symbolName(psym) === "ReadableStream" &&
|
|
2637
|
+
!((ts.symbolName(psym) === "ReadableStream" || ts.symbolName(psym) === "WritableStream") &&
|
|
2589
2638
|
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientNamespace(d, "NodeJS"))) &&
|
|
2590
2639
|
psym.declarations.some((d) => (ts.isInterfaceDeclaration(d) || ts.isClassDeclaration(d)) &&
|
|
2591
2640
|
ctx.isStdlibFile(ts.getSourceFileOfNode(d)))) {
|
|
@@ -2653,6 +2702,9 @@ function mapTypeInner(type, ctx) {
|
|
|
2653
2702
|
// The runtime rejects reference kinds without a weak lifetime contract.
|
|
2654
2703
|
if (isStdlibInterface("WeakMap") || isStdlibInterface("WeakSet"))
|
|
2655
2704
|
return DYN;
|
|
2705
|
+
// FinalizationRegistry is a native handle with register and unregister.
|
|
2706
|
+
if (isStdlibInterface("FinalizationRegistry"))
|
|
2707
|
+
return DYN;
|
|
2656
2708
|
// Set<T>: Map's sibling — same provenance rule and key domain.
|
|
2657
2709
|
// Anything else stays unmapped;
|
|
2658
2710
|
// the `new Set` lowering names the offending element type specifically.
|
|
@@ -2669,10 +2721,9 @@ function mapTypeInner(type, ctx) {
|
|
|
2669
2721
|
const collectionView = mapCollectionView(widened, ctx);
|
|
2670
2722
|
if (collectionView)
|
|
2671
2723
|
return collectionView;
|
|
2672
|
-
// Date: a TimeClip'd
|
|
2673
|
-
//
|
|
2674
|
-
//
|
|
2675
|
-
// carries no object identity.
|
|
2724
|
+
// Date: a refcounted object holding its TimeClip'd time value (ScrDate),
|
|
2725
|
+
// shared with the checked-dynamic Date handle, so it keeps its identity
|
|
2726
|
+
// through every slot and through `unknown`. Setters stay fenced.
|
|
2676
2727
|
if (isStdlibInterface("Date"))
|
|
2677
2728
|
return DATE_T;
|
|
2678
2729
|
// RegExp: a reference to the lib RegExp interface — provenance, not the
|
|
@@ -3260,8 +3311,10 @@ function mapTypeInner(type, ctx) {
|
|
|
3260
3311
|
// Mixed dyn/concrete value channels share checked storage, so either
|
|
3261
3312
|
// branch of the result record has the same representation. A number,
|
|
3262
3313
|
// boolean or string channel keeps its own type beside a dyn one (the
|
|
3263
|
-
// `Generator<number>`
|
|
3264
|
-
//
|
|
3314
|
+
// `Generator<number>` default), and so does a record yield channel beside
|
|
3315
|
+
// a dyn return (`IterableIterator<Row>`): its values ride OUT typed and box
|
|
3316
|
+
// only when the result record is built, so for-of and spread read them
|
|
3317
|
+
// back unchecked.
|
|
3265
3318
|
if (isStdlibInterface("Generator") ||
|
|
3266
3319
|
isStdlibInterface("AsyncGenerator") ||
|
|
3267
3320
|
isStdlibInterface("IterableIterator") ||
|
|
@@ -3285,6 +3338,14 @@ function mapTypeInner(type, ctx) {
|
|
|
3285
3338
|
...channels,
|
|
3286
3339
|
};
|
|
3287
3340
|
}
|
|
3341
|
+
// Iterable<T>: the iterable union (iterableUnionType) — the source value
|
|
3342
|
+
// itself in its own arm, so an array stays the same multi-pass object and
|
|
3343
|
+
// a generator stays single-pass.
|
|
3344
|
+
if (isStdlibInterface("Iterable")) {
|
|
3345
|
+
const arg = checker.getTypeArguments(widened)[0];
|
|
3346
|
+
const elem = arg ? mapType(arg, ctx) : null;
|
|
3347
|
+
return elem ? iterableUnionType(elem, ctx.shapes, unions) : null;
|
|
3348
|
+
}
|
|
3288
3349
|
// IteratorResult<T, TReturn> — the checker's type of `g.next()` (an
|
|
3289
3350
|
// alias for IteratorYieldResult<T> | IteratorReturnResult<TReturn>):
|
|
3290
3351
|
// maps to the SAME interned record genResume answers, so `const r =
|
|
@@ -3402,6 +3463,13 @@ function mapTypeInner(type, ctx) {
|
|
|
3402
3463
|
fields.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
|
|
3403
3464
|
return { kind: "record", shapeId: ctx.shapes.intern(fields, false, undefined, order) };
|
|
3404
3465
|
}
|
|
3466
|
+
// crypto.getCipherInfo's result is Node's info object itself, read as a
|
|
3467
|
+
// checked-dynamic value: Node leaves out the fields a cipher lacks,
|
|
3468
|
+
// including the nid the declaration requires, so a record cannot hold
|
|
3469
|
+
// every result.
|
|
3470
|
+
if (isStdlibInterface("CipherInfo") &&
|
|
3471
|
+
psym.declarations.some((d) => ts.isInterfaceDeclaration(d) && isDeclaredInAmbientModule(d, "crypto")))
|
|
3472
|
+
return DYN;
|
|
3405
3473
|
// Filesystem options are data records. Keep their declared optional fields
|
|
3406
3474
|
// instead of allowing arbitrary standard-library interfaces into records.
|
|
3407
3475
|
if (((psym !== undefined && ts.symbolName(psym) === "FileReadOptions") ||
|
|
@@ -3889,6 +3957,10 @@ function mapTypeInner(type, ctx) {
|
|
|
3889
3957
|
return hybrid;
|
|
3890
3958
|
}
|
|
3891
3959
|
const callSigs = checker.getCallSignatures(widened);
|
|
3960
|
+
// AsyncLocalStorage.snapshot()'s generic runner is a dyn function value
|
|
3961
|
+
// (als.snapshot), called through the dyn call path.
|
|
3962
|
+
if (callSigs.length === 1 && isAsyncLocalStorageSnapshot(callSigs[0], ctx))
|
|
3963
|
+
return DYN;
|
|
3892
3964
|
if (callSigs.length === 1)
|
|
3893
3965
|
return mapCallSignature(callSigs[0], ctx);
|
|
3894
3966
|
// Records: object types whose members are all data properties (shorthand
|
|
@@ -4178,9 +4250,10 @@ function mapTypeInner(type, ctx) {
|
|
|
4178
4250
|
}
|
|
4179
4251
|
if (arms.some((a) => a.kind === "void" ||
|
|
4180
4252
|
a.kind === "union" ||
|
|
4181
|
-
a.kind === "date" ||
|
|
4182
4253
|
a.kind === "dyn" ||
|
|
4183
|
-
|
|
4254
|
+
// A generator arm only comes from an Iterable<T> (an optional
|
|
4255
|
+
// one keeps its unit arms beside the iterable union's).
|
|
4256
|
+
(a.kind === "generator" && iterableArmsElem(arms) === null)) ||
|
|
4184
4257
|
!maybePromiseUnionOk(parts, arms, ctx)) {
|
|
4185
4258
|
return null;
|
|
4186
4259
|
}
|
|
@@ -4210,6 +4283,24 @@ function mapTypeInner(type, ctx) {
|
|
|
4210
4283
|
/** One non-overloaded call signature's func type (mapTypeInner's
|
|
4211
4284
|
* single-signature rule; erasedOverloadMemberType maps each overload of a
|
|
4212
4285
|
* member through it). */
|
|
4286
|
+
/** Whether `sig` is the function type AsyncLocalStorage.snapshot() returns:
|
|
4287
|
+
* declared as that static method's return type in the async_hooks module
|
|
4288
|
+
* of the standard library declarations. */
|
|
4289
|
+
function isAsyncLocalStorageSnapshot(sig, ctx) {
|
|
4290
|
+
const decl = sig.declaration;
|
|
4291
|
+
if (decl === undefined || !ts.isFunctionTypeNode(decl))
|
|
4292
|
+
return false;
|
|
4293
|
+
const method = decl.parent;
|
|
4294
|
+
return (method !== undefined &&
|
|
4295
|
+
ts.isMethodDeclaration(method) &&
|
|
4296
|
+
ts.isIdentifier(method.name) &&
|
|
4297
|
+
method.name.text === "snapshot" &&
|
|
4298
|
+
method.parent !== undefined &&
|
|
4299
|
+
ts.isClassDeclaration(method.parent) &&
|
|
4300
|
+
method.parent.name?.text === "AsyncLocalStorage" &&
|
|
4301
|
+
ctx.isStdlibFile(ts.getSourceFileOfNode(decl)) &&
|
|
4302
|
+
isDeclaredInAmbientModule(decl, "async_hooks"));
|
|
4303
|
+
}
|
|
4213
4304
|
function mapCallSignature(sig, ctx) {
|
|
4214
4305
|
const { checker } = ctx;
|
|
4215
4306
|
if (sig.getTypeParameters().length && ctx.erasingSignature !== sig)
|
|
@@ -4983,6 +5074,53 @@ function constAssertedEmptyArrayProp(p) {
|
|
|
4983
5074
|
return false;
|
|
4984
5075
|
return underConstAssertion(d);
|
|
4985
5076
|
}
|
|
5077
|
+
/** A TypeScript property assignment `name: []` whose type is `never[]`. */
|
|
5078
|
+
function emptyNeverArrayProp(p, fieldTs, checker) {
|
|
5079
|
+
const d = p.valueDeclaration;
|
|
5080
|
+
if (d === undefined || !ts.isPropertyAssignment(d))
|
|
5081
|
+
return false;
|
|
5082
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(d)))
|
|
5083
|
+
return false;
|
|
5084
|
+
if (!ts.isArrayLiteralExpression(d.initializer) || d.initializer.elements.nodes.length > 0)
|
|
5085
|
+
return false;
|
|
5086
|
+
return (checker.isArrayType(fieldTs) &&
|
|
5087
|
+
(checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
|
|
5088
|
+
}
|
|
5089
|
+
/** A JavaScript object literal's property typed `never[]` (`{ issues: [] }`).
|
|
5090
|
+
* Nothing checks a JavaScript file's later writes, which can push any value
|
|
5091
|
+
* onto it (`ctx.common.issues.push(issue)`), so it holds the checked-dynamic
|
|
5092
|
+
* array rather than never's f64 element array. */
|
|
5093
|
+
function jsNeverArrayProp(p, fieldTs, checker) {
|
|
5094
|
+
return (jsObjectLiteralProperty(p) &&
|
|
5095
|
+
checker.isArrayType(fieldTs) &&
|
|
5096
|
+
(checker.getTypeArguments(fieldTs)[0].flags & ts.TypeFlags.Never) !== 0);
|
|
5097
|
+
}
|
|
5098
|
+
/** A JavaScript object literal's property (`{ lastComponent: undefined }`,
|
|
5099
|
+
* `{ user: null }`). Nothing checks a JavaScript file's later writes, which
|
|
5100
|
+
* can store any value in it (`path.lastComponent = { ... }`), so a
|
|
5101
|
+
* property whose only initializer is a unit holds the checked-dynamic value
|
|
5102
|
+
* rather than the unit-only union. */
|
|
5103
|
+
function isUnitOnlyIr(t, ctx) {
|
|
5104
|
+
if (t.kind !== "union")
|
|
5105
|
+
return false;
|
|
5106
|
+
const def = ctx.unions.get(t.unionId);
|
|
5107
|
+
return def !== undefined && def.arms.every((arm) => isUnitType(arm));
|
|
5108
|
+
}
|
|
5109
|
+
/** A property a JavaScript object literal declares. The checker also adds
|
|
5110
|
+
* each missing property, optional and `undefined`, to every literal of a
|
|
5111
|
+
* union of literals (`{ _tag, value } | { _tag, error }` gains
|
|
5112
|
+
* `error?: undefined` and `value?: undefined`); those keep their unit-only
|
|
5113
|
+
* type, so a literal still converts to the one arm whose properties it
|
|
5114
|
+
* has. */
|
|
5115
|
+
function jsObjectLiteralProperty(p) {
|
|
5116
|
+
const d = p.valueDeclaration;
|
|
5117
|
+
// `__proto__: null` sets the literal's prototype; it declares no property.
|
|
5118
|
+
return (d !== undefined &&
|
|
5119
|
+
(ts.isPropertyAssignment(d) || ts.isShorthandPropertyAssignment(d)) &&
|
|
5120
|
+
ts.symbolName(p) !== "__proto__" &&
|
|
5121
|
+
(p.flags & ts.SymbolFlags.Optional) === 0 &&
|
|
5122
|
+
isJsSourceFile(ts.getSourceFileOfNode(d)));
|
|
5123
|
+
}
|
|
4986
5124
|
function mapGenericAwaitedAlias(type, ctx) {
|
|
4987
5125
|
const { resolveTypeParam } = ctx;
|
|
4988
5126
|
if (!resolveTypeParam)
|
|
@@ -5545,6 +5683,40 @@ export function unitOnlyUnion(unions) {
|
|
|
5545
5683
|
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
5546
5684
|
return { kind: "union", unionId: unions.intern(arms) };
|
|
5547
5685
|
}
|
|
5686
|
+
/** `Iterable<T>`: a union whose arms are the sources that keep their own
|
|
5687
|
+
* representation — `T[]`, a `Set<T>`, a `Map<K, V>` (T the `[K, V]`
|
|
5688
|
+
* tuple), a string (T string) — and a generator over T, which also holds
|
|
5689
|
+
* every other iterator (Map/Set and array iterators adapt into one). The
|
|
5690
|
+
* generator arm marks the union as iterable (iterableArmsElem): no other
|
|
5691
|
+
* union has one. Null when T has no array or generator form. */
|
|
5692
|
+
export function iterableUnionType(elem, shapes, unions) {
|
|
5693
|
+
if (elem.kind === "void" || elem.kind === "generator" || !isSupportedArrayElem(elem))
|
|
5694
|
+
return null;
|
|
5695
|
+
if (!genResultRecord(elem, VOID, shapes, unions))
|
|
5696
|
+
return null;
|
|
5697
|
+
const arms = [
|
|
5698
|
+
{ kind: "array", elem },
|
|
5699
|
+
{ kind: "generator", yieldT: elem, retT: VOID, nextT: UNDEFINED_T },
|
|
5700
|
+
];
|
|
5701
|
+
const elemArms = elem.kind === "union" ? unions.get(elem.unionId)?.arms : undefined;
|
|
5702
|
+
if (isSupportedSetElem(elem, elemArms))
|
|
5703
|
+
arms.push({ kind: "set", elem });
|
|
5704
|
+
if (elem.kind === "string")
|
|
5705
|
+
arms.push(STRING);
|
|
5706
|
+
if (elem.kind === "record") {
|
|
5707
|
+
const shape = shapes.get(elem.shapeId);
|
|
5708
|
+
const [k, v] = shape?.fields ?? [];
|
|
5709
|
+
if (shape?.tuple &&
|
|
5710
|
+
shape.fields.length === 2 &&
|
|
5711
|
+
k?.name === "0" &&
|
|
5712
|
+
v?.name === "1" &&
|
|
5713
|
+
isSupportedMapKey(k.type, k.type.kind === "union" ? unions.get(k.type.unionId)?.arms : undefined) &&
|
|
5714
|
+
isSupportedMapValue(v.type))
|
|
5715
|
+
arms.push({ kind: "map", key: k.type, value: v.type });
|
|
5716
|
+
}
|
|
5717
|
+
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
5718
|
+
return { kind: "union", unionId: unions.intern(arms) };
|
|
5719
|
+
}
|
|
5548
5720
|
/** The IteratorResult record of a generator's value channels: `{ done:
|
|
5549
5721
|
* boolean, value: V }` where V is dyn (an any/unknown channel) or the
|
|
5550
5722
|
* canonical union of the yield arms, the return arms (when the return
|
|
@@ -5570,7 +5742,7 @@ export function genResultRecord(yieldT, retT, shapes, unions) {
|
|
|
5570
5742
|
byKey.set(typeKey(a), a);
|
|
5571
5743
|
return true;
|
|
5572
5744
|
}
|
|
5573
|
-
if (t.kind === "regex" || t.kind === "
|
|
5745
|
+
if (t.kind === "regex" || t.kind === "generator") {
|
|
5574
5746
|
return false; // no legal union arm exists for these kinds
|
|
5575
5747
|
}
|
|
5576
5748
|
byKey.set(typeKey(t), t);
|
|
@@ -5645,16 +5817,16 @@ export function withUnitArm(t, kind, unions) {
|
|
|
5645
5817
|
const def = unions.get(t.unionId);
|
|
5646
5818
|
if (!def)
|
|
5647
5819
|
return null;
|
|
5648
|
-
if (def.arms.some((a) => a.kind === "date"))
|
|
5649
|
-
return null;
|
|
5650
5820
|
if (def.arms.some((a) => a.kind === kind))
|
|
5651
5821
|
return t;
|
|
5652
5822
|
const arms = [...def.arms, unit];
|
|
5823
|
+
// Date and Promise arms beside other data arms have no union home.
|
|
5824
|
+
if (!unionContainerArmsOk(arms))
|
|
5825
|
+
return null;
|
|
5653
5826
|
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
5654
5827
|
return { kind: "union", unionId: unions.transform(def, arms) };
|
|
5655
5828
|
}
|
|
5656
5829
|
if (t.kind === "void" ||
|
|
5657
|
-
t.kind === "date" ||
|
|
5658
5830
|
t.kind === "dyn" ||
|
|
5659
5831
|
// A bare unit field type cannot occur (units live only inside unions),
|
|
5660
5832
|
// but guard against constructing a single-arm union from one.
|
|
@@ -6667,6 +6839,24 @@ function wideningAddedProperties(type, props, ctx) {
|
|
|
6667
6839
|
}
|
|
6668
6840
|
return added;
|
|
6669
6841
|
}
|
|
6842
|
+
/** Whether `type` is an interface one of whose `extends` clauses names a
|
|
6843
|
+
* type the checker answers `any` (or an error type) for. */
|
|
6844
|
+
function interfaceExtendsAny(type, checker) {
|
|
6845
|
+
const symbol = type.getSymbol();
|
|
6846
|
+
if (symbol === undefined || (symbol.flags & ts.SymbolFlags.Interface) === 0)
|
|
6847
|
+
return false;
|
|
6848
|
+
for (const decl of symbol.declarations) {
|
|
6849
|
+
if (!ts.isInterfaceDeclaration(decl))
|
|
6850
|
+
continue;
|
|
6851
|
+
for (const clause of decl.heritageClauses?.nodes ?? []) {
|
|
6852
|
+
for (const base of clause.types.nodes) {
|
|
6853
|
+
if ((checker.getTypeAtLocation(base).flags & ts.TypeFlags.Any) !== 0)
|
|
6854
|
+
return true;
|
|
6855
|
+
}
|
|
6856
|
+
}
|
|
6857
|
+
}
|
|
6858
|
+
return false;
|
|
6859
|
+
}
|
|
6670
6860
|
function mapRecordTypeInner(widened, ctx) {
|
|
6671
6861
|
const { checker, shapes } = ctx;
|
|
6672
6862
|
if (checker.getConstructSignatures(widened).length > 0)
|
|
@@ -6682,6 +6872,14 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6682
6872
|
const widenedSym = widened.getSymbol();
|
|
6683
6873
|
if (widenedSym !== undefined && (widenedSym.flags & ts.SymbolFlags.Enum) !== 0)
|
|
6684
6874
|
return null;
|
|
6875
|
+
// An interface extending a type the checker answers `any` for (in the
|
|
6876
|
+
// compiled world, a package type computed from members only its .d.ts
|
|
6877
|
+
// declares, such as `interface P extends z.infer<typeof S>`) has members
|
|
6878
|
+
// the checker cannot list: its own declared fields are not the whole
|
|
6879
|
+
// object. The value is checked-dynamic, never a record of the declared
|
|
6880
|
+
// fields alone.
|
|
6881
|
+
if (interfaceExtendsAny(widened, checker))
|
|
6882
|
+
return DYN;
|
|
6685
6883
|
// An index signature maps to a hybrid shape: declared fields keep
|
|
6686
6884
|
// struct slots, undeclared keys ride the shape's overflow map, valued
|
|
6687
6885
|
// uniformly by the signature's value type (`unknown` → dyn — a model-pricing table's
|
|
@@ -6951,6 +7149,14 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6951
7149
|
constAssertedEmptyArrayProp(p)) {
|
|
6952
7150
|
pt = arrayOf(unitOnlyUnion(ctx.unions));
|
|
6953
7151
|
}
|
|
7152
|
+
// A TypeScript property initialized with an empty literal and typed
|
|
7153
|
+
// `never[]` (`const out = { files: [] }`) holds no element, so it maps
|
|
7154
|
+
// like the empty tuple: the unit-only element array, which a
|
|
7155
|
+
// destination's typed array field (`files: string[]`) receives through
|
|
7156
|
+
// the checked empty-array lift. never's f64 element would make it a
|
|
7157
|
+
// `number[]` field.
|
|
7158
|
+
if (pt?.kind === "array" && emptyNeverArrayProp(p, fieldTs, checker))
|
|
7159
|
+
pt = arrayOf(unitOnlyUnion(ctx.unions));
|
|
6954
7160
|
if (pt === null && (fieldTs.flags & ts.TypeFlags.Any) !== 0)
|
|
6955
7161
|
pt = DYN;
|
|
6956
7162
|
// An `any[]` field (`list: any[]` in an SDK's message type, also
|
|
@@ -6970,6 +7176,10 @@ function mapRecordTypeInner(widened, ctx) {
|
|
|
6970
7176
|
// omits the undefined arm exactly like an omitted optional.
|
|
6971
7177
|
if (pt?.kind === "void" && isUnitOnlyTsType(fieldTs, ctx.resolveTypeParam))
|
|
6972
7178
|
pt = unitOnlyUnion(ctx.unions);
|
|
7179
|
+
if (pt !== null && isUnitOnlyIr(pt, ctx) && jsObjectLiteralProperty(p))
|
|
7180
|
+
pt = DYN;
|
|
7181
|
+
if (pt?.kind === "array" && jsNeverArrayProp(p, fieldTs, checker))
|
|
7182
|
+
pt = DYN;
|
|
6973
7183
|
// dyn FIELDS map now (`{ v: unknown }`, `[string, unknown]` tuples):
|
|
6974
7184
|
// the slot carries a dyn value exactly like an `unknown`-valued
|
|
6975
7185
|
// overflow entry — same RC adapters, same dynFrom conversion on the
|
|
@@ -7132,7 +7342,6 @@ function armHasUnionHome(arm) {
|
|
|
7132
7342
|
case "void":
|
|
7133
7343
|
case "union":
|
|
7134
7344
|
case "regex":
|
|
7135
|
-
case "date":
|
|
7136
7345
|
case "generator":
|
|
7137
7346
|
case "dyn":
|
|
7138
7347
|
return false;
|