@scriptc/compiler 0.3.6 → 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 +682 -50
- 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 +293 -178
- 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 +547 -283
- package/dist/backend/llvm/emitter.js +689 -4643
- 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-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +67 -62
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +121 -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 +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -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 +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +90 -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 +187 -6
- 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 +43 -7
- 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 +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -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 +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- 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 +142 -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 +66 -43
- package/dist/backend/llvm/shapes.js +280 -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/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 +4 -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 -137
- 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 +1 -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.test.js +5 -0
- 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 +24 -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 +16 -3
- 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 +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- 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 +63 -5
- 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 +16 -5
- 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 +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- 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 +211 -37
- 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 +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- 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/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 +55 -44
- 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 +461 -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 +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- 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 +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- 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.js +25 -44
- 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 +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- 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 +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +54 -25
- 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 +62 -125
- 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 +1239 -442
- 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 +1473 -468
- 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 +258 -70
- 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 +1481 -12489
- 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 +331 -96
- 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 +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +267 -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 +488 -100
- 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 +1541 -391
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- 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 +437 -62
- 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 +399 -26
- package/dist/frontend/lowering/lowerer.js +1910 -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/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 +12 -3
- package/dist/frontend/lowering/surfaces.js +252 -41
- 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.js +13 -6
- 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 -255
- 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 +2545 -719
- 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 +29 -2
- 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 +103 -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 +494 -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 +9 -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 +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +2 -0
- package/dist/ir/integer-loop-facts.js +24 -3
- 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 +3 -1
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +82 -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 +221 -58
- package/dist/ir/ir.js +119 -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 +148 -33
- package/dist/ir/runtime-features.js +629 -386
- package/dist/ir/runtime-features.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 +103 -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 +175 -68
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +26 -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 +13 -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 +303 -19
|
@@ -1,9 +1,10 @@
|
|
|
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";
|
|
@@ -109,12 +110,17 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
109
110
|
case "regex":
|
|
110
111
|
case "symbol":
|
|
111
112
|
case "bigint":
|
|
113
|
+
case "date":
|
|
112
114
|
case "dyn":
|
|
113
115
|
return null;
|
|
114
116
|
case "array":
|
|
115
117
|
return inspectSupport(lowerer, t.elem, visiting, out);
|
|
116
118
|
case "bytes":
|
|
117
|
-
|
|
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;
|
|
118
124
|
case "record": {
|
|
119
125
|
if (visiting.has(t.shapeId)) {
|
|
120
126
|
out.recursive = true;
|
|
@@ -198,9 +204,10 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
198
204
|
? null
|
|
199
205
|
: "error subclasses with declared fields have no inspect lowering yet (the extra own properties are runtime-dynamic)";
|
|
200
206
|
}
|
|
201
|
-
// A class with subclasses renders through its
|
|
202
|
-
// which names the instance's own class and holds
|
|
203
|
-
|
|
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)) {
|
|
204
211
|
if (!isDynTypedRefType(t) || visiting.has(t.className))
|
|
205
212
|
return null;
|
|
206
213
|
visiting.add(t.className);
|
|
@@ -236,6 +243,10 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
236
243
|
visiting.delete(t.className);
|
|
237
244
|
return null;
|
|
238
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;
|
|
239
250
|
default:
|
|
240
251
|
return `'${lowerer.fmt(t)}' values have no inspect lowering`;
|
|
241
252
|
}
|
|
@@ -300,10 +311,31 @@ export function inspectExpr(lowerer, t, value, recurse, depth, loc) {
|
|
|
300
311
|
return { kind: "libCall", fn: "sym.toString", args: [value], type: STRING, loc };
|
|
301
312
|
case "bigint":
|
|
302
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 };
|
|
303
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
|
+
}
|
|
304
328
|
return { kind: "libCall", fn: "insp.buffer", args: [value], type: STRING, loc };
|
|
305
329
|
case "dyn":
|
|
306
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
|
+
};
|
|
307
339
|
case "object":
|
|
308
340
|
if (eventTargetRootOf(lowerer.classes.get(t.className)) !== null) {
|
|
309
341
|
return {
|
|
@@ -323,7 +355,7 @@ export function inspectExpr(lowerer, t, value, recurse, depth, loc) {
|
|
|
323
355
|
loc,
|
|
324
356
|
};
|
|
325
357
|
}
|
|
326
|
-
if (lowerer.classes.get(t.className)
|
|
358
|
+
if (classInspectsThroughView(lowerer, lowerer.classes.get(t.className))) {
|
|
327
359
|
return {
|
|
328
360
|
kind: "libCall",
|
|
329
361
|
fn: "insp.dyn",
|
|
@@ -426,6 +458,29 @@ function typeConstituents(lowerer, u) {
|
|
|
426
458
|
return [];
|
|
427
459
|
}
|
|
428
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
|
+
}
|
|
429
484
|
/* ── the interned per-type helper ────────────────────────────────────── */
|
|
430
485
|
/** `%util.insp.<n>(v, r, d): string` — formatValue over the static type:
|
|
431
486
|
* empty composites answer their literals (before the depth check, Node's
|
|
@@ -456,8 +511,8 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
456
511
|
// CYCLE-CAPABLE composites (typeReachesItself) run Node's circular
|
|
457
512
|
// machinery: circCheck first (a value already on the traversal stack
|
|
458
513
|
// renders [Circular *N] — before the empty/depth answers, Node's
|
|
459
|
-
// order), seen-push after begin, and refWrap around end's result (
|
|
460
|
-
// <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
|
|
461
516
|
// keep the zero-cost path.
|
|
462
517
|
const onCycle = (t.kind === "record" || t.kind === "array" || t.kind === "map" || t.kind === "object") &&
|
|
463
518
|
typeReachesItself(lowerer, t);
|
|
@@ -857,6 +912,7 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
857
912
|
// Object.keys' declared order (SEMANTICS.md 36's stance). Retained
|
|
858
913
|
// reachability can settle this shape after the helper is first
|
|
859
914
|
// interned, so rebuild the field walk once metadata is final.
|
|
915
|
+
lowerer.keyOrder.observe(t);
|
|
860
916
|
rebuildShapeOrderBody = () => {
|
|
861
917
|
const current = lowerer.shapes.get(t.shapeId) ?? shape;
|
|
862
918
|
const order = current.declaredOrder ?? current.fields.map((f) => f.name);
|
|
@@ -1071,7 +1127,7 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1071
1127
|
// #private fields never render: they are not properties in any
|
|
1072
1128
|
// observable way — Node's inspect omits them entirely (verified),
|
|
1073
1129
|
// so a class whose only fields are private prints as `C {}`.
|
|
1074
|
-
const visible = info.def.fields.filter((f) =>
|
|
1130
|
+
const visible = info.def.fields.filter((f) => isClassOwnEnumerableFieldName(f.name));
|
|
1075
1131
|
if (visible.length === 0) {
|
|
1076
1132
|
body = [ret(strLit(display === "" ? "{}" : `${display} {}`, loc))];
|
|
1077
1133
|
break;
|
|
@@ -1159,6 +1215,9 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1159
1215
|
};
|
|
1160
1216
|
prependCycleGuard();
|
|
1161
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).
|
|
1162
1221
|
const fn = {
|
|
1163
1222
|
name,
|
|
1164
1223
|
params: [
|
|
@@ -1171,6 +1230,25 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1171
1230
|
body,
|
|
1172
1231
|
loc,
|
|
1173
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
|
+
}
|
|
1174
1252
|
if (rebuildShapeOrderBody !== null) {
|
|
1175
1253
|
lowerer.shapeOrderHelperFinalizers.push(() => {
|
|
1176
1254
|
rebuildShapeOrderBody();
|
|
@@ -1298,15 +1376,20 @@ export function lowerConsoleInspectArg(lowerer, node, value, surface, loc) {
|
|
|
1298
1376
|
}
|
|
1299
1377
|
if (t.kind === "bytes") {
|
|
1300
1378
|
// One runtime representation serves Buffer AND Uint8Array; their
|
|
1301
|
-
// renderings differ, so the argument's checker type picks
|
|
1302
|
-
//
|
|
1379
|
+
// renderings differ, so the argument's checker type picks
|
|
1380
|
+
// (lowerInspectCall's stance).
|
|
1303
1381
|
const tname = lowerer.checker.typeToString(lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node)));
|
|
1304
|
-
|
|
1305
|
-
tname
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
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
|
+
};
|
|
1310
1393
|
}
|
|
1311
1394
|
return inspectExpr(lowerer, t, value, numLit(0, loc), numLit(2, loc), loc);
|
|
1312
1395
|
}
|
|
@@ -1315,6 +1398,10 @@ export function lowerConsoleInspectArg(lowerer, node, value, surface, loc) {
|
|
|
1315
1398
|
// is not a value here, so the composition fences with the rewrite.
|
|
1316
1399
|
lowerer.unsupported("SC1090", node, `${surface} of a void call result (call it as its own statement, then ${surface}(undefined))`);
|
|
1317
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);
|
|
1318
1405
|
const walk = { recursive: false };
|
|
1319
1406
|
const reason = inspectSupport(lowerer, t, new Set(), walk);
|
|
1320
1407
|
if (reason !== null) {
|
|
@@ -1322,18 +1409,25 @@ export function lowerConsoleInspectArg(lowerer, node, value, surface, loc) {
|
|
|
1322
1409
|
}
|
|
1323
1410
|
return formatValueExpr(lowerer, t, value, 2, loc);
|
|
1324
1411
|
}
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
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
|
+
}
|
|
1328
1422
|
function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
1329
1423
|
const surface = dir ? "console.dir" : "util.inspect";
|
|
1424
|
+
const options = { depth: 2, breakLength: 80, compact: 3, sorted: false };
|
|
1330
1425
|
if (!node || (ts.isIdentifier(node) && node.text === "undefined"))
|
|
1331
|
-
return
|
|
1426
|
+
return options;
|
|
1332
1427
|
if (!ts.isObjectLiteralExpression(node)) {
|
|
1333
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");
|
|
1334
1429
|
}
|
|
1335
|
-
|
|
1336
|
-
for (const prop of node.properties) {
|
|
1430
|
+
for (const prop of node.properties.nodes) {
|
|
1337
1431
|
if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) {
|
|
1338
1432
|
lowerer.noLowering(`${surface} options in this form`, prop, "plain `key: literal` entries are the lowered options");
|
|
1339
1433
|
}
|
|
@@ -1356,14 +1450,14 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
1356
1450
|
// machinery ([Circular *N]) cuts every cycle, so the walk is
|
|
1357
1451
|
// bounded by the (finite) object graph — exactly Node.
|
|
1358
1452
|
void recursive;
|
|
1359
|
-
depth = Infinity;
|
|
1453
|
+
options.depth = Infinity;
|
|
1360
1454
|
}
|
|
1361
1455
|
else if (!(ts.isIdentifier(value) && value.text === "undefined")) {
|
|
1362
1456
|
const n = numeric();
|
|
1363
1457
|
if (n === null) {
|
|
1364
1458
|
lowerer.noLowering(`${surface} with a non-literal depth option`, value, "depth must be a numeric literal (or null)");
|
|
1365
1459
|
}
|
|
1366
|
-
depth = n;
|
|
1460
|
+
options.depth = n;
|
|
1367
1461
|
}
|
|
1368
1462
|
}
|
|
1369
1463
|
else if (key === "colors") {
|
|
@@ -1372,14 +1466,27 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
1372
1466
|
}
|
|
1373
1467
|
}
|
|
1374
1468
|
else if (key === "compact") {
|
|
1375
|
-
|
|
1376
|
-
|
|
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)");
|
|
1377
1481
|
}
|
|
1482
|
+
options.sorted = value.kind === ts.SyntaxKind.TrueKeyword;
|
|
1378
1483
|
}
|
|
1379
1484
|
else if (key === "breakLength") {
|
|
1380
|
-
|
|
1381
|
-
|
|
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");
|
|
1382
1488
|
}
|
|
1489
|
+
options.breakLength = n;
|
|
1383
1490
|
}
|
|
1384
1491
|
else if (dir && key === "customInspect") {
|
|
1385
1492
|
// console.dir's own default; only that value is lowered.
|
|
@@ -1388,10 +1495,42 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
1388
1495
|
}
|
|
1389
1496
|
}
|
|
1390
1497
|
else {
|
|
1391
|
-
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)"}`);
|
|
1392
1499
|
}
|
|
1393
1500
|
}
|
|
1394
|
-
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
|
+
};
|
|
1395
1534
|
}
|
|
1396
1535
|
/** `util.inspect(fn)` / `util.inspect(Cls)` over a DIRECT identifier
|
|
1397
1536
|
* naming a declared function or class: the name is compile-time truth,
|
|
@@ -1416,7 +1555,7 @@ function directCallableInspect(lowerer, node, loc) {
|
|
|
1416
1555
|
const base = cls.base ? ` extends ${cls.base.def.name.replace(/^%/, "")}` : "";
|
|
1417
1556
|
return strLit(`[class ${cls.def.name}${base}]`, loc);
|
|
1418
1557
|
}
|
|
1419
|
-
const decl =
|
|
1558
|
+
const decl = sym.declarations[0];
|
|
1420
1559
|
if (!decl)
|
|
1421
1560
|
return null;
|
|
1422
1561
|
if (ts.isFunctionDeclaration(decl) && decl.name) {
|
|
@@ -1435,10 +1574,10 @@ function directCallableInspect(lowerer, node, loc) {
|
|
|
1435
1574
|
}
|
|
1436
1575
|
/** util.inspect(value[, options]) — the spoke's inspect entry. */
|
|
1437
1576
|
function lowerInspectCall(lowerer, expr, loc) {
|
|
1438
|
-
if (expr.arguments.length < 1 || expr.arguments.length > 2) {
|
|
1439
|
-
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)");
|
|
1440
1579
|
}
|
|
1441
|
-
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);
|
|
1442
1581
|
}
|
|
1443
1582
|
/** `inspect(value, options)` over one value node: the shared body of
|
|
1444
1583
|
* util.inspect and console.dir. console.dir is Node's `inspect(object,
|
|
@@ -1466,22 +1605,29 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
1466
1605
|
if (value.type.kind === "bytes") {
|
|
1467
1606
|
// One runtime representation serves Buffer AND Uint8Array; their
|
|
1468
1607
|
// renderings differ (<Buffer aa> vs Uint8Array(1) [ 170 ]), so the
|
|
1469
|
-
// TOP-LEVEL argument's checker type picks
|
|
1470
|
-
//
|
|
1471
|
-
// into shapes).
|
|
1608
|
+
// TOP-LEVEL argument's checker type picks. Nested u8 bytes fence in
|
|
1609
|
+
// inspectSupport (no checker type survives into shapes).
|
|
1472
1610
|
const tname = lowerer.checker.typeToString(lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(valueNode)));
|
|
1473
|
-
const isBuffer = tname
|
|
1474
|
-
|
|
1475
|
-
tname.startsWith("Buffer<") ||
|
|
1476
|
-
tname.startsWith("NonSharedBuffer<");
|
|
1477
|
-
if (dir) {
|
|
1611
|
+
const isBuffer = isBufferTypeName(tname);
|
|
1612
|
+
if (dir && isBuffer) {
|
|
1478
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");
|
|
1479
1614
|
}
|
|
1480
|
-
if (
|
|
1481
|
-
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");
|
|
1482
1617
|
}
|
|
1483
|
-
const
|
|
1484
|
-
|
|
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);
|
|
1629
|
+
}
|
|
1630
|
+
// Buffers render fully at any depth and on one line (custom inspect).
|
|
1485
1631
|
return inspectExpr(lowerer, value.type, value, numLit(0, loc), numLit(2, loc), loc);
|
|
1486
1632
|
}
|
|
1487
1633
|
const walk = { recursive: false };
|
|
@@ -1489,17 +1635,18 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
1489
1635
|
if (reason !== null) {
|
|
1490
1636
|
lowerer.noLowering(`${surface} of '${lowerer.fmt(value.type)}' values`, valueNode, reason);
|
|
1491
1637
|
}
|
|
1492
|
-
const
|
|
1638
|
+
const options = parseInspectOptions(lowerer, optionsNode, walk.recursive, dir);
|
|
1639
|
+
const depth = options.depth;
|
|
1493
1640
|
if (dir && value.type.kind === "dyn") {
|
|
1494
|
-
return {
|
|
1641
|
+
return withInspectLayout(lowerer, options, value, (input) => ({
|
|
1495
1642
|
kind: "libCall",
|
|
1496
1643
|
fn: "console.dirDyn",
|
|
1497
|
-
args: [
|
|
1644
|
+
args: [input, numLit(depth, loc)],
|
|
1498
1645
|
type: STRING,
|
|
1499
1646
|
loc,
|
|
1500
|
-
};
|
|
1647
|
+
}), loc);
|
|
1501
1648
|
}
|
|
1502
|
-
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);
|
|
1503
1650
|
}
|
|
1504
1651
|
/* ── util.format / util.formatWithOptions ────────────────────────────── */
|
|
1505
1652
|
/** One argument as format's %s conversion (Node: numbers via
|
|
@@ -1578,16 +1725,79 @@ function formatOArg(lowerer, node, depth, loc) {
|
|
|
1578
1725
|
}
|
|
1579
1726
|
return inspectExpr(lowerer, value.type, value, numLit(0, loc), numLit(depth, loc), loc);
|
|
1580
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
|
+
}
|
|
1581
1791
|
/** util.format(...) / util.formatWithOptions({}, ...): the compile-time
|
|
1582
1792
|
* %-substitution over a literal format string (formatWithOptionsInternal
|
|
1583
1793
|
* ported exactly — the arg cursor, the args-exhausted guard, %c's
|
|
1584
1794
|
* consume-and-drop), with per-static-type conversions. Non-literal
|
|
1585
1795
|
* format strings lower only in the substitution-free shapes. */
|
|
1586
1796
|
export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverride, literalPrefix = "") {
|
|
1587
|
-
const argNodes = [...(argNodesOverride ?? expr.arguments)];
|
|
1797
|
+
const argNodes = [...(argNodesOverride ?? expr.arguments.nodes)];
|
|
1588
1798
|
if (withOptions) {
|
|
1589
1799
|
const opts = argNodes.shift();
|
|
1590
|
-
if (!opts || !ts.isObjectLiteralExpression(opts) || opts.properties.length > 0) {
|
|
1800
|
+
if (!opts || !ts.isObjectLiteralExpression(opts) || opts.properties.nodes.length > 0) {
|
|
1591
1801
|
lowerer.noLowering("util.formatWithOptions with a non-empty options literal", opts ?? expr, "only the empty literal {} (the defaults — exactly util.format) is lowered");
|
|
1592
1802
|
}
|
|
1593
1803
|
}
|
|
@@ -1632,6 +1842,9 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1632
1842
|
// strings through the runtime's ECMA-exact StringToNumber
|
|
1633
1843
|
// (num.fromString — the same lowering Number(aString) takes).
|
|
1634
1844
|
const value = lowerer.lowerExpr(node);
|
|
1845
|
+
const fixed = formatIntegerFixed(value, "%d", loc);
|
|
1846
|
+
if (fixed)
|
|
1847
|
+
return fixed;
|
|
1635
1848
|
if (value.type.kind === "f64")
|
|
1636
1849
|
return { kind: "libCall", fn: "insp.f64", args: [value], type: STRING, loc };
|
|
1637
1850
|
if (value.type.kind === "string") {
|
|
@@ -1663,19 +1876,15 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1663
1876
|
};
|
|
1664
1877
|
}
|
|
1665
1878
|
// A checked-dynamic argument (`console.log('... actual %d.',
|
|
1666
|
-
// context.actual)` — test/common's exit report):
|
|
1667
|
-
// number (dynCheck) and format. A non-number dyn value throws the
|
|
1668
|
-
// catchable TypeError where Node would print its ToNumber (NaN
|
|
1669
|
-
// for objects) — it throws instead of returning a wrong result
|
|
1670
|
-
// (SEMANTICS.md).
|
|
1879
|
+
// context.actual)` — test/common's exit report): Number(arg).
|
|
1671
1880
|
if (value.type.kind === "dyn") {
|
|
1672
|
-
return {
|
|
1881
|
+
return formatDynInteger(lowerer, value, (held) => ({
|
|
1673
1882
|
kind: "libCall",
|
|
1674
|
-
fn: "
|
|
1675
|
-
args: [
|
|
1676
|
-
type:
|
|
1883
|
+
fn: "dyn.numberConstructor",
|
|
1884
|
+
args: [held],
|
|
1885
|
+
type: F64,
|
|
1677
1886
|
loc,
|
|
1678
|
-
};
|
|
1887
|
+
}), loc);
|
|
1679
1888
|
}
|
|
1680
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");
|
|
1681
1890
|
break;
|
|
@@ -1683,6 +1892,9 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1683
1892
|
case 105: {
|
|
1684
1893
|
// %i — parseInt(ToString(arg)): the spec-exact composition.
|
|
1685
1894
|
const value = lowerer.lowerExpr(node);
|
|
1895
|
+
const fixed = formatIntegerFixed(value, "%i", loc);
|
|
1896
|
+
if (fixed)
|
|
1897
|
+
return fixed;
|
|
1686
1898
|
if (value.type.kind === "f64" ||
|
|
1687
1899
|
value.type.kind === "bool" ||
|
|
1688
1900
|
value.type.kind === "string") {
|
|
@@ -1698,6 +1910,19 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1698
1910
|
};
|
|
1699
1911
|
return { kind: "libCall", fn: "insp.f64", args: [parsed], type: STRING, loc };
|
|
1700
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
|
+
}
|
|
1701
1926
|
lowerer.noLowering(`util.format %i of '${lowerer.fmt(value.type)}' values`, node);
|
|
1702
1927
|
break;
|
|
1703
1928
|
}
|
|
@@ -1717,17 +1942,17 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
1717
1942
|
return strLit("undefined", loc);
|
|
1718
1943
|
}
|
|
1719
1944
|
// A checked-dynamic argument (`console.error('headers: %j',
|
|
1720
|
-
// headers)` — the suite's http logging idiom): the runtime
|
|
1721
|
-
// walk
|
|
1722
|
-
// "undefined"
|
|
1723
|
-
//
|
|
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.
|
|
1724
1949
|
if (value.type.kind === "dyn") {
|
|
1725
1950
|
return { kind: "libCall", fn: "insp.jsonDyn", args: [value], type: STRING, loc };
|
|
1726
1951
|
}
|
|
1727
1952
|
if (!lowerer.jsonStringifySafe(value.type)) {
|
|
1728
1953
|
lowerer.noLowering(`util.format %j of '${lowerer.fmt(value.type)}' values`, node, "only JSON-safe static types lower");
|
|
1729
1954
|
}
|
|
1730
|
-
return { kind: "jsonStringify", value, type: STRING, loc };
|
|
1955
|
+
return { kind: "jsonStringify", value, circular: true, type: STRING, loc };
|
|
1731
1956
|
}
|
|
1732
1957
|
case 102: {
|
|
1733
1958
|
// %f — parseFloat(String(arg)) formatted: a number keeps its value
|
|
@@ -1894,21 +2119,21 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1894
2119
|
switch (bi.member) {
|
|
1895
2120
|
case "styleText":
|
|
1896
2121
|
case "isDeepStrictEqual": {
|
|
1897
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2122
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
1898
2123
|
lowerer.noLowering(`util.${bi.member} with spread arguments`, expr);
|
|
1899
2124
|
const stmts = [];
|
|
1900
2125
|
const args = [];
|
|
1901
2126
|
// Save all inputs before evaluating surplus arguments: comparison may
|
|
1902
2127
|
// read mutable objects or throw, so it must happen after every argument.
|
|
1903
2128
|
for (let i = 0; i < 3; i++) {
|
|
1904
|
-
const input = expr.arguments[i]
|
|
1905
|
-
? lowerer.lowerExprExpecting(expr.arguments[i], DYN)
|
|
2129
|
+
const input = expr.arguments.nodes[i]
|
|
2130
|
+
? lowerer.lowerExprExpecting(expr.arguments.nodes[i], DYN)
|
|
1906
2131
|
: dynUndefinedExpr(loc);
|
|
1907
2132
|
const saved = lowerer.declareHiddenLocal("%utilInput", DYN);
|
|
1908
2133
|
stmts.push({ kind: "varDecl", localId: saved.id, init: input, loc });
|
|
1909
2134
|
args.push(varRef(saved.id, DYN, loc));
|
|
1910
2135
|
}
|
|
1911
|
-
for (const arg of expr.arguments.slice(3))
|
|
2136
|
+
for (const arg of expr.arguments.nodes.slice(3))
|
|
1912
2137
|
stmts.push({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc });
|
|
1913
2138
|
const type = bi.member === "styleText" ? STRING : BOOL;
|
|
1914
2139
|
return {
|
|
@@ -1926,10 +2151,10 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1926
2151
|
case "debug":
|
|
1927
2152
|
return lowerUtilCallableCall(lowerer, expr, bi.member, loc);
|
|
1928
2153
|
case "getSystemErrorMap": {
|
|
1929
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2154
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
1930
2155
|
lowerer.noLowering("util.getSystemErrorMap with spread arguments", expr);
|
|
1931
2156
|
const result = lowerSystemErrorMap(lowerer, loc);
|
|
1932
|
-
const stmts = expr.arguments.map((arg) => ({
|
|
2157
|
+
const stmts = expr.arguments.nodes.map((arg) => ({
|
|
1933
2158
|
kind: "exprStmt",
|
|
1934
2159
|
expr: lowerer.lowerExpr(arg),
|
|
1935
2160
|
loc,
|
|
@@ -1940,24 +2165,24 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1940
2165
|
case "getSystemErrorMessage":
|
|
1941
2166
|
case "stripVTControlCharacters":
|
|
1942
2167
|
case "toUSVString": {
|
|
1943
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2168
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
1944
2169
|
lowerer.noLowering(`util.${bi.member} with spread arguments`, expr);
|
|
1945
|
-
const input = expr.arguments[0]
|
|
1946
|
-
? lowerer.lowerExprExpecting(expr.arguments[0], DYN)
|
|
2170
|
+
const input = expr.arguments.nodes[0]
|
|
2171
|
+
? lowerer.lowerExprExpecting(expr.arguments.nodes[0], DYN)
|
|
1947
2172
|
: {
|
|
1948
2173
|
kind: "dynFrom",
|
|
1949
2174
|
value: { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc },
|
|
1950
2175
|
type: DYN,
|
|
1951
2176
|
loc,
|
|
1952
2177
|
};
|
|
1953
|
-
if (expr.arguments.length <= 1)
|
|
2178
|
+
if (expr.arguments.nodes.length <= 1)
|
|
1954
2179
|
return { kind: "libCall", fn: `util.${bi.member}`, args: [input], type: STRING, loc };
|
|
1955
2180
|
const saved = lowerer.declareHiddenLocal("%utilInput", DYN);
|
|
1956
2181
|
return {
|
|
1957
2182
|
kind: "seqExpr",
|
|
1958
2183
|
stmts: [
|
|
1959
2184
|
{ kind: "varDecl", localId: saved.id, init: input, loc },
|
|
1960
|
-
...expr.arguments
|
|
2185
|
+
...expr.arguments.nodes
|
|
1961
2186
|
.slice(1)
|
|
1962
2187
|
.map((arg) => ({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc })),
|
|
1963
2188
|
],
|
|
@@ -1981,11 +2206,11 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
1981
2206
|
case "parseArgs":
|
|
1982
2207
|
return lowerParseArgsCall(lowerer, expr, loc);
|
|
1983
2208
|
case "parseEnv": {
|
|
1984
|
-
if (expr.arguments.length > 1 || expr.arguments.some(ts.isSpreadElement)) {
|
|
2209
|
+
if (expr.arguments.nodes.length > 1 || expr.arguments.nodes.some(ts.isSpreadElement)) {
|
|
1985
2210
|
lowerer.noLowering("util.parseEnv with spread or extra arguments", expr);
|
|
1986
2211
|
}
|
|
1987
|
-
const input = expr.arguments[0]
|
|
1988
|
-
? lowerer.lowerExprExpecting(expr.arguments[0], DYN)
|
|
2212
|
+
const input = expr.arguments.nodes[0]
|
|
2213
|
+
? lowerer.lowerExprExpecting(expr.arguments.nodes[0], DYN)
|
|
1989
2214
|
: dynUndefinedExpr(loc);
|
|
1990
2215
|
const parsed = {
|
|
1991
2216
|
kind: "libCall",
|
|
@@ -2014,7 +2239,7 @@ export function lowerUtilModuleCall(lowerer, expr, bi, loc) {
|
|
|
2014
2239
|
* answer native dyn wrappers; a static function slot checks the wrapper
|
|
2015
2240
|
* when it receives it, and dyn slots keep calling it with JS arity. */
|
|
2016
2241
|
function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
2017
|
-
if (expr.arguments.some(ts.isSpreadElement))
|
|
2242
|
+
if (expr.arguments.nodes.some(ts.isSpreadElement))
|
|
2018
2243
|
lowerer.noLowering(`util.${member} with spread arguments`, expr);
|
|
2019
2244
|
const fn = member === "inherits"
|
|
2020
2245
|
? "util.inherits"
|
|
@@ -2026,8 +2251,15 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2026
2251
|
const arity = member === "deprecate" ? 4 : member === "callbackify" ? 1 : 2;
|
|
2027
2252
|
// Program classes keep static prototypes: there is no function object
|
|
2028
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).
|
|
2029
2256
|
const classArgs = member === "inherits" ? 2 : member === "deprecate" ? 1 : 0;
|
|
2030
|
-
|
|
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;
|
|
2031
2263
|
if (lowerer.mapTypeOf(lowerer.typeOf(arg))?.kind === "classval")
|
|
2032
2264
|
lowerer.noLowering(`util.${member} over a class constructor`, arg, member === "inherits"
|
|
2033
2265
|
? "declare the subclass with extends"
|
|
@@ -2038,14 +2270,17 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2038
2270
|
const stmts = [];
|
|
2039
2271
|
const args = [];
|
|
2040
2272
|
for (let i = 0; i < arity; i++) {
|
|
2041
|
-
const
|
|
2042
|
-
|
|
2043
|
-
|
|
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);
|
|
2044
2279
|
const saved = lowerer.declareHiddenLocal("%utilInput", DYN);
|
|
2045
2280
|
stmts.push({ kind: "varDecl", localId: saved.id, init: input, loc });
|
|
2046
2281
|
args.push(varRef(saved.id, DYN, loc));
|
|
2047
2282
|
}
|
|
2048
|
-
for (const arg of expr.arguments.slice(arity))
|
|
2283
|
+
for (const arg of expr.arguments.nodes.slice(arity))
|
|
2049
2284
|
stmts.push({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc });
|
|
2050
2285
|
const type = fn === "util.inherits" ? VOID : DYN;
|
|
2051
2286
|
const result = { kind: "libCall", fn, args, type, loc };
|
|
@@ -2057,7 +2292,7 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2057
2292
|
* a statically typed callback parameter cannot receive a value its type
|
|
2058
2293
|
* excludes. Untyped (JavaScript or unknown) slots keep the wrapper dyn. */
|
|
2059
2294
|
function callbackifyErrorExcludesNull(lowerer, expr) {
|
|
2060
|
-
if (isJsSourceFile(
|
|
2295
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(expr)))
|
|
2061
2296
|
return false;
|
|
2062
2297
|
const checker = lowerer.checker;
|
|
2063
2298
|
const slot = checker.getContextualType(expr) ?? lowerer.typeOf(expr);
|
|
@@ -2079,11 +2314,11 @@ function callbackifyErrorExcludesNull(lowerer, expr) {
|
|
|
2079
2314
|
* variants and a null-prototype values object); statically typed member
|
|
2080
2315
|
* reads leave that tree through the ordinary dyn checks. */
|
|
2081
2316
|
function lowerParseArgsCall(lowerer, expr, loc) {
|
|
2082
|
-
if (expr.arguments.length > 1 || expr.arguments.some(ts.isSpreadElement)) {
|
|
2083
|
-
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)");
|
|
2084
2319
|
}
|
|
2085
2320
|
let config;
|
|
2086
|
-
const configNode = expr.arguments[0];
|
|
2321
|
+
const configNode = expr.arguments.nodes[0];
|
|
2087
2322
|
if (!configNode) {
|
|
2088
2323
|
config = { kind: "dynObjLit", fields: [], type: DYN, loc };
|
|
2089
2324
|
}
|
|
@@ -2137,9 +2372,9 @@ function lowerParseArgsCall(lowerer, expr, loc) {
|
|
|
2137
2372
|
* forms and TypeScript keep the SC2020 fence: a typed consumer asserting
|
|
2138
2373
|
* real frames must fail at compile time instead of reading placeholders. */
|
|
2139
2374
|
function lowerGetCallSitesCall(lowerer, expr, loc) {
|
|
2140
|
-
if (expr.arguments.length !== 0)
|
|
2375
|
+
if (expr.arguments.nodes.length !== 0)
|
|
2141
2376
|
return null;
|
|
2142
|
-
if (!isJsSourceFile(
|
|
2377
|
+
if (!isJsSourceFile(ts.getSourceFileOfNode(expr)))
|
|
2143
2378
|
return null;
|
|
2144
2379
|
const frame = () => {
|
|
2145
2380
|
const field = (name, value) => ({
|
|
@@ -2152,7 +2387,7 @@ function lowerGetCallSitesCall(lowerer, expr, loc) {
|
|
|
2152
2387
|
field("functionName", { kind: "strLit", value: "", type: STRING, loc }),
|
|
2153
2388
|
field("scriptName", {
|
|
2154
2389
|
kind: "strLit",
|
|
2155
|
-
value:
|
|
2390
|
+
value: ts.getSourceFileOfNode(expr).fileName,
|
|
2156
2391
|
type: STRING,
|
|
2157
2392
|
loc,
|
|
2158
2393
|
}),
|