@scriptc/compiler 0.3.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +960 -82
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +6 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +11 -0
- package/dist/backend/llvm/classes.js +71 -14
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +58 -8
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.js +1 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +12 -3
- package/dist/backend/llvm/dense-array-access.js +72 -14
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +59 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +28 -4
- package/dist/backend/llvm/dyn.js +324 -179
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1190 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1535 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +58 -0
- package/dist/backend/llvm/emit-statements.js +1964 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +576 -268
- package/dist/backend/llvm/emitter.js +801 -4447
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +71 -53
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +39 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +1 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +92 -63
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +132 -25
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +2 -2
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +54 -12
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +488 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +217 -24
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +102 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +77 -25
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +100 -50
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +229 -5
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +57 -8
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +2 -2
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.js +2 -2
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +151 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +70 -9
- package/dist/backend/llvm/nullable-unions.js +105 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +14 -2
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +13 -2
- package/dist/backend/llvm/record-results.js +66 -6
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +143 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +9 -6
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +1 -1
- package/dist/backend/llvm/shapes.d.ts +69 -43
- package/dist/backend/llvm/shapes.js +285 -21
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +74 -0
- package/dist/backend/llvm/speculative-integers.js +571 -0
- package/dist/backend/llvm/speculative-integers.js.map +1 -0
- package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
- package/dist/backend/llvm/speculative-integers.test.js +148 -0
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +110 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +7 -0
- package/dist/backend/mangle.js +11 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +6 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +37 -0
- package/dist/backend/native/executable.js +192 -134
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.test.js +1 -1
- package/dist/backend/runtime-pack-core.d.ts +9 -1
- package/dist/backend/runtime-pack-core.js +10 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +5 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -3
- package/dist/backend/runtime-pack.js +12 -6
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +20 -6
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +8 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +5 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +44 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +11 -1
- package/dist/cli/usage.js +20 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +13 -0
- package/dist/contracts/check.js +25 -6
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +19 -6
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +11 -7
- package/dist/diagnostics/diagnostic.js +35 -23
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +17 -0
- package/dist/executable/executable-cache.js +13 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +7 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +72 -4
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +45 -6
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +230 -52
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
- package/dist/frontend/lowering/builtins/crypto.js +223 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +174 -6
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +136 -113
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
- package/dist/frontend/lowering/builtins/filesystem.js +213 -76
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
- package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +232 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +67 -46
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +32 -1
- package/dist/frontend/lowering/builtins/process.js +468 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +55 -13
- package/dist/frontend/lowering/builtins/readline.js +931 -69
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +16 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +75 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +16 -0
- package/dist/frontend/lowering/builtins/workers.js +246 -3
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +19 -1
- package/dist/frontend/lowering/call-signatures.js +254 -47
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +528 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +55 -0
- package/dist/frontend/lowering/class-protocols.js +738 -22
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +80 -18
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +261 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +51 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +19 -0
- package/dist/frontend/lowering/containers/array-from-async.js +427 -0
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
- package/dist/frontend/lowering/containers/array-methods.js +89 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +161 -101
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +219 -27
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +81 -48
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
- package/dist/frontend/lowering/cycle-initialization.js +39 -0
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +238 -128
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +703 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2483 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1797 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- 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 +253 -85
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
- package/dist/frontend/lowering/expressions/property-access.js +3544 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1679 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +538 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +39 -0
- package/dist/frontend/lowering/generic-functions.js +393 -75
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +32 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1298 -452
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +50 -3
- package/dist/frontend/lowering/lower-classes.js +1499 -456
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +179 -8
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +268 -71
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1493 -12407
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +68 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +29 -16
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +354 -99
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +19 -2
- package/dist/frontend/lowering/lower-mock.js +557 -74
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +268 -61
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +45 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +638 -105
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +151 -109
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
- package/dist/frontend/lowering/lower-stmts.js +1589 -398
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +4 -3
- package/dist/frontend/lowering/lower-stream.js +714 -75
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +574 -100
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +80 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +409 -26
- package/dist/frontend/lowering/lowerer.js +1918 -305
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/null-prototype.d.ts +13 -0
- package/dist/frontend/lowering/null-prototype.js +33 -0
- package/dist/frontend/lowering/null-prototype.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +10 -10
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +15 -6
- package/dist/frontend/lowering/surfaces.js +278 -45
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.d.ts +5 -0
- package/dist/frontend/mock-shapes.js +39 -7
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
- package/dist/frontend/npm-static-bundled-chunks.js +810 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +768 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +17 -1
- package/dist/frontend/npm-static.js +167 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.js +164 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +92 -2
- package/dist/frontend/program.js +1557 -254
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +36 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +20 -1
- package/dist/frontend/services.js +40 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +5 -1
- package/dist/frontend/ts7/program-host.js +12 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +54 -24
- package/dist/frontend/ts7/semantic-model.js +88 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- 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 +11 -11
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2612 -695
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +47 -10
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +30 -0
- package/dist/ir/array-length-stability.js +236 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +113 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +139 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +655 -25
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +10 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +119 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +29 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +16 -6
- package/dist/ir/integer-loop-facts.js +143 -38
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +3 -0
- package/dist/ir/integer-ranges.js +4 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +142 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +234 -58
- package/dist/ir/ir.js +123 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +365 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +150 -33
- package/dist/ir/runtime-features.js +672 -339
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +62 -0
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +107 -94
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +220 -71
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +64 -9
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +18 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +5 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +2 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/prepare.js +7 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +12 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- package/dist/native/toolchain.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/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +21 -20
- package/surface-manifest.json +332 -36
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { dynUndefinedExpr, boolLit, helperLoc, numLit, strLit, varRef } from "../../ir/build.js";
|
|
2
|
+
import { builtinClassDynValueOf, builtinClassKindOf } from "./builtins/builtin-class-dyn.js";
|
|
2
3
|
import { InternalCompilerError } from "../../errors.js";
|
|
3
4
|
import * as ts from "../ts7/adapter.js";
|
|
4
5
|
import { unsignedHex } from "../../format-integer.js";
|
|
5
6
|
import { isJsSourceFile } from "../program.js";
|
|
6
|
-
import { BOOL, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, isUnitType, UNDEFINED_T, VOID, canConvertToDyn, canDynCheckTo, isDirentShape, isDynTypedRefType, recordTextCodecClass, shapeHasAccessorSlots, typeKey, } from "../../ir/ir.js";
|
|
7
|
+
import { BOOL, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, isUnitType, UNDEFINED_T, VOID, canConvertToDyn, canDynCheckTo, CLASS_FIELD_ATTRIBUTES_PREFIX, classDynViewSupported, DYN_CLASS_PROPERTIES, isClassOwnEnumerableFieldName, isDirentShape, isDynTypedRefType, recordTextCodecClass, shapeHasAccessorSlots, typeKey, } from "../../ir/ir.js";
|
|
7
8
|
import { isSafeToDiscard, isSafeToRepeat } from "./expressions/evaluation-safety.js";
|
|
8
9
|
import { symbolFieldDisplayName } from "./symbol-fields.js";
|
|
9
10
|
import { eventTargetRootOf } from "./lower-event-target.js";
|
|
10
11
|
import { lowerSystemErrorMap } from "./lower-system-errors.js";
|
|
11
12
|
import { isPerfEntryType, perfEntryJson } from "./builtins/performance.js";
|
|
12
13
|
import { recordMayKeepSource, recordSourceTest } from "./record-sources.js";
|
|
14
|
+
import { nullProtoRecordShape, recordNullProtoTest } from "./null-prototype.js";
|
|
13
15
|
/* ── IR construction shorthand ───────────────────────────────────────── */
|
|
14
16
|
function concatAll(parts, loc) {
|
|
15
17
|
if (parts.length === 0)
|
|
@@ -108,12 +110,17 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
108
110
|
case "regex":
|
|
109
111
|
case "symbol":
|
|
110
112
|
case "bigint":
|
|
113
|
+
case "date":
|
|
111
114
|
case "dyn":
|
|
112
115
|
return null;
|
|
113
116
|
case "array":
|
|
114
117
|
return inspectSupport(lowerer, t.elem, visiting, out);
|
|
115
118
|
case "bytes":
|
|
116
|
-
|
|
119
|
+
// A Uint8Array and a Buffer share the u8 representation and print
|
|
120
|
+
// differently; the other element kinds are never Buffers.
|
|
121
|
+
return t.elem === "u8"
|
|
122
|
+
? "Uint8Array and Buffer values inside composites have no inspect lowering yet (Buffer's <Buffer ..> form vs Uint8Array's is not recorded in the static type here)"
|
|
123
|
+
: null;
|
|
117
124
|
case "record": {
|
|
118
125
|
if (visiting.has(t.shapeId)) {
|
|
119
126
|
out.recursive = true;
|
|
@@ -197,9 +204,10 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
197
204
|
? null
|
|
198
205
|
: "error subclasses with declared fields have no inspect lowering yet (the extra own properties are runtime-dynamic)";
|
|
199
206
|
}
|
|
200
|
-
// A class with subclasses renders through its
|
|
201
|
-
// which names the instance's own class and holds
|
|
202
|
-
|
|
207
|
+
// A class with subclasses, or a JavaScript class, renders through its
|
|
208
|
+
// checked-dynamic view, which names the instance's own class and holds
|
|
209
|
+
// its own properties.
|
|
210
|
+
if (classInspectsThroughView(lowerer, info)) {
|
|
203
211
|
if (!isDynTypedRefType(t) || visiting.has(t.className))
|
|
204
212
|
return null;
|
|
205
213
|
visiting.add(t.className);
|
|
@@ -235,6 +243,10 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
235
243
|
visiting.delete(t.className);
|
|
236
244
|
return null;
|
|
237
245
|
}
|
|
246
|
+
// Generator objects print through their checked capsule: Node's
|
|
247
|
+
// `Object [Generator] {}`, or the tag of the iterator they implement.
|
|
248
|
+
case "generator":
|
|
249
|
+
return null;
|
|
238
250
|
default:
|
|
239
251
|
return `'${lowerer.fmt(t)}' values have no inspect lowering`;
|
|
240
252
|
}
|
|
@@ -299,10 +311,31 @@ export function inspectExpr(lowerer, t, value, recurse, depth, loc) {
|
|
|
299
311
|
return { kind: "libCall", fn: "sym.toString", args: [value], type: STRING, loc };
|
|
300
312
|
case "bigint":
|
|
301
313
|
return { kind: "libCall", fn: "bigint.inspect", args: [value], type: STRING, loc };
|
|
314
|
+
case "date":
|
|
315
|
+
// Node prints a Date's toISOString() at every depth, and its
|
|
316
|
+
// toString() ("Invalid Date") when the time value is NaN.
|
|
317
|
+
return { kind: "libCall", fn: "insp.date", args: [value], type: STRING, loc };
|
|
302
318
|
case "bytes":
|
|
319
|
+
if (t.elem !== "u8") {
|
|
320
|
+
return {
|
|
321
|
+
kind: "libCall",
|
|
322
|
+
fn: "insp.typedArray",
|
|
323
|
+
args: [value, recurse, depth],
|
|
324
|
+
type: STRING,
|
|
325
|
+
loc,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
303
328
|
return { kind: "libCall", fn: "insp.buffer", args: [value], type: STRING, loc };
|
|
304
329
|
case "dyn":
|
|
305
330
|
return { kind: "libCall", fn: "insp.dyn", args: [value, recurse, depth], type: STRING, loc };
|
|
331
|
+
case "generator":
|
|
332
|
+
return {
|
|
333
|
+
kind: "libCall",
|
|
334
|
+
fn: "insp.dyn",
|
|
335
|
+
args: [lowerer.coerceToExpected(value, DYN), recurse, depth],
|
|
336
|
+
type: STRING,
|
|
337
|
+
loc,
|
|
338
|
+
};
|
|
306
339
|
case "object":
|
|
307
340
|
if (eventTargetRootOf(lowerer.classes.get(t.className)) !== null) {
|
|
308
341
|
return {
|
|
@@ -322,7 +355,7 @@ export function inspectExpr(lowerer, t, value, recurse, depth, loc) {
|
|
|
322
355
|
loc,
|
|
323
356
|
};
|
|
324
357
|
}
|
|
325
|
-
if (lowerer.classes.get(t.className)
|
|
358
|
+
if (classInspectsThroughView(lowerer, lowerer.classes.get(t.className))) {
|
|
326
359
|
return {
|
|
327
360
|
kind: "libCall",
|
|
328
361
|
fn: "insp.dyn",
|
|
@@ -425,6 +458,29 @@ function typeConstituents(lowerer, u) {
|
|
|
425
458
|
return [];
|
|
426
459
|
}
|
|
427
460
|
}
|
|
461
|
+
/** Whether instances of a class render through its checked-dynamic view
|
|
462
|
+
* instead of a helper over the declared layout. The view names the
|
|
463
|
+
* instance's own class, which a base-typed value may not know statically,
|
|
464
|
+
* and lists own properties in creation order. A JavaScript class needs that
|
|
465
|
+
* order: its fields can be created conditionally, outside the constructor,
|
|
466
|
+
* or by writes to the instance after construction. */
|
|
467
|
+
function classInspectsThroughView(lowerer, info) {
|
|
468
|
+
if (info === undefined)
|
|
469
|
+
return false;
|
|
470
|
+
if (info.subclasses.length > 0)
|
|
471
|
+
return true;
|
|
472
|
+
return (info.decl != null &&
|
|
473
|
+
isJsSourceFile(ts.getSourceFileOfNode(info.decl)) &&
|
|
474
|
+
classDynViewSupported(info.def.fields, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id)));
|
|
475
|
+
}
|
|
476
|
+
/** Whether a class holds properties added outside its declared layout, or
|
|
477
|
+
* fields Object.defineProperty can make non-enumerable, which only its
|
|
478
|
+
* checked-dynamic view lists as Node does. Decided after lowering, when the
|
|
479
|
+
* class has its final fields. */
|
|
480
|
+
function classInspectsAddedProperties(lowerer, info) {
|
|
481
|
+
return (info.def.fields.some((field) => field.name === DYN_CLASS_PROPERTIES || field.name.startsWith(CLASS_FIELD_ATTRIBUTES_PREFIX)) &&
|
|
482
|
+
classDynViewSupported(info.def.fields, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id)));
|
|
483
|
+
}
|
|
428
484
|
/* ── the interned per-type helper ────────────────────────────────────── */
|
|
429
485
|
/** `%util.insp.<n>(v, r, d): string` — formatValue over the static type:
|
|
430
486
|
* empty composites answer their literals (before the depth check, Node's
|
|
@@ -455,8 +511,8 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
455
511
|
// CYCLE-CAPABLE composites (typeReachesItself) run Node's circular
|
|
456
512
|
// machinery: circCheck first (a value already on the traversal stack
|
|
457
513
|
// renders [Circular *N] — before the empty/depth answers, Node's
|
|
458
|
-
// order), seen-push after begin, and refWrap around end's result (
|
|
459
|
-
// <ref *N> prefix on values the walk found circular). Acyclic types
|
|
514
|
+
// order), seen-push after begin, and refWrap around end's result (end
|
|
515
|
+
// adds the <ref *N> prefix on values the walk found circular). Acyclic types
|
|
460
516
|
// keep the zero-cost path.
|
|
461
517
|
const onCycle = (t.kind === "record" || t.kind === "array" || t.kind === "map" || t.kind === "object") &&
|
|
462
518
|
typeReachesItself(lowerer, t);
|
|
@@ -763,6 +819,19 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
763
819
|
const n = () => varRef("n.0", F64, loc);
|
|
764
820
|
const i = () => varRef("i.0", F64, loc);
|
|
765
821
|
const k = () => varRef("k.0", STRING, loc);
|
|
822
|
+
// A null-prototype record (Object.groupBy) prints Node's
|
|
823
|
+
// "[Object: null prototype]" base.
|
|
824
|
+
const nullProto = nullProtoRecordShape(lowerer, t) !== null;
|
|
825
|
+
const byProto = (plain, bare) => nullProto
|
|
826
|
+
? {
|
|
827
|
+
kind: "ternary",
|
|
828
|
+
cond: recordNullProtoTest(v(), t.shapeId, loc),
|
|
829
|
+
then: strLit(bare, loc),
|
|
830
|
+
else_: strLit(plain, loc),
|
|
831
|
+
type: STRING,
|
|
832
|
+
loc,
|
|
833
|
+
}
|
|
834
|
+
: strLit(plain, loc);
|
|
766
835
|
const keyedRead = () => ({
|
|
767
836
|
kind: "recordKeyGet",
|
|
768
837
|
obj: v(),
|
|
@@ -795,11 +864,17 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
795
864
|
{
|
|
796
865
|
kind: "if",
|
|
797
866
|
cond: { kind: "bin", op: "===", left: n(), right: numLit(0, loc), type: BOOL, loc },
|
|
798
|
-
then: [ret(
|
|
867
|
+
then: [ret(byProto("{}", "[Object: null prototype] {}"))],
|
|
868
|
+
else_: null,
|
|
869
|
+
loc,
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
kind: "if",
|
|
873
|
+
cond: { kind: "bin", op: ">", left: r(), right: d(), type: BOOL, loc },
|
|
874
|
+
then: [ret(byProto("[Object]", "[Object: null prototype]"))],
|
|
799
875
|
else_: null,
|
|
800
876
|
loc,
|
|
801
877
|
},
|
|
802
|
-
depthGate("[Object]"),
|
|
803
878
|
...begin(),
|
|
804
879
|
{
|
|
805
880
|
kind: "for",
|
|
@@ -826,7 +901,7 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
826
901
|
],
|
|
827
902
|
loc,
|
|
828
903
|
},
|
|
829
|
-
ret(end(
|
|
904
|
+
ret(end(byProto("", "[Object: null prototype]"), strLit("{", loc), strLit("}", loc), false, boolLit(false, loc))),
|
|
830
905
|
];
|
|
831
906
|
break;
|
|
832
907
|
}
|
|
@@ -837,6 +912,7 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
837
912
|
// Object.keys' declared order (SEMANTICS.md 36's stance). Retained
|
|
838
913
|
// reachability can settle this shape after the helper is first
|
|
839
914
|
// interned, so rebuild the field walk once metadata is final.
|
|
915
|
+
lowerer.keyOrder.observe(t);
|
|
840
916
|
rebuildShapeOrderBody = () => {
|
|
841
917
|
const current = lowerer.shapes.get(t.shapeId) ?? shape;
|
|
842
918
|
const order = current.declaredOrder ?? current.fields.map((f) => f.name);
|
|
@@ -1051,7 +1127,7 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1051
1127
|
// #private fields never render: they are not properties in any
|
|
1052
1128
|
// observable way — Node's inspect omits them entirely (verified),
|
|
1053
1129
|
// so a class whose only fields are private prints as `C {}`.
|
|
1054
|
-
const visible = info.def.fields.filter((f) =>
|
|
1130
|
+
const visible = info.def.fields.filter((f) => isClassOwnEnumerableFieldName(f.name));
|
|
1055
1131
|
if (visible.length === 0) {
|
|
1056
1132
|
body = [ret(strLit(display === "" ? "{}" : `${display} {}`, loc))];
|
|
1057
1133
|
break;
|
|
@@ -1139,6 +1215,9 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1139
1215
|
};
|
|
1140
1216
|
prependCycleGuard();
|
|
1141
1217
|
}
|
|
1218
|
+
// Typed as the IR function itself: the finalizer below replaces the
|
|
1219
|
+
// body of the very object liftedFns holds (natively, a differently typed
|
|
1220
|
+
// literal would be copied into the list).
|
|
1142
1221
|
const fn = {
|
|
1143
1222
|
name,
|
|
1144
1223
|
params: [
|
|
@@ -1151,6 +1230,25 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1151
1230
|
body,
|
|
1152
1231
|
loc,
|
|
1153
1232
|
};
|
|
1233
|
+
const inspected = t.kind === "object" ? lowerer.classes.get(t.className) : undefined;
|
|
1234
|
+
if (inspected !== undefined) {
|
|
1235
|
+
// Dynamic stores add a property bag to the class after this helper was
|
|
1236
|
+
// built. The checked-dynamic view lists the bag's properties after the
|
|
1237
|
+
// declared fields, so a class that has one renders through the view.
|
|
1238
|
+
lowerer.shapeOrderHelperFinalizers.push(() => {
|
|
1239
|
+
if (!classInspectsAddedProperties(lowerer, inspected))
|
|
1240
|
+
return;
|
|
1241
|
+
fn.body = [
|
|
1242
|
+
ret({
|
|
1243
|
+
kind: "libCall",
|
|
1244
|
+
fn: "insp.dyn",
|
|
1245
|
+
args: [{ kind: "dynFrom", value: v(), liveRef: true, type: DYN, loc }, r(), d()],
|
|
1246
|
+
type: STRING,
|
|
1247
|
+
loc,
|
|
1248
|
+
}),
|
|
1249
|
+
];
|
|
1250
|
+
});
|
|
1251
|
+
}
|
|
1154
1252
|
if (rebuildShapeOrderBody !== null) {
|
|
1155
1253
|
lowerer.shapeOrderHelperFinalizers.push(() => {
|
|
1156
1254
|
rebuildShapeOrderBody();
|
|
@@ -1278,15 +1376,20 @@ export function lowerConsoleInspectArg(lowerer, node, value, surface, loc) {
|
|
|
1278
1376
|
}
|
|
1279
1377
|
if (t.kind === "bytes") {
|
|
1280
1378
|
// One runtime representation serves Buffer AND Uint8Array; their
|
|
1281
|
-
// renderings differ, so the argument's checker type picks
|
|
1282
|
-
//
|
|
1379
|
+
// renderings differ, so the argument's checker type picks
|
|
1380
|
+
// (lowerInspectCall's stance).
|
|
1283
1381
|
const tname = lowerer.checker.typeToString(lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node)));
|
|
1284
|
-
|
|
1285
|
-
tname
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1382
|
+
if (isDataViewTypeName(tname)) {
|
|
1383
|
+
lowerer.unsupported("SC1090", node, `${surface} of '${tname}' values (Buffer and the numeric typed arrays are the lowered byte renderings; DataView has none yet)`);
|
|
1384
|
+
}
|
|
1385
|
+
if (!isBufferTypeName(tname)) {
|
|
1386
|
+
return {
|
|
1387
|
+
kind: "libCall",
|
|
1388
|
+
fn: "insp.typedArray",
|
|
1389
|
+
args: [value, numLit(0, loc), numLit(2, loc)],
|
|
1390
|
+
type: STRING,
|
|
1391
|
+
loc,
|
|
1392
|
+
};
|
|
1290
1393
|
}
|
|
1291
1394
|
return inspectExpr(lowerer, t, value, numLit(0, loc), numLit(2, loc), loc);
|
|
1292
1395
|
}
|
|
@@ -1295,6 +1398,10 @@ export function lowerConsoleInspectArg(lowerer, node, value, surface, loc) {
|
|
|
1295
1398
|
// is not a value here, so the composition fences with the rewrite.
|
|
1296
1399
|
lowerer.unsupported("SC1090", node, `${surface} of a void call result (call it as its own statement, then ${surface}(undefined))`);
|
|
1297
1400
|
}
|
|
1401
|
+
// A read that always throws (an ambient name, a binding whose
|
|
1402
|
+
// initializer threw) never produces a value to render.
|
|
1403
|
+
if (value.kind === "libCall" && value.fn === "global.undefRead")
|
|
1404
|
+
return formatValueExpr(lowerer, DYN, { ...value, type: DYN }, 2, loc);
|
|
1298
1405
|
const walk = { recursive: false };
|
|
1299
1406
|
const reason = inspectSupport(lowerer, t, new Set(), walk);
|
|
1300
1407
|
if (reason !== null) {
|
|
@@ -1302,18 +1409,25 @@ export function lowerConsoleInspectArg(lowerer, node, value, surface, loc) {
|
|
|
1302
1409
|
}
|
|
1303
1410
|
return formatValueExpr(lowerer, t, value, 2, loc);
|
|
1304
1411
|
}
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1412
|
+
/** The checker's spelling of a Buffer, whose bytes print as <Buffer ..>. */
|
|
1413
|
+
function isBufferTypeName(tname) {
|
|
1414
|
+
return (tname === "Buffer" ||
|
|
1415
|
+
tname === "NonSharedBuffer" ||
|
|
1416
|
+
tname.startsWith("Buffer<") ||
|
|
1417
|
+
tname.startsWith("NonSharedBuffer<"));
|
|
1418
|
+
}
|
|
1419
|
+
function isDataViewTypeName(tname) {
|
|
1420
|
+
return tname === "DataView" || tname.startsWith("DataView<");
|
|
1421
|
+
}
|
|
1308
1422
|
function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
1309
1423
|
const surface = dir ? "console.dir" : "util.inspect";
|
|
1424
|
+
const options = { depth: 2, breakLength: 80, compact: 3, sorted: false };
|
|
1310
1425
|
if (!node || (ts.isIdentifier(node) && node.text === "undefined"))
|
|
1311
|
-
return
|
|
1426
|
+
return options;
|
|
1312
1427
|
if (!ts.isObjectLiteralExpression(node)) {
|
|
1313
1428
|
lowerer.noLowering(`${surface} with a non-literal options argument`, node, "the options must be an object literal ({ depth, colors: false, ... }) so the knobs resolve at compile time");
|
|
1314
1429
|
}
|
|
1315
|
-
|
|
1316
|
-
for (const prop of node.properties) {
|
|
1430
|
+
for (const prop of node.properties.nodes) {
|
|
1317
1431
|
if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) {
|
|
1318
1432
|
lowerer.noLowering(`${surface} options in this form`, prop, "plain `key: literal` entries are the lowered options");
|
|
1319
1433
|
}
|
|
@@ -1336,14 +1450,14 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
1336
1450
|
// machinery ([Circular *N]) cuts every cycle, so the walk is
|
|
1337
1451
|
// bounded by the (finite) object graph — exactly Node.
|
|
1338
1452
|
void recursive;
|
|
1339
|
-
depth = Infinity;
|
|
1453
|
+
options.depth = Infinity;
|
|
1340
1454
|
}
|
|
1341
1455
|
else if (!(ts.isIdentifier(value) && value.text === "undefined")) {
|
|
1342
1456
|
const n = numeric();
|
|
1343
1457
|
if (n === null) {
|
|
1344
1458
|
lowerer.noLowering(`${surface} with a non-literal depth option`, value, "depth must be a numeric literal (or null)");
|
|
1345
1459
|
}
|
|
1346
|
-
depth = n;
|
|
1460
|
+
options.depth = n;
|
|
1347
1461
|
}
|
|
1348
1462
|
}
|
|
1349
1463
|
else if (key === "colors") {
|
|
@@ -1352,14 +1466,27 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
1352
1466
|
}
|
|
1353
1467
|
}
|
|
1354
1468
|
else if (key === "compact") {
|
|
1355
|
-
|
|
1356
|
-
|
|
1469
|
+
// Node tries the single-line form and groups arrays only for a
|
|
1470
|
+
// compact of at least 1; false and smaller numbers break every
|
|
1471
|
+
// composite onto its own lines. compact: true is the older layout.
|
|
1472
|
+
const n = value.kind === ts.SyntaxKind.FalseKeyword ? 0 : numeric();
|
|
1473
|
+
if (n === null || Number.isNaN(n)) {
|
|
1474
|
+
lowerer.noLowering(`${surface} with this compact option`, value, "compact must be false or a numeric literal (compact: true has no lowering)");
|
|
1475
|
+
}
|
|
1476
|
+
options.compact = Math.max(n, 0);
|
|
1477
|
+
}
|
|
1478
|
+
else if (key === "sorted") {
|
|
1479
|
+
if (value.kind !== ts.SyntaxKind.TrueKeyword && value.kind !== ts.SyntaxKind.FalseKeyword) {
|
|
1480
|
+
lowerer.noLowering(`${surface} with this sorted option`, value, "sorted must be true or false (a comparator function has no lowering)");
|
|
1357
1481
|
}
|
|
1482
|
+
options.sorted = value.kind === ts.SyntaxKind.TrueKeyword;
|
|
1358
1483
|
}
|
|
1359
1484
|
else if (key === "breakLength") {
|
|
1360
|
-
|
|
1361
|
-
|
|
1485
|
+
const n = ts.isIdentifier(value) && value.text === "Infinity" ? Infinity : numeric();
|
|
1486
|
+
if (n === null || Number.isNaN(n)) {
|
|
1487
|
+
lowerer.noLowering(`${surface} with a non-literal breakLength option`, value, "breakLength must be a numeric literal or Infinity");
|
|
1362
1488
|
}
|
|
1489
|
+
options.breakLength = n;
|
|
1363
1490
|
}
|
|
1364
1491
|
else if (dir && key === "customInspect") {
|
|
1365
1492
|
// console.dir's own default; only that value is lowered.
|
|
@@ -1368,10 +1495,42 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
1368
1495
|
}
|
|
1369
1496
|
}
|
|
1370
1497
|
else {
|
|
1371
|
-
lowerer.noLowering(`${surface} with the '${key}' option`, prop, `the lowered options are depth (numeric literal or null), colors: false, compact
|
|
1498
|
+
lowerer.noLowering(`${surface} with the '${key}' option`, prop, `the lowered options are depth (numeric literal or null), colors: false, compact (false or a number), breakLength, ${dir ? "sorted (true or false), and customInspect: false" : "and sorted (true or false)"}`);
|
|
1372
1499
|
}
|
|
1373
1500
|
}
|
|
1374
|
-
return
|
|
1501
|
+
return options;
|
|
1502
|
+
}
|
|
1503
|
+
/** A render under non-default breakLength/compact/sorted: the value is evaluated
|
|
1504
|
+
* first, the layout applies to this render only, and the defaults return
|
|
1505
|
+
* afterwards. */
|
|
1506
|
+
function withInspectLayout(lowerer, options, value, render, loc) {
|
|
1507
|
+
if (options.breakLength === 80 && options.compact === 3 && !options.sorted)
|
|
1508
|
+
return render(value);
|
|
1509
|
+
const input = lowerer.declareHiddenLocal("%inspectInput", value.type);
|
|
1510
|
+
const text = lowerer.declareHiddenLocal("%inspectText", STRING);
|
|
1511
|
+
const layout = (breakLength, compact, sorted) => ({
|
|
1512
|
+
kind: "exprStmt",
|
|
1513
|
+
expr: {
|
|
1514
|
+
kind: "libCall",
|
|
1515
|
+
fn: "insp.layout",
|
|
1516
|
+
args: [numLit(breakLength, loc), numLit(compact, loc), boolLit(sorted, loc)],
|
|
1517
|
+
type: VOID,
|
|
1518
|
+
loc,
|
|
1519
|
+
},
|
|
1520
|
+
loc,
|
|
1521
|
+
});
|
|
1522
|
+
return {
|
|
1523
|
+
kind: "seqExpr",
|
|
1524
|
+
stmts: [
|
|
1525
|
+
{ kind: "varDecl", localId: input.id, init: value, loc },
|
|
1526
|
+
layout(options.breakLength, options.compact, options.sorted),
|
|
1527
|
+
{ kind: "varDecl", localId: text.id, init: render(varRef(input.id, value.type, loc)), loc },
|
|
1528
|
+
layout(80, 3, false),
|
|
1529
|
+
],
|
|
1530
|
+
result: varRef(text.id, STRING, loc),
|
|
1531
|
+
type: STRING,
|
|
1532
|
+
loc,
|
|
1533
|
+
};
|
|
1375
1534
|
}
|
|
1376
1535
|
/** `util.inspect(fn)` / `util.inspect(Cls)` over a DIRECT identifier
|
|
1377
1536
|
* naming a declared function or class: the name is compile-time truth,
|
|
@@ -1396,7 +1555,7 @@ function directCallableInspect(lowerer, node, loc) {
|
|
|
1396
1555
|
const base = cls.base ? ` extends ${cls.base.def.name.replace(/^%/, "")}` : "";
|
|
1397
1556
|
return strLit(`[class ${cls.def.name}${base}]`, loc);
|
|
1398
1557
|
}
|
|
1399
|
-
const decl =
|
|
1558
|
+
const decl = sym.declarations[0];
|
|
1400
1559
|
if (!decl)
|
|
1401
1560
|
return null;
|
|
1402
1561
|
if (ts.isFunctionDeclaration(decl) && decl.name) {
|
|
@@ -1415,10 +1574,10 @@ function directCallableInspect(lowerer, node, loc) {
|
|
|
1415
1574
|
}
|
|
1416
1575
|
/** util.inspect(value[, options]) — the spoke's inspect entry. */
|
|
1417
1576
|
function lowerInspectCall(lowerer, expr, loc) {
|
|
1418
|
-
if (expr.arguments.length < 1 || expr.arguments.length > 2) {
|
|
1419
|
-
lowerer.noLowering(`util.inspect with ${expr.arguments.length} arguments`, expr, "the supported forms are inspect(value) and inspect(value, options)");
|
|
1577
|
+
if (expr.arguments.nodes.length < 1 || expr.arguments.nodes.length > 2) {
|
|
1578
|
+
lowerer.noLowering(`util.inspect with ${expr.arguments.nodes.length} arguments`, expr, "the supported forms are inspect(value) and inspect(value, options)");
|
|
1420
1579
|
}
|
|
1421
|
-
return lowerInspectValue(lowerer, expr.arguments[0], expr.arguments[1], loc, false);
|
|
1580
|
+
return lowerInspectValue(lowerer, expr.arguments.nodes[0], expr.arguments.nodes[1], loc, false);
|
|
1422
1581
|
}
|
|
1423
1582
|
/** `inspect(value, options)` over one value node: the shared body of
|
|
1424
1583
|
* util.inspect and console.dir. console.dir is Node's `inspect(object,
|
|
@@ -1446,22 +1605,29 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
1446
1605
|
if (value.type.kind === "bytes") {
|
|
1447
1606
|
// One runtime representation serves Buffer AND Uint8Array; their
|
|
1448
1607
|
// renderings differ (<Buffer aa> vs Uint8Array(1) [ 170 ]), so the
|
|
1449
|
-
// TOP-LEVEL argument's checker type picks
|
|
1450
|
-
//
|
|
1451
|
-
// into shapes).
|
|
1608
|
+
// TOP-LEVEL argument's checker type picks. Nested u8 bytes fence in
|
|
1609
|
+
// inspectSupport (no checker type survives into shapes).
|
|
1452
1610
|
const tname = lowerer.checker.typeToString(lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(valueNode)));
|
|
1453
|
-
const isBuffer = tname
|
|
1454
|
-
|
|
1455
|
-
tname.startsWith("Buffer<") ||
|
|
1456
|
-
tname.startsWith("NonSharedBuffer<");
|
|
1457
|
-
if (dir) {
|
|
1611
|
+
const isBuffer = isBufferTypeName(tname);
|
|
1612
|
+
if (dir && isBuffer) {
|
|
1458
1613
|
lowerer.noLowering(`console.dir of '${tname}' values`, valueNode, "console.dir disables custom inspection, and the typed-array rendering it falls back to has no lowering yet — use console.log");
|
|
1459
1614
|
}
|
|
1460
|
-
if (
|
|
1461
|
-
lowerer.noLowering(`util.inspect of '${tname}' values`, valueNode, "Buffer
|
|
1615
|
+
if (isDataViewTypeName(tname)) {
|
|
1616
|
+
lowerer.noLowering(`util.inspect of '${tname}' values`, valueNode, "Buffer and the numeric typed arrays are the lowered byte renderings; DataView has none yet");
|
|
1617
|
+
}
|
|
1618
|
+
const options = parseInspectOptions(lowerer, optionsNode, false, dir);
|
|
1619
|
+
if (!isBuffer) {
|
|
1620
|
+
// A numeric typed array: Uint8Array(n) [ ... ] under the depth and
|
|
1621
|
+
// layout options.
|
|
1622
|
+
return withInspectLayout(lowerer, options, value, (input) => ({
|
|
1623
|
+
kind: "libCall",
|
|
1624
|
+
fn: "insp.typedArray",
|
|
1625
|
+
args: [input, numLit(0, loc), numLit(options.depth, loc)],
|
|
1626
|
+
type: STRING,
|
|
1627
|
+
loc,
|
|
1628
|
+
}), loc);
|
|
1462
1629
|
}
|
|
1463
|
-
|
|
1464
|
-
void bufDepth; // Buffers render fully at any depth (custom inspect)
|
|
1630
|
+
// Buffers render fully at any depth and on one line (custom inspect).
|
|
1465
1631
|
return inspectExpr(lowerer, value.type, value, numLit(0, loc), numLit(2, loc), loc);
|
|
1466
1632
|
}
|
|
1467
1633
|
const walk = { recursive: false };
|
|
@@ -1469,17 +1635,18 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
1469
1635
|
if (reason !== null) {
|
|
1470
1636
|
lowerer.noLowering(`${surface} of '${lowerer.fmt(value.type)}' values`, valueNode, reason);
|
|
1471
1637
|
}
|
|
1472
|
-
const
|
|
1638
|
+
const options = parseInspectOptions(lowerer, optionsNode, walk.recursive, dir);
|
|
1639
|
+
const depth = options.depth;
|
|
1473
1640
|
if (dir && value.type.kind === "dyn") {
|
|
1474
|
-
return {
|
|
1641
|
+
return withInspectLayout(lowerer, options, value, (input) => ({
|
|
1475
1642
|
kind: "libCall",
|
|
1476
1643
|
fn: "console.dirDyn",
|
|
1477
|
-
args: [
|
|
1644
|
+
args: [input, numLit(depth, loc)],
|
|
1478
1645
|
type: STRING,
|
|
1479
1646
|
loc,
|
|
1480
|
-
};
|
|
1647
|
+
}), loc);
|
|
1481
1648
|
}
|
|
1482
|
-
return inspectExpr(lowerer, value.type,
|
|
1649
|
+
return withInspectLayout(lowerer, options, value, (input) => inspectExpr(lowerer, value.type, input, numLit(0, loc), numLit(depth, loc), loc), loc);
|
|
1483
1650
|
}
|
|
1484
1651
|
/* ── util.format / util.formatWithOptions ────────────────────────────── */
|
|
1485
1652
|
/** One argument as format's %s conversion (Node: numbers via
|
|
@@ -1558,16 +1725,79 @@ function formatOArg(lowerer, node, depth, loc) {
|
|
|
1558
1725
|
}
|
|
1559
1726
|
return inspectExpr(lowerer, value.type, value, numLit(0, loc), numLit(depth, loc), loc);
|
|
1560
1727
|
}
|
|
1728
|
+
/** %d and %i over a checked-dynamic argument, as Node's formatWithOptions
|
|
1729
|
+
* reads it: a bigint prints as `${n}n`, a symbol as NaN, and any other
|
|
1730
|
+
* value as `number` (Number(arg) for %d, parseInt(String(arg)) for %i)
|
|
1731
|
+
* formatted. The argument evaluates once. */
|
|
1732
|
+
function formatDynInteger(lowerer, value, number, loc) {
|
|
1733
|
+
const held = lowerer.declareHiddenLocal("%formatArg", DYN);
|
|
1734
|
+
const ref = () => varRef(held.id, DYN, loc);
|
|
1735
|
+
return {
|
|
1736
|
+
kind: "seqExpr",
|
|
1737
|
+
stmts: [{ kind: "varDecl", localId: held.id, init: value, loc }],
|
|
1738
|
+
result: {
|
|
1739
|
+
kind: "ternary",
|
|
1740
|
+
cond: { kind: "dynTest", test: "bigint", value: ref(), type: BOOL, loc },
|
|
1741
|
+
then: {
|
|
1742
|
+
kind: "strConcat",
|
|
1743
|
+
left: { kind: "libCall", fn: "dyn.toStringCoerce", args: [ref()], type: STRING, loc },
|
|
1744
|
+
right: strLit("n", loc),
|
|
1745
|
+
type: STRING,
|
|
1746
|
+
loc,
|
|
1747
|
+
},
|
|
1748
|
+
else_: {
|
|
1749
|
+
kind: "ternary",
|
|
1750
|
+
cond: { kind: "dynTest", test: "symbol", value: ref(), type: BOOL, loc },
|
|
1751
|
+
then: strLit("NaN", loc),
|
|
1752
|
+
else_: { kind: "libCall", fn: "insp.f64", args: [number(ref())], type: STRING, loc },
|
|
1753
|
+
type: STRING,
|
|
1754
|
+
loc,
|
|
1755
|
+
},
|
|
1756
|
+
type: STRING,
|
|
1757
|
+
loc,
|
|
1758
|
+
},
|
|
1759
|
+
type: STRING,
|
|
1760
|
+
loc,
|
|
1761
|
+
};
|
|
1762
|
+
}
|
|
1763
|
+
/** %d and %i over the argument types Node formats without a number
|
|
1764
|
+
* conversion: a bigint prints as `${n}n` (formatBigInt) and a symbol as NaN;
|
|
1765
|
+
* null is Number(null) (0) under %d and parseInt("null") (NaN) under %i, and
|
|
1766
|
+
* undefined (including a void call) is NaN under both. Other arguments
|
|
1767
|
+
* still evaluate. Null for other types. */
|
|
1768
|
+
function formatIntegerFixed(value, spec, loc) {
|
|
1769
|
+
if (value.type.kind === "bigint") {
|
|
1770
|
+
return { kind: "libCall", fn: "bigint.inspect", args: [value], type: STRING, loc };
|
|
1771
|
+
}
|
|
1772
|
+
let text;
|
|
1773
|
+
if (value.type.kind === "symbol" ||
|
|
1774
|
+
value.type.kind === "undefinedT" ||
|
|
1775
|
+
value.type.kind === "void")
|
|
1776
|
+
text = "NaN";
|
|
1777
|
+
else if (value.type.kind === "nullT")
|
|
1778
|
+
text = spec === "%d" ? "0" : "NaN";
|
|
1779
|
+
else
|
|
1780
|
+
return null;
|
|
1781
|
+
if (value.kind === "unitLit")
|
|
1782
|
+
return strLit(text, loc);
|
|
1783
|
+
return {
|
|
1784
|
+
kind: "seqExpr",
|
|
1785
|
+
stmts: [{ kind: "exprStmt", expr: value, loc }],
|
|
1786
|
+
result: strLit(text, loc),
|
|
1787
|
+
type: STRING,
|
|
1788
|
+
loc,
|
|
1789
|
+
};
|
|
1790
|
+
}
|
|
1561
1791
|
/** util.format(...) / util.formatWithOptions({}, ...): the compile-time
|
|
1562
1792
|
* %-substitution over a literal format string (formatWithOptionsInternal
|
|
1563
1793
|
* ported exactly — the arg cursor, the args-exhausted guard, %c's
|
|
1564
1794
|
* consume-and-drop), with per-static-type conversions. Non-literal
|
|
1565
1795
|
* format strings lower only in the substitution-free shapes. */
|
|
1566
1796
|
export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverride, literalPrefix = "") {
|
|
1567
|
-
const argNodes = [...(argNodesOverride ?? expr.arguments)];
|
|
1797
|
+
const argNodes = [...(argNodesOverride ?? expr.arguments.nodes)];
|
|
1568
1798
|
if (withOptions) {
|
|
1569
1799
|
const opts = argNodes.shift();
|
|
1570
|
-
if (!opts || !ts.isObjectLiteralExpression(opts) || opts.properties.length > 0) {
|
|
1800
|
+
if (!opts || !ts.isObjectLiteralExpression(opts) || opts.properties.nodes.length > 0) {
|
|
1571
1801
|
lowerer.noLowering("util.formatWithOptions with a non-empty options literal", opts ?? expr, "only the empty literal {} (the defaults — exactly util.format) is lowered");
|
|
1572
1802
|
}
|
|
1573
1803
|
}
|
|
@@ -1612,6 +1842,9 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1612
1842
|
// strings through the runtime's ECMA-exact StringToNumber
|
|
1613
1843
|
// (num.fromString — the same lowering Number(aString) takes).
|
|
1614
1844
|
const value = lowerer.lowerExpr(node);
|
|
1845
|
+
const fixed = formatIntegerFixed(value, "%d", loc);
|
|
1846
|
+
if (fixed)
|
|
1847
|
+
return fixed;
|
|
1615
1848
|
if (value.type.kind === "f64")
|
|
1616
1849
|
return { kind: "libCall", fn: "insp.f64", args: [value], type: STRING, loc };
|
|
1617
1850
|
if (value.type.kind === "string") {
|
|
@@ -1643,19 +1876,15 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1643
1876
|
};
|
|
1644
1877
|
}
|
|
1645
1878
|
// A checked-dynamic argument (`console.log('... actual %d.',
|
|
1646
|
-
// context.actual)` — test/common's exit report):
|
|
1647
|
-
// number (dynCheck) and format. A non-number dyn value throws the
|
|
1648
|
-
// catchable TypeError where Node would print its ToNumber (NaN
|
|
1649
|
-
// for objects) — it throws instead of returning a wrong result
|
|
1650
|
-
// (SEMANTICS.md).
|
|
1879
|
+
// context.actual)` — test/common's exit report): Number(arg).
|
|
1651
1880
|
if (value.type.kind === "dyn") {
|
|
1652
|
-
return {
|
|
1881
|
+
return formatDynInteger(lowerer, value, (held) => ({
|
|
1653
1882
|
kind: "libCall",
|
|
1654
|
-
fn: "
|
|
1655
|
-
args: [
|
|
1656
|
-
type:
|
|
1883
|
+
fn: "dyn.numberConstructor",
|
|
1884
|
+
args: [held],
|
|
1885
|
+
type: F64,
|
|
1657
1886
|
loc,
|
|
1658
|
-
};
|
|
1887
|
+
}), loc);
|
|
1659
1888
|
}
|
|
1660
1889
|
lowerer.noLowering(`util.format %d of '${lowerer.fmt(value.type)}' values`, node, "numbers, booleans, and strings lower; ToNumber over other types has no static lowering");
|
|
1661
1890
|
break;
|
|
@@ -1663,6 +1892,9 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1663
1892
|
case 105: {
|
|
1664
1893
|
// %i — parseInt(ToString(arg)): the spec-exact composition.
|
|
1665
1894
|
const value = lowerer.lowerExpr(node);
|
|
1895
|
+
const fixed = formatIntegerFixed(value, "%i", loc);
|
|
1896
|
+
if (fixed)
|
|
1897
|
+
return fixed;
|
|
1666
1898
|
if (value.type.kind === "f64" ||
|
|
1667
1899
|
value.type.kind === "bool" ||
|
|
1668
1900
|
value.type.kind === "string") {
|
|
@@ -1678,6 +1910,19 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1678
1910
|
};
|
|
1679
1911
|
return { kind: "libCall", fn: "insp.f64", args: [parsed], type: STRING, loc };
|
|
1680
1912
|
}
|
|
1913
|
+
// parseInt(String(arg)) over a checked-dynamic argument.
|
|
1914
|
+
if (value.type.kind === "dyn") {
|
|
1915
|
+
return formatDynInteger(lowerer, value, (held) => ({
|
|
1916
|
+
kind: "libCall",
|
|
1917
|
+
fn: "num.parseInt",
|
|
1918
|
+
args: [
|
|
1919
|
+
{ kind: "libCall", fn: "dyn.toStringCoerce", args: [held], type: STRING, loc },
|
|
1920
|
+
numLit(0, loc),
|
|
1921
|
+
],
|
|
1922
|
+
type: F64,
|
|
1923
|
+
loc,
|
|
1924
|
+
}), loc);
|
|
1925
|
+
}
|
|
1681
1926
|
lowerer.noLowering(`util.format %i of '${lowerer.fmt(value.type)}' values`, node);
|
|
1682
1927
|
break;
|
|
1683
1928
|
}
|
|
@@ -1697,17 +1942,17 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1697
1942
|
return strLit("undefined", loc);
|
|
1698
1943
|
}
|
|
1699
1944
|
// A checked-dynamic argument (`console.error('headers: %j',
|
|
1700
|
-
// headers)` — the suite's http logging idiom): the runtime
|
|
1701
|
-
// walk
|
|
1702
|
-
// "undefined"
|
|
1703
|
-
//
|
|
1945
|
+
// headers)` — the suite's http logging idiom): the runtime runs
|
|
1946
|
+
// JSON.stringify's walk (toJSON hooks included; a root it drops
|
|
1947
|
+
// prints "undefined") and prints "[Circular]" for a circular
|
|
1948
|
+
// structure. A typed argument prints "[Circular]" the same way.
|
|
1704
1949
|
if (value.type.kind === "dyn") {
|
|
1705
1950
|
return { kind: "libCall", fn: "insp.jsonDyn", args: [value], type: STRING, loc };
|
|
1706
1951
|
}
|
|
1707
1952
|
if (!lowerer.jsonStringifySafe(value.type)) {
|
|
1708
1953
|
lowerer.noLowering(`util.format %j of '${lowerer.fmt(value.type)}' values`, node, "only JSON-safe static types lower");
|
|
1709
1954
|
}
|
|
1710
|
-
return { kind: "jsonStringify", value, type: STRING, loc };
|
|
1955
|
+
return { kind: "jsonStringify", value, circular: true, type: STRING, loc };
|
|
1711
1956
|
}
|
|
1712
1957
|
case 102: {
|
|
1713
1958
|
// %f — parseFloat(String(arg)) formatted: a number keeps its value
|
|
@@ -1874,21 +2119,21 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1874
2119
|
switch (bi.member) {
|
|
1875
2120
|
case "styleText":
|
|
1876
2121
|
case "isDeepStrictEqual": {
|
|
1877
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2122
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
1878
2123
|
lowerer.noLowering(`util.${bi.member} with spread arguments`, expr);
|
|
1879
2124
|
const stmts = [];
|
|
1880
2125
|
const args = [];
|
|
1881
2126
|
// Save all inputs before evaluating surplus arguments: comparison may
|
|
1882
2127
|
// read mutable objects or throw, so it must happen after every argument.
|
|
1883
2128
|
for (let i = 0; i < 3; i++) {
|
|
1884
|
-
const input = expr.arguments[i]
|
|
1885
|
-
? lowerer.lowerExprExpecting(expr.arguments[i], DYN)
|
|
2129
|
+
const input = expr.arguments.nodes[i]
|
|
2130
|
+
? lowerer.lowerExprExpecting(expr.arguments.nodes[i], DYN)
|
|
1886
2131
|
: dynUndefinedExpr(loc);
|
|
1887
2132
|
const saved = lowerer.declareHiddenLocal("%utilInput", DYN);
|
|
1888
2133
|
stmts.push({ kind: "varDecl", localId: saved.id, init: input, loc });
|
|
1889
2134
|
args.push(varRef(saved.id, DYN, loc));
|
|
1890
2135
|
}
|
|
1891
|
-
for (const arg of expr.arguments.slice(3))
|
|
2136
|
+
for (const arg of expr.arguments.nodes.slice(3))
|
|
1892
2137
|
stmts.push({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc });
|
|
1893
2138
|
const type = bi.member === "styleText" ? STRING : BOOL;
|
|
1894
2139
|
return {
|
|
@@ -1906,10 +2151,10 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1906
2151
|
case "debug":
|
|
1907
2152
|
return lowerUtilCallableCall(lowerer, expr, bi.member, loc);
|
|
1908
2153
|
case "getSystemErrorMap": {
|
|
1909
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2154
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
1910
2155
|
lowerer.noLowering("util.getSystemErrorMap with spread arguments", expr);
|
|
1911
2156
|
const result = lowerSystemErrorMap(lowerer, loc);
|
|
1912
|
-
const stmts = expr.arguments.map((arg) => ({
|
|
2157
|
+
const stmts = expr.arguments.nodes.map((arg) => ({
|
|
1913
2158
|
kind: "exprStmt",
|
|
1914
2159
|
expr: lowerer.lowerExpr(arg),
|
|
1915
2160
|
loc,
|
|
@@ -1920,24 +2165,24 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1920
2165
|
case "getSystemErrorMessage":
|
|
1921
2166
|
case "stripVTControlCharacters":
|
|
1922
2167
|
case "toUSVString": {
|
|
1923
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2168
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
1924
2169
|
lowerer.noLowering(`util.${bi.member} with spread arguments`, expr);
|
|
1925
|
-
const input = expr.arguments[0]
|
|
1926
|
-
? lowerer.lowerExprExpecting(expr.arguments[0], DYN)
|
|
2170
|
+
const input = expr.arguments.nodes[0]
|
|
2171
|
+
? lowerer.lowerExprExpecting(expr.arguments.nodes[0], DYN)
|
|
1927
2172
|
: {
|
|
1928
2173
|
kind: "dynFrom",
|
|
1929
2174
|
value: { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc },
|
|
1930
2175
|
type: DYN,
|
|
1931
2176
|
loc,
|
|
1932
2177
|
};
|
|
1933
|
-
if (expr.arguments.length <= 1)
|
|
2178
|
+
if (expr.arguments.nodes.length <= 1)
|
|
1934
2179
|
return { kind: "libCall", fn: `util.${bi.member}`, args: [input], type: STRING, loc };
|
|
1935
2180
|
const saved = lowerer.declareHiddenLocal("%utilInput", DYN);
|
|
1936
2181
|
return {
|
|
1937
2182
|
kind: "seqExpr",
|
|
1938
2183
|
stmts: [
|
|
1939
2184
|
{ kind: "varDecl", localId: saved.id, init: input, loc },
|
|
1940
|
-
...expr.arguments
|
|
2185
|
+
...expr.arguments.nodes
|
|
1941
2186
|
.slice(1)
|
|
1942
2187
|
.map((arg) => ({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc })),
|
|
1943
2188
|
],
|
|
@@ -1961,11 +2206,11 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1961
2206
|
case "parseArgs":
|
|
1962
2207
|
return lowerParseArgsCall(lowerer, expr, loc);
|
|
1963
2208
|
case "parseEnv": {
|
|
1964
|
-
if (expr.arguments.length > 1 || expr.arguments.some(ts.isSpreadElement)) {
|
|
2209
|
+
if (expr.arguments.nodes.length > 1 || expr.arguments.nodes.some(ts.isSpreadElement)) {
|
|
1965
2210
|
lowerer.noLowering("util.parseEnv with spread or extra arguments", expr);
|
|
1966
2211
|
}
|
|
1967
|
-
const input = expr.arguments[0]
|
|
1968
|
-
? lowerer.lowerExprExpecting(expr.arguments[0], DYN)
|
|
2212
|
+
const input = expr.arguments.nodes[0]
|
|
2213
|
+
? lowerer.lowerExprExpecting(expr.arguments.nodes[0], DYN)
|
|
1969
2214
|
: dynUndefinedExpr(loc);
|
|
1970
2215
|
const parsed = {
|
|
1971
2216
|
kind: "libCall",
|
|
@@ -1994,7 +2239,7 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1994
2239
|
* answer native dyn wrappers; a static function slot checks the wrapper
|
|
1995
2240
|
* when it receives it, and dyn slots keep calling it with JS arity. */
|
|
1996
2241
|
function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
1997
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2242
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
1998
2243
|
lowerer.noLowering(`util.${member} with spread arguments`, expr);
|
|
1999
2244
|
const fn = member === "inherits"
|
|
2000
2245
|
? "util.inherits"
|
|
@@ -2006,8 +2251,15 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2006
2251
|
const arity = member === "deprecate" ? 4 : member === "callbackify" ? 1 : 2;
|
|
2007
2252
|
// Program classes keep static prototypes: there is no function object
|
|
2008
2253
|
// whose prototype chain the runtime could relink or wrap.
|
|
2254
|
+
// EventEmitter and the stream classes are the exception as superCtor:
|
|
2255
|
+
// the runtime has untyped constructors for them (builtin-class-dyn.ts).
|
|
2009
2256
|
const classArgs = member === "inherits" ? 2 : member === "deprecate" ? 1 : 0;
|
|
2010
|
-
|
|
2257
|
+
const builtinBase = member === "inherits" && expr.arguments.nodes[1] !== undefined
|
|
2258
|
+
? builtinClassKindOf(lowerer, expr.arguments.nodes[1])
|
|
2259
|
+
: null;
|
|
2260
|
+
for (const [index, arg] of expr.arguments.nodes.slice(0, classArgs).entries()) {
|
|
2261
|
+
if (index === 1 && builtinBase !== null)
|
|
2262
|
+
continue;
|
|
2011
2263
|
if (lowerer.mapTypeOf(lowerer.typeOf(arg))?.kind === "classval")
|
|
2012
2264
|
lowerer.noLowering(`util.${member} over a class constructor`, arg, member === "inherits"
|
|
2013
2265
|
? "declare the subclass with extends"
|
|
@@ -2018,14 +2270,17 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2018
2270
|
const stmts = [];
|
|
2019
2271
|
const args = [];
|
|
2020
2272
|
for (let i = 0; i < arity; i++) {
|
|
2021
|
-
const
|
|
2022
|
-
|
|
2023
|
-
|
|
2273
|
+
const node = expr.arguments.nodes[i];
|
|
2274
|
+
const input = !node
|
|
2275
|
+
? dynUndefinedExpr(loc)
|
|
2276
|
+
: i === 1 && builtinBase !== null
|
|
2277
|
+
? (builtinClassDynValueOf(lowerer, node) ?? lowerer.lowerExprExpecting(node, DYN))
|
|
2278
|
+
: lowerer.lowerExprExpecting(node, DYN);
|
|
2024
2279
|
const saved = lowerer.declareHiddenLocal("%utilInput", DYN);
|
|
2025
2280
|
stmts.push({ kind: "varDecl", localId: saved.id, init: input, loc });
|
|
2026
2281
|
args.push(varRef(saved.id, DYN, loc));
|
|
2027
2282
|
}
|
|
2028
|
-
for (const arg of expr.arguments.slice(arity))
|
|
2283
|
+
for (const arg of expr.arguments.nodes.slice(arity))
|
|
2029
2284
|
stmts.push({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc });
|
|
2030
2285
|
const type = fn === "util.inherits" ? VOID : DYN;
|
|
2031
2286
|
const result = { kind: "libCall", fn, args, type, loc };
|
|
@@ -2037,7 +2292,7 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2037
2292
|
* a statically typed callback parameter cannot receive a value its type
|
|
2038
2293
|
* excludes. Untyped (JavaScript or unknown) slots keep the wrapper dyn. */
|
|
2039
2294
|
function callbackifyErrorExcludesNull(lowerer, expr) {
|
|
2040
|
-
if (isJsSourceFile(
|
|
2295
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr)))
|
|
2041
2296
|
return false;
|
|
2042
2297
|
const checker = lowerer.checker;
|
|
2043
2298
|
const slot = checker.getContextualType(expr) ?? lowerer.typeOf(expr);
|
|
@@ -2059,11 +2314,11 @@ function callbackifyErrorExcludesNull(lowerer, expr) {
|
|
|
2059
2314
|
* variants and a null-prototype values object); statically typed member
|
|
2060
2315
|
* reads leave that tree through the ordinary dyn checks. */
|
|
2061
2316
|
function lowerParseArgsCall(lowerer, expr, loc) {
|
|
2062
|
-
if (expr.arguments.length > 1 || expr.arguments.some(ts.isSpreadElement)) {
|
|
2063
|
-
lowerer.noLowering(`util.parseArgs with ${expr.arguments.length} arguments`, expr, "the lowered form is parseArgs() or parseArgs(config)");
|
|
2317
|
+
if (expr.arguments.nodes.length > 1 || expr.arguments.nodes.some(ts.isSpreadElement)) {
|
|
2318
|
+
lowerer.noLowering(`util.parseArgs with ${expr.arguments.nodes.length} arguments`, expr, "the lowered form is parseArgs() or parseArgs(config)");
|
|
2064
2319
|
}
|
|
2065
2320
|
let config;
|
|
2066
|
-
const configNode = expr.arguments[0];
|
|
2321
|
+
const configNode = expr.arguments.nodes[0];
|
|
2067
2322
|
if (!configNode) {
|
|
2068
2323
|
config = { kind: "dynObjLit", fields: [], type: DYN, loc };
|
|
2069
2324
|
}
|
|
@@ -2117,9 +2372,9 @@ function lowerParseArgsCall(lowerer, expr, loc) {
|
|
|
2117
2372
|
* forms and TypeScript keep the SC2020 fence: a typed consumer asserting
|
|
2118
2373
|
* real frames must fail at compile time instead of reading placeholders. */
|
|
2119
2374
|
function lowerGetCallSitesCall(lowerer, expr, loc) {
|
|
2120
|
-
if (expr.arguments.length !== 0)
|
|
2375
|
+
if (expr.arguments.nodes.length !== 0)
|
|
2121
2376
|
return null;
|
|
2122
|
-
if (!isJsSourceFile(
|
|
2377
|
+
if (!isJsSourceFile(ts.getSourceFileOfNode(expr)))
|
|
2123
2378
|
return null;
|
|
2124
2379
|
const frame = () => {
|
|
2125
2380
|
const field = (name, value) => ({
|
|
@@ -2132,7 +2387,7 @@ function lowerGetCallSitesCall(lowerer, expr, loc) {
|
|
|
2132
2387
|
field("functionName", { kind: "strLit", value: "", type: STRING, loc }),
|
|
2133
2388
|
field("scriptName", {
|
|
2134
2389
|
kind: "strLit",
|
|
2135
|
-
value:
|
|
2390
|
+
value: ts.getSourceFileOfNode(expr).fileName,
|
|
2136
2391
|
type: STRING,
|
|
2137
2392
|
loc,
|
|
2138
2393
|
}),
|