@scriptc/compiler 0.4.3 → 0.4.5
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 +270 -72
- package/ambient/scriptc-overrides.d.ts +21 -0
- package/dist/backend/executable-features.js +3 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +2 -1
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.js +11 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +9 -0
- package/dist/backend/lld.js +48 -0
- package/dist/backend/lld.js.map +1 -0
- package/dist/backend/lld.test.d.ts +1 -0
- package/dist/backend/lld.test.js +53 -0
- package/dist/backend/lld.test.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.d.ts +11 -1
- package/dist/backend/llvm/appended-array-literals.js +29 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/blocks.js +10 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +13 -4
- package/dist/backend/llvm/bytes-alias.js +16 -5
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-bounds.d.ts +5 -1
- package/dist/backend/llvm/bytes-bounds.js +199 -2
- package/dist/backend/llvm/bytes-bounds.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +45 -3
- package/dist/backend/llvm/bytes-loop-versions.js +244 -20
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +18 -6
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +8 -2
- package/dist/backend/llvm/call-lifetimes.js +87 -18
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +132 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +3 -2
- package/dist/backend/llvm/classes.js +4 -4
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +14 -2
- package/dist/backend/llvm/counted-loops.js +54 -5
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +42 -1
- package/dist/backend/llvm/debug-info.js +72 -6
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.js +2 -2
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +69 -8
- package/dist/backend/llvm/dyn.js +396 -49
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +30 -16
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +8 -4
- package/dist/backend/llvm/emit-journal.js +75 -5
- package/dist/backend/llvm/emit-journal.js.map +1 -1
- package/dist/backend/llvm/emit-module.d.ts +4 -0
- package/dist/backend/llvm/emit-module.js +74 -29
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +297 -28
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +144 -13
- package/dist/backend/llvm/emitter.js +523 -92
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +11 -2
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +11 -13
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +6 -4
- package/dist/backend/llvm/expr-bytes.js +45 -16
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +13 -11
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +11 -0
- package/dist/backend/llvm/expr-containers.js +101 -9
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +3 -0
- package/dist/backend/llvm/expr-control.js +83 -0
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
- package/dist/backend/llvm/expr-dynamic.js +22 -4
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +121 -14
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +111 -26
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/forked-analysis.d.ts +8 -0
- package/dist/backend/llvm/forked-analysis.js +43 -0
- package/dist/backend/llvm/forked-analysis.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +12 -0
- package/dist/backend/llvm/integer-values.js +69 -5
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/integer-views.d.ts +2 -1
- package/dist/backend/llvm/integer-views.js +12 -1
- package/dist/backend/llvm/integer-views.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +4 -0
- package/dist/backend/llvm/js-ic.js +133 -15
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +1 -0
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +6 -1
- package/dist/backend/llvm/lazy-captures.js +10 -5
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.d.ts +5 -0
- package/dist/backend/llvm/lib-abi.js +19 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +249 -33
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.d.ts +10 -0
- package/dist/backend/llvm/lib-filesystem.js +32 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +2 -2
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +2 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +48 -1
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +64 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +28 -3
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +4 -1
- package/dist/backend/llvm/loop-array-borrows.js +11 -5
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +5 -3
- package/dist/backend/llvm/map-entry-fusion.js +20 -11
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.test.js +14 -6
- package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +16 -6
- package/dist/backend/llvm/map-number-lookup.js +41 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +70 -2
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +25 -2
- package/dist/backend/llvm/map-read-lifetimes.js +136 -6
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +8 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +5 -0
- package/dist/backend/llvm/nullable-unions.js +29 -2
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +25 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/publish.js +3 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-union-keys.test.d.ts +1 -0
- package/dist/backend/llvm/record-union-keys.test.js +161 -0
- package/dist/backend/llvm/record-union-keys.test.js.map +1 -0
- package/dist/backend/llvm/reference-effects.js +3 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +4 -5
- package/dist/backend/llvm/shapes.js +106 -58
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +14 -2
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +50 -3
- package/dist/backend/llvm/speculative-integers.js +411 -24
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +103 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split.d.ts +10 -1
- package/dist/backend/llvm/split.js +243 -59
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +92 -13
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-captures.js +1 -5
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -2
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +13 -0
- package/dist/backend/llvm/string-reads.js +22 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +36 -2
- package/dist/backend/llvm/string-slices.js +308 -12
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +182 -3
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/string-unit-versions.d.ts +11 -0
- package/dist/backend/llvm/string-unit-versions.js +191 -0
- package/dist/backend/llvm/string-unit-versions.js.map +1 -0
- package/dist/backend/llvm/string-unit-versions.test.d.ts +1 -0
- package/dist/backend/llvm/string-unit-versions.test.js +117 -0
- package/dist/backend/llvm/string-unit-versions.test.js.map +1 -0
- package/dist/backend/llvm/test-boxed-unions.d.ts +5 -2
- package/dist/backend/llvm/test-boxed-unions.js +24 -8
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -1
- package/dist/backend/llvm/union-repr.d.ts +4 -3
- package/dist/backend/llvm/union-repr.js +6 -5
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +52 -0
- package/dist/backend/llvm/unwind-abi.js +498 -0
- package/dist/backend/llvm/unwind-abi.js.map +1 -0
- package/dist/backend/llvm/unwind-abi.test.d.ts +1 -0
- package/dist/backend/llvm/unwind-abi.test.js +255 -0
- package/dist/backend/llvm/unwind-abi.test.js.map +1 -0
- package/dist/backend/llvm/walkers.js +13 -0
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +14 -10
- package/dist/backend/llvm/wrapping-sums.js +31 -14
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/loop-polls.d.ts +6 -0
- package/dist/backend/loop-polls.js +24 -0
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/may-throw.js +8 -8
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +12 -2
- package/dist/backend/native/executable.js +48 -6
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +4 -3
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/program-shards.d.ts +2 -2
- package/dist/backend/native/program-shards.js +2 -2
- package/dist/backend/native/program-shards.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +5 -3
- package/dist/backend/native-codegen-core.js +13 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +3 -1
- package/dist/backend/native-codegen.js +4 -3
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +6 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +8 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +14 -0
- package/dist/backend/native-profile.js +28 -0
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +8 -1
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +11 -11
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +3 -1
- package/dist/backend/runtime-pack-core.js +2 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +17 -5
- package/dist/backend/runtime-pack-native.js +186 -14
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +160 -3
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +26 -0
- package/dist/backend/target-cpu.js +98 -0
- package/dist/backend/target-cpu.js.map +1 -0
- package/dist/backend/target-cpu.test.d.ts +1 -0
- package/dist/backend/target-cpu.test.js +38 -0
- package/dist/backend/target-cpu.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +4 -1
- package/dist/backend/vendor-archives.js +78 -4
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +3 -1
- package/dist/backend/vendor-inputs.js +3 -1
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +98 -12
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +25 -1
- package/dist/cli/usage.js +40 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +15 -6
- package/dist/compat/fetch-profile.js +519 -498
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +14 -0
- package/dist/contracts/int32-elements.js +2 -1
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +14 -3
- package/dist/coverage/report.js +216 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +25 -25
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +10 -1
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +19 -0
- package/dist/diagnostics/diagnostic.js +53 -2
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +54 -0
- package/dist/diagnostics/envelope.js +7 -1
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +15 -4
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +6 -0
- package/dist/executable/executable-cache.js +5 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +3 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +5 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +26 -2
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/decl-projection.js +105 -10
- package/dist/frontend/decl-projection.js.map +1 -1
- package/dist/frontend/fork-target.js +67 -1
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +43 -0
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +4 -1
- package/dist/frontend/input-tracker.js +42 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +45 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/abstract-equality.js +38 -1
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/argument-counts.d.ts +36 -0
- package/dist/frontend/lowering/argument-counts.js +201 -0
- package/dist/frontend/lowering/argument-counts.js.map +1 -0
- package/dist/frontend/lowering/array-values.d.ts +27 -0
- package/dist/frontend/lowering/array-values.js +112 -0
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +3 -0
- package/dist/frontend/lowering/binding-analysis.js +9 -3
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +13 -0
- package/dist/frontend/lowering/builtin-namespaces.js +238 -0
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -0
- package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
- package/dist/frontend/lowering/builtins/async-context.js +62 -3
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +4 -3
- package/dist/frontend/lowering/builtins/compression.js +86 -5
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +3 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.js +17 -1
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +19 -5
- package/dist/frontend/lowering/builtins/dates.js +163 -9
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +29 -4
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
- package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.d.ts +4 -0
- package/dist/frontend/lowering/builtins/fs-streams.js +24 -1
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.d.ts +4 -1
- package/dist/frontend/lowering/builtins/json.js +9 -3
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +6 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +23 -1
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +6 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +5 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +95 -4
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +1 -1
- package/dist/frontend/lowering/builtins/promises.js +293 -139
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
- package/dist/frontend/lowering/builtins/readline.js +22 -11
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.d.ts +4 -1
- package/dist/frontend/lowering/builtins/reflection.js +41 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +31 -2
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +4 -1
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/x509.d.ts +33 -0
- package/dist/frontend/lowering/builtins/x509.js +431 -0
- package/dist/frontend/lowering/builtins/x509.js.map +1 -0
- package/dist/frontend/lowering/call-arguments.js +44 -0
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +1 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
- package/dist/frontend/lowering/cjs-inline-require.js +308 -5
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-attributes.d.ts +7 -0
- package/dist/frontend/lowering/class-attributes.js +52 -10
- package/dist/frontend/lowering/class-attributes.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +23 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +288 -9
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +97 -26
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +71 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +25 -0
- package/dist/frontend/lowering/class-protocols.js +183 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +8 -0
- package/dist/frontend/lowering/class-prototypes.js +83 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +5 -0
- package/dist/frontend/lowering/class-to-primitive.js +79 -7
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +1 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +89 -10
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +4 -2
- package/dist/frontend/lowering/coercions/unions.js +13 -6
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
- package/dist/frontend/lowering/completion-callbacks.js +146 -0
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
- package/dist/frontend/lowering/containers/array-callbacks.js +58 -21
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +4 -1
- package/dist/frontend/lowering/containers/array-construction.js +107 -9
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +96 -8
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +346 -77
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
- package/dist/frontend/lowering/containers/bytes.js +453 -45
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +11 -1
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +12 -0
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +73 -25
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +4 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +8 -2
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/replacer-params.d.ts +37 -0
- package/dist/frontend/lowering/containers/replacer-params.js +294 -0
- package/dist/frontend/lowering/containers/replacer-params.js.map +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.d.ts +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js +61 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +2 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +7 -3
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -2
- package/dist/frontend/lowering/cycle-initialization.js +4 -1
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +14 -0
- package/dist/frontend/lowering/date-values.js +254 -0
- package/dist/frontend/lowering/date-values.js.map +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.js +16 -8
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +22 -6
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.js +1 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +0 -8
- package/dist/frontend/lowering/expressions/array-literals.js +125 -26
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +102 -26
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +129 -6
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +66 -4
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +2 -1
- package/dist/frontend/lowering/expressions/narrowing.js +8 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +8 -2
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +121 -34
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +76 -11
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +12 -1
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +37 -11
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/f64-handles.d.ts +8 -0
- package/dist/frontend/lowering/f64-handles.js +16 -0
- package/dist/frontend/lowering/f64-handles.js.map +1 -0
- package/dist/frontend/lowering/frozen-records.d.ts +5 -0
- package/dist/frontend/lowering/frozen-records.js +12 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +3 -0
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +30 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +17 -6
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
- package/dist/frontend/lowering/indexed-unions.js +401 -0
- package/dist/frontend/lowering/indexed-unions.js.map +1 -0
- package/dist/frontend/lowering/instantiation-path.d.ts +3 -2
- package/dist/frontend/lowering/instantiation-path.js.map +1 -1
- package/dist/frontend/lowering/instantiation-path.test.js +6 -4
- package/dist/frontend/lowering/instantiation-path.test.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +4 -2
- package/dist/frontend/lowering/iterator-adapters.js +26 -33
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-collection-types.d.ts +11 -0
- package/dist/frontend/lowering/js-collection-types.js +490 -0
- package/dist/frontend/lowering/js-collection-types.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.js +210 -32
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +104 -4
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +2 -2
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +14 -0
- package/dist/frontend/lowering/lower-assert.js +298 -29
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +3 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +116 -10
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +59 -7
- package/dist/frontend/lowering/lower-classes.js +668 -222
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +2 -1
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +5 -0
- package/dist/frontend/lowering/lower-exprs.js +254 -3
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +7 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +5 -4
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +299 -57
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +49 -22
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +3 -0
- package/dist/frontend/lowering/lower-namespaces.js +44 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.js +1 -1
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +126 -32
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -1
- package/dist/frontend/lowering/lower-stdlib.js +51 -37
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +393 -79
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +515 -121
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +82 -12
- package/dist/frontend/lowering/lowerer.js +317 -44
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +1 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +13 -0
- package/dist/frontend/lowering/module-namespace-elements.js +118 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
- package/dist/frontend/lowering/object-factory-new.js +20 -6
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/overload-choice.d.ts +33 -0
- package/dist/frontend/lowering/overload-choice.js +190 -0
- package/dist/frontend/lowering/overload-choice.js.map +1 -0
- package/dist/frontend/lowering/private-brands.d.ts +5 -0
- package/dist/frontend/lowering/private-brands.js +39 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +6 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +14 -3
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.js +2 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +7 -2
- package/dist/frontend/lowering/site-dependencies.js +0 -15
- package/dist/frontend/lowering/site-dependencies.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.test.js +7 -5
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.d.ts +7 -4
- package/dist/frontend/lowering/string-index-bounds.js +21 -7
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +1630 -1540
- 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 +45 -2
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.d.ts +5 -2
- package/dist/frontend/lowering/union-narrow.js +6 -3
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.test.js +10 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
- package/dist/frontend/npm-static-namespace-defaults.d.ts +6 -0
- package/dist/frontend/npm-static-namespace-defaults.js +163 -0
- package/dist/frontend/npm-static-namespace-defaults.js.map +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.d.ts +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js +72 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +152 -111
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static.js +35 -32
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +7 -4
- package/dist/frontend/package-shims.js +39 -40
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +2 -2
- package/dist/frontend/pipeline-native.js +2 -2
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +19 -2
- package/dist/frontend/pipeline.js +103 -12
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +7 -1
- package/dist/frontend/program-analysis.js +8 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +28 -5
- package/dist/frontend/program.js +422 -76
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +2 -0
- package/dist/frontend/resolve.js +5 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +3 -0
- package/dist/frontend/services.js +31 -4
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +93 -0
- package/dist/frontend/shape-inference/analyze.js +3138 -0
- package/dist/frontend/shape-inference/analyze.js.map +1 -0
- package/dist/frontend/shape-inference/constant-graphs.d.ts +54 -0
- package/dist/frontend/shape-inference/constant-graphs.js +357 -0
- package/dist/frontend/shape-inference/constant-graphs.js.map +1 -0
- package/dist/frontend/shape-inference/domain.d.ts +32 -0
- package/dist/frontend/shape-inference/domain.js +104 -0
- package/dist/frontend/shape-inference/domain.js.map +1 -0
- package/dist/frontend/shape-inference/index.d.ts +7 -0
- package/dist/frontend/shape-inference/index.js +19 -0
- package/dist/frontend/shape-inference/index.js.map +1 -0
- package/dist/frontend/shape-inference/report.d.ts +21 -0
- package/dist/frontend/shape-inference/report.js +348 -0
- package/dist/frontend/shape-inference/report.js.map +1 -0
- package/dist/frontend/token-equivalence.d.ts +6 -0
- package/dist/frontend/token-equivalence.js +66 -9
- package/dist/frontend/token-equivalence.js.map +1 -1
- package/dist/frontend/token-equivalence.test.js +33 -1
- package/dist/frontend/token-equivalence.test.js.map +1 -1
- package/dist/frontend/ts7/checker-features.d.ts +15 -0
- package/dist/frontend/ts7/checker-features.js +45 -0
- package/dist/frontend/ts7/checker-features.js.map +1 -0
- package/dist/frontend/ts7/checker-features.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-features.test.js +40 -0
- package/dist/frontend/ts7/checker-features.test.js.map +1 -0
- package/dist/frontend/ts7/checker-server.d.ts +19 -0
- package/dist/frontend/ts7/checker-server.js +46 -0
- package/dist/frontend/ts7/checker-server.js.map +1 -0
- package/dist/frontend/ts7/checker-server.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-server.test.js +38 -0
- package/dist/frontend/ts7/checker-server.test.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.js +39 -13
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.test.js +40 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -1
- package/dist/frontend/ts7/native-api.d.ts +1 -0
- package/dist/frontend/ts7/native-api.js +25 -2
- package/dist/frontend/ts7/native-api.js.map +1 -1
- package/dist/frontend/ts7/native-process.d.ts +9 -2
- package/dist/frontend/ts7/native-process.js +22 -4
- package/dist/frontend/ts7/native-process.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +11 -0
- package/dist/frontend/ts7/program-host.js +36 -22
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +9 -0
- package/dist/frontend/ts7/semantic-json.js +25 -5
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +3 -0
- package/dist/frontend/ts7/semantic-model.js +8 -1
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +6 -1
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +1 -1
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/source-parser.js +3 -1
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/tsc-codes.js +10 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +18 -6
- package/dist/frontend/type-mapper.js +205 -44
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +44 -3
- package/dist/index.js +39 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +37 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -2
- package/dist/ir/builtin-signatures.js +5104 -4894
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +4 -2
- package/dist/ir/callback-specialization.js +24 -9
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.js +4 -2
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +12 -2
- package/dist/ir/char-unit-locals.js +400 -58
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/char-unit-locals.test.js +111 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -1
- package/dist/ir/constant-globals.js +18 -4
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +15 -0
- package/dist/ir/expression-inlining.js +166 -0
- package/dist/ir/expression-inlining.js.map +1 -0
- package/dist/ir/expression-inlining.test.d.ts +1 -0
- package/dist/ir/expression-inlining.test.js +123 -0
- package/dist/ir/expression-inlining.test.js.map +1 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +6 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +27 -6
- package/dist/ir/int32-arrays.js +106 -18
- package/dist/ir/int32-arrays.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +26 -1
- package/dist/ir/int32-slots.js +291 -5
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +38 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +5 -0
- package/dist/ir/integer-loop-facts.js +90 -1
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +14 -1
- package/dist/ir/integer-loops.js +107 -11
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +70 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.js +18 -2
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +64 -4
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +63 -11
- package/dist/ir/ir.js +47 -7
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +2 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +10 -3
- package/dist/ir/js-ic.js +14 -2
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +11 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +7 -0
- package/dist/ir/node-index.js +32 -0
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/receiver-readers.d.ts +6 -1
- package/dist/ir/receiver-readers.js +53 -28
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +15 -0
- package/dist/ir/row-pairs.js +373 -0
- package/dist/ir/row-pairs.js.map +1 -0
- package/dist/ir/row-pairs.test.d.ts +1 -0
- package/dist/ir/row-pairs.test.js +129 -0
- package/dist/ir/row-pairs.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +17 -4
- package/dist/ir/runtime-features.js +94 -13
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +15 -0
- package/dist/ir/scalar-records.js +301 -1
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +181 -1
- package/dist/ir/scalar-records.test.js.map +1 -1
- package/dist/ir/self-captures.js +8 -0
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/validate.js +78 -28
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +4 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +5 -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 +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +13 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/native/cache.d.ts +5 -1
- package/dist/native/cache.js +15 -3
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +6 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +3 -0
- package/dist/native/compiler.js +72 -26
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +87 -2
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/executable-cache-open.test.d.ts +1 -0
- package/dist/native/executable-cache-open.test.js +80 -0
- package/dist/native/executable-cache-open.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +43 -3
- package/dist/native/executable-cache.js +177 -36
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/executable-cache.test.js +103 -0
- package/dist/native/executable-cache.test.js.map +1 -1
- package/dist/native/prepare.d.ts +1 -1
- package/dist/native/prepare.js +49 -17
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +69 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.d.ts +1 -1
- package/dist/native/sanitizer.js +17 -3
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +4 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/classify.d.ts +14 -0
- package/dist/node-islands/classify.js +114 -0
- package/dist/node-islands/classify.js.map +1 -0
- package/dist/node-islands/detect.d.ts +13 -0
- package/dist/node-islands/detect.js +805 -0
- package/dist/node-islands/detect.js.map +1 -0
- package/dist/node-islands/detect.test.d.ts +1 -0
- package/dist/node-islands/detect.test.js +136 -0
- package/dist/node-islands/detect.test.js.map +1 -0
- package/dist/node-islands/origin.d.ts +21 -0
- package/dist/node-islands/origin.js +60 -0
- package/dist/node-islands/origin.js.map +1 -0
- package/dist/node-islands/policy.d.ts +49 -0
- package/dist/node-islands/policy.js +130 -0
- package/dist/node-islands/policy.js.map +1 -0
- package/dist/node-islands/report.d.ts +22 -0
- package/dist/node-islands/report.js +326 -0
- package/dist/node-islands/report.js.map +1 -0
- package/dist/node-islands/report.test.d.ts +1 -0
- package/dist/node-islands/report.test.js +228 -0
- package/dist/node-islands/report.test.js.map +1 -0
- package/dist/node-islands/rules.d.ts +20 -0
- package/dist/node-islands/rules.js +91 -0
- package/dist/node-islands/rules.js.map +1 -0
- package/dist/node-islands/scan.d.ts +53 -0
- package/dist/node-islands/scan.js +104 -0
- package/dist/node-islands/scan.js.map +1 -0
- package/dist/node-islands/summary.d.ts +78 -0
- package/dist/node-islands/summary.js +26 -0
- package/dist/node-islands/summary.js.map +1 -0
- package/dist/project-config.d.ts +50 -0
- package/dist/project-config.js +372 -0
- package/dist/project-config.js.map +1 -0
- package/dist/project-config.test.d.ts +1 -0
- package/dist/project-config.test.js +154 -0
- package/dist/project-config.test.js.map +1 -0
- package/dist/wasm/discover.js +6 -31
- package/dist/wasm/discover.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +21 -38
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isDeclBoundaryFile } from "../decl-projection.js";
|
|
2
2
|
import { relieveHeapPressure } from "../../heap-pressure.js";
|
|
3
|
-
import { moduleNamespaceObject } from "./module-namespace-elements.js";
|
|
3
|
+
import { moduleNamespaceObject, moduleNamespaceValue } from "./module-namespace-elements.js";
|
|
4
4
|
import { keyedHelperName } from "./stable-names.js";
|
|
5
5
|
import { positionTag, StructuralPositions } from "./structural-positions.js";
|
|
6
6
|
import { onlyForwarded, stripTypeWrappers } from "./typed-arguments.js";
|
|
@@ -14,6 +14,7 @@ import { internTableType, lowerInternTableCall, lowerInternTableNew } from "./in
|
|
|
14
14
|
import { lowerThreadSlotsCall, lowerThreadSlotsNew, threadSlotsType } from "./thread-slots.js";
|
|
15
15
|
import { isExperimentalDeclarationFile } from "../experimental-import.js";
|
|
16
16
|
import { checkCycleBindingAccesses, refuseUncheckedCycleReads, } from "./cycle-initialization.js";
|
|
17
|
+
import { bindCompletionCallbacks } from "./completion-callbacks.js";
|
|
17
18
|
import { isJsonRequireDecl } from "./json-require.js";
|
|
18
19
|
import { checkRequireBindingAccesses, } from "./require-initialization.js";
|
|
19
20
|
import { identityPreservingWidening } from "./coercions/identity.js";
|
|
@@ -34,6 +35,7 @@ import { discoverWasmModules } from "../../wasm/discover.js";
|
|
|
34
35
|
import { encodeBase64 } from "../../wasm/base64.js";
|
|
35
36
|
import { resolveRequireRuntime } from "../runtime-resolve.js";
|
|
36
37
|
import { lowerKeyObjectCall } from "./builtins/key-object.js";
|
|
38
|
+
import { lowerX509Call, refuseX509DynValues } from "./builtins/x509.js";
|
|
37
39
|
import { isEcdhType, lowerEcdhCall } from "./builtins/ecdh.js";
|
|
38
40
|
import { isDiffieHellmanType, lowerDiffieHellmanCall } from "./builtins/dh.js";
|
|
39
41
|
import { fenceWebCryptoMember, lowerWebCryptoCall } from "./builtins/webcrypto.js";
|
|
@@ -69,10 +71,12 @@ import { bindingInContext, captureContextBinding, declareContextLocal, declareCo
|
|
|
69
71
|
import { InternalCompilerError } from "../../errors.js";
|
|
70
72
|
import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "./optional-arguments.js";
|
|
71
73
|
import {} from "./class-protocol-dispatch.js";
|
|
72
|
-
import { ClassDynamicDispatch, trackClassFieldCreation } from "./class-dynamic-dispatch.js";
|
|
73
|
-
import { guardClassAttributeWrites } from "./class-attributes.js";
|
|
74
|
+
import { ClassDynamicDispatch, boxClassInstancesExactly, trackClassFieldCreation, } from "./class-dynamic-dispatch.js";
|
|
75
|
+
import { addUntypedIntegrityWords, guardClassAttributeWrites } from "./class-attributes.js";
|
|
76
|
+
import { inferredCollectionType } from "./js-collection-types.js";
|
|
74
77
|
import { guardFrozenWrites, markSloppyRecordWrites } from "./frozen-records.js";
|
|
75
78
|
import { applyHandleProperties } from "./handle-properties.js";
|
|
79
|
+
import { installBufferValue } from "./containers/bytes.js";
|
|
76
80
|
import { ClassProtocols } from "./class-protocols.js";
|
|
77
81
|
import { earlyReadVarSymbols } from "./var-hoisting.js";
|
|
78
82
|
import { recordTextCodecClass } from "../../ir/ir.js";
|
|
@@ -110,20 +114,21 @@ import { discriminantOwners, literalUnionArm } from "../union-discriminants.js";
|
|
|
110
114
|
import { unsupportedAnyOperationDiag, blockedBindingUseDiag, checkerPanicDiag, componentTypeDiag, isCheckerPanic, genericSignatureTypeDiag, indexSignatureTypeDiag, intersectionTypeDiag, noLoweringDiag, overloadedSignatureTypeDiag, recordShapeMismatchDiag, unsupportedNativeApiDiag, unsupportedPackageValueDiag, unionMismatchDiag, UNSUPPORTED, unsupportedDiag, unsupportedTypeDiag, } from "../../diagnostics/diagnostic.js";
|
|
111
115
|
import { arrayOf, BOOL, canAdaptDynFuncTo, canBoxFuncIntoDyn, canDynCheckTo, canConvertToDyn, DYN, DYN_HANDLE_KINDS, F64, isDynTypedRefType, isJsonSafeType, isJsonStringifySafeType, isPrimitiveCollectionKey, isSupportedMapKey, isSupportedMapValue, isUndefinedArmedUnion, isUnitType, NULL_T, RUNTIME_ERROR_CLASSES, STRING, typeEquals, UNDEFINED_T, VOID, } from "../../ir/ir.js";
|
|
112
116
|
import { provenanceActive } from "../provenance-registry.js";
|
|
113
|
-
import { ambientDtsPath, canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, fallbackDtsPath, isCheckedJsSourceFile, isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isNodeEsmFile, isNodeTypesPath, locOf, orderedImportsOf, overridesDtsPath, npmStaticDepSf7, requireSpecOf, resolveImport, workspacePackageOfPath, } from "../program.js";
|
|
117
|
+
import { ambientDtsPath, canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, cjsExportsAssignedInFunctions, cjsReexportedModules, cjsNamespaceExportNames, fallbackDtsPath, isCheckedJsSourceFile, isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isNodeEsmFile, isNodeTypesPath, locOf, orderedImportsOf, overridesDtsPath, npmStaticDepSf7, requireSpecOf, resolveImport, workspacePackageOfPath, } from "../program.js";
|
|
114
118
|
import { containsRecord, containsUnion, describeComponentBlocker, describeRecordMemberBlocker, erasedOverloadMemberType, formatIrType, FETCH_AMBIENT_TYPES, isOsConstantsSymbol, isOverloadedCallableMemberType, isUnitOnlyTsType, isWorkerHandleType, isFetchHandleType, jsOpenObjectType, mapType, ShapeRegistry, typeKey, UnionRegistry, withUndefinedArm as withUndefinedArmCanonical, } from "../type-mapper.js";
|
|
115
119
|
import { builtinConstLit, builtinModuleConstOf, builtinModulesArrayLit, builtinFenceHintOf, builtinModuleFnOf, stdlibMemberFence, isStdlibMember, isStdlibSymbol, isStdlibGlobal, stdlibGlobalNameOf, stdlibGlobalMember, nodeTypesOnlySymbol, } from "./surfaces.js";
|
|
116
120
|
import { builtinClassAliasOf, runtimeClassValueOfType, } from "./builtins/class-values.js";
|
|
117
121
|
import { splitFiles, collectProgram, collectNpmImports, collectJsonImports, moduleArtifacts, collectGlobals, declSymbolOf, defaultExportSymbolOf, lowerFileInit, lowerDefaultExport, buildMain, appendDynamicImportModules, appendForkModules, appendWorkerModules, } from "./lower-modules.js";
|
|
118
122
|
import { prepareCjsModuleGraph, usesCjsTopLevelThis } from "./lower-node-module.js";
|
|
119
|
-
import { cjsNamespaceModule, cjsWholeExportValueOf, inlineNamespaceRequireOf, inlineProgramRequireOf, } from "./cjs-inline-require.js";
|
|
123
|
+
import { cjsNamespaceModule, cjsWholeExportValueOf, inlineNamespaceRequireOf, inlineProgramRequireOf, splitRequireBindingOf, splitWholeExportAliasTargetOf, } from "./cjs-inline-require.js";
|
|
120
124
|
import { tscInteropModuleOf } from "./cjs-tsc-interop.js";
|
|
121
125
|
import { usesCjsExportsIdentity } from "./cjs-exports-object.js";
|
|
122
126
|
import { registerBuiltinEventTargetClasses } from "./lower-event-target.js";
|
|
123
|
-
import { registerBuiltinErrorClasses, defineClassValueConstruct, runtimeClassConstructs, registerBuiltinEmitterClass, registerBuiltinStreamClasses, builtinErrorInfoOf, builtinEmitterInfoOf, builtinStreamInfoOf, analyzeClassDecoration, classIteratorDrainCall, classIteratorNextCall, classIteratorOf, classIteratorOpenCall, classIteratorRestDrainCall, classMemberNameOf, classValueRef, collectClassShape, exactClassOfReceiver, collectClassShapeInner, ctorAbiEquals, findMethodOn, findStaticOn, genericClassInstanceType, isSubclassOf, inHierarchy, overrideBelow, staticShadowBelow, upcastTo, lowerClassMembers, lowerClassCtor, lowerClassExpression, lowerClassExpressionInfo, lowerClassMethodMember, lowerClassValueProperty, lowerStaticMethod, throwingSetterFn, fieldInitStmts, lowerStaticFieldInits, lowerStaticFieldRead, lowerDerivedCtorBody, superCallStmt, lowerSuperMethodCall, superThisRef, lowerSuperAccessorRead, lowerSuperAccessorWrite, inheritsBuiltinErrorCtor, inheritsBuiltinEmitterCtor, errorConstructorArgs, lowerNew, accessorCall, } from "./lower-classes.js";
|
|
127
|
+
import { registerBuiltinErrorClasses, defineClassValueConstruct, runtimeClassConstructs, registerBuiltinEmitterClass, registerBuiltinStreamClasses, builtinErrorInfoOf, builtinEmitterInfoOf, builtinStreamInfoOf, analyzeClassDecoration, classIteratorDrainCall, classIteratorMethodCall, classIteratorNextCall, classIteratorNextRead, classIteratorOf, classIteratorOpenCall, classIteratorRestDrainCall, classMemberNameOf, classValueRef, collectClassShape, exactClassOfReceiver, collectClassShapeInner, ctorAbiEquals, findMethodOn, findStaticOn, genericClassInstanceType, isSubclassOf, inHierarchy, overrideBelow, staticShadowBelow, upcastTo, lowerClassMembers, lowerClassCtor, lowerClassExpression, lowerClassExpressionInfo, lowerClassMethodMember, lowerClassValueProperty, lowerStaticMethod, throwingSetterFn, fieldInitStmts, lowerStaticFieldInits, lowerStaticFieldRead, lowerDerivedCtorBody, superCallStmt, lowerSuperMethodCall, superThisRef, lowerSuperAccessorRead, lowerSuperAccessorWrite, inheritsBuiltinErrorCtor, inheritsBuiltinEmitterCtor, errorConstructorArgs, lowerNew, accessorCall, } from "./lower-classes.js";
|
|
124
128
|
import { mixinCallClassInfoOf, mixinIntersectionInstanceType, } from "./lower-mixins.js";
|
|
125
129
|
import { tryLowerExpression } from "./expressions/try-lower-expression.js";
|
|
126
130
|
import { funcTypeFromParamShapes, isThisParameter, paramShape, paramShapes, checkDefaultParamBodyType, requireExactArityValue, collectSignature, collectSignatureInner, lambdaSignature, } from "./call-signatures.js";
|
|
131
|
+
import { dynamicOverloadChoice, guessedOverloadIdentifier } from "./overload-choice.js";
|
|
127
132
|
import { implicitAnyParamSymbolsOf, implicitLocalFnNodeOf, implicitMonoFile, collectGenericSignature, genericFnOf, lowerGenericCall, lowerGenericFnValue, inferTypeParamBindings, lowerGenericInstance, genericLocalClassBinding, } from "./generic-functions.js";
|
|
128
133
|
import { bindingNeverReassigned } from "./binding-analysis.js";
|
|
129
134
|
import { bodyReadsArguments } from "../arguments-usage.js";
|
|
@@ -173,7 +178,7 @@ import { fenceFetchObjectAssignment, fenceFetchObjectBinding, fenceStaticAbortCo
|
|
|
173
178
|
import { lowerHttpHeadersElement, lowerNetModuleCall, lowerServerMethodCall, lowerServerProperty, lowerTlsRootCertificates, } from "./lower-server.js";
|
|
174
179
|
import { lowerDgramDnsModuleCall, lowerDgramMethodCall } from "./lower-dgram.js";
|
|
175
180
|
import { lowerNodeTestModuleCall, lowerTestDirectCall, lowerTestMethodCall, lowerTestCtxProperty, } from "./lower-test.js";
|
|
176
|
-
import { lowerAssertModuleCall, lowerAssertDirectCall } from "./lower-assert.js";
|
|
181
|
+
import { assertFunctionValue, lowerAssertModuleCall, lowerAssertDirectCall, } from "./lower-assert.js";
|
|
177
182
|
import { lowerUtilModuleCall } from "./lower-inspect.js";
|
|
178
183
|
import { lowerSystemErrorMapValue } from "./lower-system-errors.js";
|
|
179
184
|
import { lowerComptime, comptimeBakeable, rejectComptimeCaptures, comptimeValueToIr, } from "./lower-comptime.js";
|
|
@@ -1519,6 +1524,14 @@ export class Lowerer {
|
|
|
1519
1524
|
/** Per CommonJS file using top-level `this`: the global holding the
|
|
1520
1525
|
* object that stands for its original exports (lowerCjsTopLevelThis). */
|
|
1521
1526
|
cjsExportsThis = new Map();
|
|
1527
|
+
/** `var m; m = require("./x")` alias bindings (cjs-inline-require.ts).
|
|
1528
|
+
* Null entries cache declarations that keep ordinary storage. */
|
|
1529
|
+
cjsSplitRequireBindings = new Map();
|
|
1530
|
+
/** Per-module whole-export symbol (cjs-inline-require.ts). Null means the
|
|
1531
|
+
* module's exports are a table. */
|
|
1532
|
+
cjsWholeExportSymbols = new Map();
|
|
1533
|
+
/** Per-module live member-export classification (cjs-inline-require.ts). */
|
|
1534
|
+
cjsLiveMemberExports = new Map();
|
|
1522
1535
|
/** Inline program-module require calls whose %init the enclosing member
|
|
1523
1536
|
* read or member call is already sequencing (cjs-inline-require.ts). */
|
|
1524
1537
|
inlineRequireInitDone = new Set();
|
|
@@ -1569,6 +1582,13 @@ export class Lowerer {
|
|
|
1569
1582
|
runtimeOptionalFields = new Set();
|
|
1570
1583
|
/** Bindings initialized by a Date's `toJSON()` (analyzeDateJsonResults). */
|
|
1571
1584
|
dateJsonBindings = new Set();
|
|
1585
|
+
/** isTimeValueDateDeclaration's answers, and the locals that hold a
|
|
1586
|
+
* Date's time value instead of a Date object (date-values.ts). */
|
|
1587
|
+
timeValueDateDecisions = new Map();
|
|
1588
|
+
timeValueDateLocals = new Set();
|
|
1589
|
+
/** Declarations of those locals that a setter call writes
|
|
1590
|
+
* (date-values.ts). */
|
|
1591
|
+
timeValueDateWrites = new Set();
|
|
1572
1592
|
/** Record bindings whose flow class reaches storage outside the class:
|
|
1573
1593
|
* they keep the declared layout, so an initializer from unchecked reads
|
|
1574
1594
|
* converts once instead of the binding adopting the widened variant. */
|
|
@@ -1577,6 +1597,9 @@ export class Lowerer {
|
|
|
1577
1597
|
* every name destructured from a present source optional. */
|
|
1578
1598
|
runtimeOptionalPatternTypes = new Map();
|
|
1579
1599
|
runtimeOptionalReduceTypes = new Map();
|
|
1600
|
+
/** Each function declaration's `arguments.length` count slot, or null
|
|
1601
|
+
* (argument-counts.ts argumentCountSlot). */
|
|
1602
|
+
argumentCountSlots = new Map();
|
|
1580
1603
|
/** Non-null assertions whose value is forwarded into a slot promoted to
|
|
1581
1604
|
* hold undefined. `x!` has no runtime effect, so these keep the stored
|
|
1582
1605
|
* undefined state instead of trapping before any dereference. */
|
|
@@ -2016,6 +2039,11 @@ export class Lowerer {
|
|
|
2016
2039
|
/** Parameters read as `any` in the error-path copy of an error-first
|
|
2017
2040
|
* callback. */
|
|
2018
2041
|
anySymbols = new Set();
|
|
2042
|
+
/** The collection types that uses prove for untyped JavaScript bindings,
|
|
2043
|
+
* by every identifier naming one (js-collection-types.ts). */
|
|
2044
|
+
inferredCollectionTypes = undefined;
|
|
2045
|
+
/** overload-choice's answers per call, binding and function. */
|
|
2046
|
+
dynamicOverloadAnswers = new Map();
|
|
2019
2047
|
/** Error parameters of an error-first callback with a known value in
|
|
2020
2048
|
* the copy being lowered: true while it holds an Error, false while it
|
|
2021
2049
|
* holds null (staticCondition folds conditions on them). */
|
|
@@ -2090,6 +2118,9 @@ export class Lowerer {
|
|
|
2090
2118
|
/** util.inspect's per-type traversal helpers (%util.insp.N), interned
|
|
2091
2119
|
* by typeKey — the assertHelpers pattern with its own namespace. */
|
|
2092
2120
|
inspectHelpers = new Map();
|
|
2121
|
+
/** Indexed-union safe-read helpers mapped to their numeric twins, for the
|
|
2122
|
+
* fusion of an immediate ToNumber (tryLowerNumericIndexRead). */
|
|
2123
|
+
indexedUnionNumericTwins = new Map();
|
|
2093
2124
|
unionLiteralOwners = new Map();
|
|
2094
2125
|
strippedUndefinedArms = new Map();
|
|
2095
2126
|
addedUndefinedArms = new Map();
|
|
@@ -2120,6 +2151,10 @@ export class Lowerer {
|
|
|
2120
2151
|
* checks resolve through this map (stdlibGlobalNameOf), declarations
|
|
2121
2152
|
* emit nothing. */
|
|
2122
2153
|
stdlibGlobalAliases = new Map();
|
|
2154
|
+
/** The stdlibGlobalAliases bound through a cast of the global object
|
|
2155
|
+
* (`(globalThis as { Buffer?: B }).Buffer`). Their static type is the
|
|
2156
|
+
* cast's, so their value reads are refused (identifiers.ts). */
|
|
2157
|
+
castGlobalAliases = new Set();
|
|
2123
2158
|
/** CJS export-table ACCESSORS (`module.exports = { get path() {...} }`),
|
|
2124
2159
|
* lifted lazily as module-level functions and interned per accessor
|
|
2125
2160
|
* declaration: member reads call the getter (lower-exprs). */
|
|
@@ -2154,6 +2189,9 @@ export class Lowerer {
|
|
|
2154
2189
|
builtinCallableValueFns = new Map();
|
|
2155
2190
|
/** Each builtin function-value adapter's Node name, for boxed values. */
|
|
2156
2191
|
builtinCallableValueNames = new Map();
|
|
2192
|
+
/** Builtin function values whose `length` differs from their adapter's
|
|
2193
|
+
* parameter count (BuiltinModuleFn.valueLength), by adapter name. */
|
|
2194
|
+
builtinCallableValueLengths = new Map();
|
|
2157
2195
|
/** Optional-chain lowering state. While a chain body lowers, the guarded
|
|
2158
2196
|
* receiver NODE reads as a chainRecv (typed by the narrowed arm) instead
|
|
2159
2197
|
* of re-lowering, its checker type reads non-nullish (typeOf), and the
|
|
@@ -2292,8 +2330,18 @@ export class Lowerer {
|
|
|
2292
2330
|
* (builtins/fs-paths.ts): each lowers to the hidden local that holds its
|
|
2293
2331
|
* value, which is null until the path's lowering has saved it. */
|
|
2294
2332
|
stagedArguments = new Map();
|
|
2295
|
-
/**
|
|
2296
|
-
|
|
2333
|
+
/** Closure arguments an implicit-any call already lowered to learn their
|
|
2334
|
+
* type (storedImplicitArgumentType), by node: the argument's own lowering
|
|
2335
|
+
* in the same function and with the same type bindings takes that value
|
|
2336
|
+
* once instead of lowering the closure again. */
|
|
2337
|
+
speculatedClosures = new Map();
|
|
2338
|
+
/** What each fs path argument of a URL-path call lowers to (the plans
|
|
2339
|
+
* of builtins/fs-paths.ts). */
|
|
2340
|
+
fsPathPlans = new Map();
|
|
2341
|
+
/** The existsSync/fs.promises calls whose converted URL paths are being
|
|
2342
|
+
* lowered into the call itself (lowerFallibleFsUrlCall). A call may be
|
|
2343
|
+
* lowered more than once, and each lowering converts again. */
|
|
2344
|
+
fallibleFsCalls = new Set();
|
|
2297
2345
|
moduleNsParamOverrides = new Map();
|
|
2298
2346
|
/** File → qualifier prefix: "" for the entry, "%mI." otherwise. */
|
|
2299
2347
|
fileTag = new Map();
|
|
@@ -2413,6 +2461,9 @@ export class Lowerer {
|
|
|
2413
2461
|
recordFieldDeletes = new Set();
|
|
2414
2462
|
/** typeKeys of the array types the program may freeze (IrModule.freezableArrays). */
|
|
2415
2463
|
freezableArrays = new Set();
|
|
2464
|
+
/** Whether the program freezes, seals or prevents extensions of untyped
|
|
2465
|
+
* values other than fresh literals (noteUntypedIntegrity). */
|
|
2466
|
+
untypedIntegrity = false;
|
|
2416
2467
|
liftedFns = [];
|
|
2417
2468
|
/** The first lifted function of each name (liftedFnNamed), for the
|
|
2418
2469
|
* liftedFns indexed so far. liftedFns only grows. */
|
|
@@ -2815,9 +2866,7 @@ export class Lowerer {
|
|
|
2815
2866
|
* that comes back through a boundary cast keeps its identity. */
|
|
2816
2867
|
declBoundaryMemo = null;
|
|
2817
2868
|
get declBoundary() {
|
|
2818
|
-
this.declBoundaryMemo ??= this.program
|
|
2819
|
-
.getSourceFiles()
|
|
2820
|
-
.some((sf) => isDeclBoundaryFile(sf.fileName));
|
|
2869
|
+
this.declBoundaryMemo ??= this.program.getSourceFileNames().some(isDeclBoundaryFile);
|
|
2821
2870
|
return this.declBoundaryMemo;
|
|
2822
2871
|
}
|
|
2823
2872
|
/** Tracked classes' bag initializers over a typed `this`
|
|
@@ -2860,7 +2909,7 @@ export class Lowerer {
|
|
|
2860
2909
|
positionOf: (node) => this.positions.of(node),
|
|
2861
2910
|
shapes: this.shapes,
|
|
2862
2911
|
unions: this.unions,
|
|
2863
|
-
classNamer: this.classNamer,
|
|
2912
|
+
classNamer: (decl) => this.classNamer(decl),
|
|
2864
2913
|
resolveTypeParam: this.typeParamResolver,
|
|
2865
2914
|
resolveTypeParamTs: this.typeParamTsResolver,
|
|
2866
2915
|
isErasing: () => this.erasingDepth > 0,
|
|
@@ -2924,8 +2973,8 @@ export class Lowerer {
|
|
|
2924
2973
|
},
|
|
2925
2974
|
mixinIntersectionInstance: (widened) => mixinIntersectionInstanceType(this, widened),
|
|
2926
2975
|
classImplementedProtocol: (type) => this.classImplementedProtocol(type),
|
|
2927
|
-
isStdlibFile: this.isStdlibFile,
|
|
2928
|
-
isNpmFile: this.isNpmFile,
|
|
2976
|
+
isStdlibFile: (sf) => this.isStdlibFile(sf),
|
|
2977
|
+
isNpmFile: (sf) => this.isNpmFile(sf),
|
|
2929
2978
|
// The declaration-typed boundary's generated types (decl-projection.ts)
|
|
2930
2979
|
// describe data, like an explicitly mapped external type surface.
|
|
2931
2980
|
isExternalTypeFile: (sf) => this.externalTypeSpecifiersByFile.has(tsgoPath(resolve(sf.fileName))) ||
|
|
@@ -2989,7 +3038,8 @@ export class Lowerer {
|
|
|
2989
3038
|
/** Declared class fields may store a DYN value only when its static type
|
|
2990
3039
|
* is `unknown` or `object` (also with `null` or `undefined`, or an array
|
|
2991
3040
|
* of those), names checked protocol identity, is an owned runtime
|
|
2992
|
-
* handle (a Worker or MessagePort, a fetch Headers/Request/Response
|
|
3041
|
+
* handle (a Worker or MessagePort, a fetch Headers/Request/Response or
|
|
3042
|
+
* AbortController/AbortSignal, or
|
|
2993
3043
|
* a node:crypto ECDH, DiffieHellman or DiffieHellmanGroup), or is a
|
|
2994
3044
|
* WeakMap/WeakSet (native weak collections live in checked-dynamic
|
|
2995
3045
|
* storage, as locals of those types do); `any` fields stay refused. */
|
|
@@ -3057,6 +3107,35 @@ export class Lowerer {
|
|
|
3057
3107
|
}
|
|
3058
3108
|
return null;
|
|
3059
3109
|
}
|
|
3110
|
+
/** For each CommonJS module read through a JavaScript namespace import:
|
|
3111
|
+
* the property names of Node's namespace object
|
|
3112
|
+
* (cjsNamespaceExportNames), and the exports the module assigns inside
|
|
3113
|
+
* functions, which the namespace does not see
|
|
3114
|
+
* (cjsExportsAssignedInFunctions). */
|
|
3115
|
+
cjsNamespaces = new Map();
|
|
3116
|
+
cjsNamespaceOf(dep) {
|
|
3117
|
+
let namespace = this.cjsNamespaces.get(dep);
|
|
3118
|
+
if (namespace === undefined) {
|
|
3119
|
+
// A re-exported name reads the module that assigns it, so the writes
|
|
3120
|
+
// after evaluation of every re-exported module count too.
|
|
3121
|
+
let assignedLater = new Set();
|
|
3122
|
+
for (const mod of cjsReexportedModules(this.program, dep)) {
|
|
3123
|
+
const later = cjsExportsAssignedInFunctions(mod);
|
|
3124
|
+
if (later === "all") {
|
|
3125
|
+
assignedLater = "all";
|
|
3126
|
+
break;
|
|
3127
|
+
}
|
|
3128
|
+
for (const name of later)
|
|
3129
|
+
assignedLater.add(name);
|
|
3130
|
+
}
|
|
3131
|
+
namespace = {
|
|
3132
|
+
names: cjsNamespaceExportNames(this.program, dep),
|
|
3133
|
+
assignedLater,
|
|
3134
|
+
};
|
|
3135
|
+
this.cjsNamespaces.set(dep, namespace);
|
|
3136
|
+
}
|
|
3137
|
+
return namespace;
|
|
3138
|
+
}
|
|
3060
3139
|
sourceFileOfModuleNamespace(type) {
|
|
3061
3140
|
if (type.kind !== "moduleNs" || !type.moduleId.startsWith("file:"))
|
|
3062
3141
|
return null;
|
|
@@ -3197,6 +3276,12 @@ export class Lowerer {
|
|
|
3197
3276
|
const cjsValue = this.cjsExportValueSymbol(symbol);
|
|
3198
3277
|
if (cjsValue)
|
|
3199
3278
|
symbol = cjsValue;
|
|
3279
|
+
// `var m; m = require("./x"); module.exports = m` over a whole-export
|
|
3280
|
+
// target: TS types the wrapper's export= as `any`, so reconnect it to
|
|
3281
|
+
// the target's value symbol explicitly.
|
|
3282
|
+
const splitAlias = splitWholeExportAliasTargetOf(this, symbol);
|
|
3283
|
+
if (splitAlias)
|
|
3284
|
+
symbol = splitAlias;
|
|
3200
3285
|
this.flushDeferred(symbol);
|
|
3201
3286
|
return symbol;
|
|
3202
3287
|
}
|
|
@@ -3310,7 +3395,7 @@ export class Lowerer {
|
|
|
3310
3395
|
// exact mappings, while star exports resolve to the mapped declaration
|
|
3311
3396
|
// owner through externalTypeSpecifiersByFile.
|
|
3312
3397
|
const moduleSymbol = this.checker.getSymbolAtLocation(sf);
|
|
3313
|
-
const exported = moduleSymbol?.getExports().get(exportName);
|
|
3398
|
+
const exported = moduleSymbol?.getExports().get(ts.escapedSymbolName(exportName));
|
|
3314
3399
|
return this.externalTypeSpecifierOfSymbol(exported, seenSymbols, seenExports);
|
|
3315
3400
|
}
|
|
3316
3401
|
externalTypeSpecifierOfNamespaceMember(expr, member) {
|
|
@@ -3451,7 +3536,7 @@ export class Lowerer {
|
|
|
3451
3536
|
cjsModuleExportSymbol(sf, name) {
|
|
3452
3537
|
const moduleSym = this.checker.getSymbolAtLocation(sf);
|
|
3453
3538
|
const exports = moduleSym?.getExports();
|
|
3454
|
-
const direct = exports?.get(name);
|
|
3539
|
+
const direct = exports?.get(ts.escapedSymbolName(name));
|
|
3455
3540
|
if (direct)
|
|
3456
3541
|
return direct;
|
|
3457
3542
|
// tsgo represents `module.exports = { ... }` as one `export=` symbol
|
|
@@ -3601,8 +3686,10 @@ export class Lowerer {
|
|
|
3601
3686
|
return null;
|
|
3602
3687
|
if (ts.isImportClause(decl))
|
|
3603
3688
|
return this.cjsDefaultImportDepOf(decl);
|
|
3604
|
-
if (!ts.isVariableDeclaration(decl) || !ts.isIdentifier(decl.name)
|
|
3689
|
+
if (!ts.isVariableDeclaration(decl) || !ts.isIdentifier(decl.name))
|
|
3605
3690
|
return null;
|
|
3691
|
+
if (decl.initializer === undefined)
|
|
3692
|
+
return splitRequireBindingOf(this, decl)?.dep ?? null;
|
|
3606
3693
|
{
|
|
3607
3694
|
const interop = tscInteropModuleOf(this, expr);
|
|
3608
3695
|
if (interop !== null)
|
|
@@ -3705,6 +3792,10 @@ export class Lowerer {
|
|
|
3705
3792
|
if (!ts.isIdentifier(expr))
|
|
3706
3793
|
return this.cjsModuleRefDepOf(expr) !== null;
|
|
3707
3794
|
const sym = this.checker.getSymbolAtLocation(expr);
|
|
3795
|
+
const splitDecl = sym?.declarations.find(ts.isVariableDeclaration);
|
|
3796
|
+
const split = splitDecl === undefined ? null : splitRequireBindingOf(this, splitDecl);
|
|
3797
|
+
if (split !== null)
|
|
3798
|
+
return cjsNamespaceModule(this, split.dep);
|
|
3708
3799
|
if (this.localModuleBindingDepOf(expr) === null)
|
|
3709
3800
|
return false;
|
|
3710
3801
|
if (this.createRequireWholeExportSymbolOf(expr) !== null)
|
|
@@ -4012,6 +4103,9 @@ export class Lowerer {
|
|
|
4012
4103
|
* their external dependencies by name). Null for everything else
|
|
4013
4104
|
* (builtins load nothing; the rest kept its preflight fence). */
|
|
4014
4105
|
requireInitStmt(spec, node) {
|
|
4106
|
+
if (this.inlineRequireCycleCalls.has(node)) {
|
|
4107
|
+
this.unsupported("SC1090", node, `require() of '${spec}' while it is still evaluating (a require cycle: Node answers its partial exports, which the static export table does not model)`);
|
|
4108
|
+
}
|
|
4015
4109
|
if (canonicalBuiltinModule(spec) === "punycode")
|
|
4016
4110
|
return this.punycodeRequireWarning(node);
|
|
4017
4111
|
// Project requires resolve within the program; another bare require can
|
|
@@ -5547,6 +5641,23 @@ export class Lowerer {
|
|
|
5547
5641
|
});
|
|
5548
5642
|
return keys;
|
|
5549
5643
|
};
|
|
5644
|
+
// `t[i]!` on a typed array, stored into an array, keeps an invalid
|
|
5645
|
+
// index's undefined (assertedReadObservesUndefined): `!` performs no
|
|
5646
|
+
// runtime check. A read whose consumers treat undefined like NaN stores
|
|
5647
|
+
// NaN instead.
|
|
5648
|
+
const assertedReadMayBeUndefined = (node) => {
|
|
5649
|
+
let e = node;
|
|
5650
|
+
while (ts.isParenthesizedExpression(e))
|
|
5651
|
+
e = e.expression;
|
|
5652
|
+
if (!ts.isNonNullExpression(e))
|
|
5653
|
+
return false;
|
|
5654
|
+
let read = e.expression;
|
|
5655
|
+
while (ts.isParenthesizedExpression(read))
|
|
5656
|
+
read = read.expression;
|
|
5657
|
+
return (ts.isElementAccessExpression(read) &&
|
|
5658
|
+
this.mapTypeOf(this.typeOf(read.expression))?.kind === "bytes" &&
|
|
5659
|
+
!nanCoded.isNumericRead(read));
|
|
5660
|
+
};
|
|
5550
5661
|
const elementStates = new ArrayElementStates({
|
|
5551
5662
|
elementAdmitsUndefined: (key) => {
|
|
5552
5663
|
siteDependencies?.read(key);
|
|
@@ -5557,9 +5668,16 @@ export class Lowerer {
|
|
|
5557
5668
|
arrayKeys: arrayKeysOf,
|
|
5558
5669
|
mayBeUndefined: (node) => {
|
|
5559
5670
|
if (explicitlyNonNull(node))
|
|
5560
|
-
return
|
|
5671
|
+
return assertedReadMayBeUndefined(node);
|
|
5561
5672
|
if (mayBeOptional(node))
|
|
5562
5673
|
return true;
|
|
5674
|
+
// A value the checker types as possibly undefined: `(T | undefined)[]`
|
|
5675
|
+
// stores T elements (the type mapper), so its undefined values are
|
|
5676
|
+
// facts of T's arrays.
|
|
5677
|
+
const checked = typeOrNull(node);
|
|
5678
|
+
if (checked !== null &&
|
|
5679
|
+
(checked.isUnionType() ? ts.constituentTypes(checked) : [checked]).some((part) => (part.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Void)) !== 0))
|
|
5680
|
+
return true;
|
|
5563
5681
|
// `undefined as unknown as T` keeps the undefined value.
|
|
5564
5682
|
for (let inner = node; ts.isParenthesizedExpression(inner) ||
|
|
5565
5683
|
ts.isAsExpression(inner) ||
|
|
@@ -5576,7 +5694,37 @@ export class Lowerer {
|
|
|
5576
5694
|
const symbol = symbolOf(e);
|
|
5577
5695
|
return symbol !== null && iterationSymbols.has(symbol) && !provenPresent(e, symbol);
|
|
5578
5696
|
},
|
|
5579
|
-
|
|
5697
|
+
iterationMayYieldUndefined: (node) => {
|
|
5698
|
+
const type = typeOrNull(node);
|
|
5699
|
+
if (type === null || this.checker.isArrayType(type))
|
|
5700
|
+
return false;
|
|
5701
|
+
// A tuple yields its elements, in order.
|
|
5702
|
+
if (this.checker.isTupleType(type))
|
|
5703
|
+
return panicSafe(() => this.checker
|
|
5704
|
+
.getTypeArguments(type)
|
|
5705
|
+
.some((element) => (element.isUnionType() ? ts.constituentTypes(element) : [element]).some((part) => (part.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Void)) !== 0)), true);
|
|
5706
|
+
// The first type argument of Set<T>, Map and Set iterators,
|
|
5707
|
+
// generators and iterables is the value they yield.
|
|
5708
|
+
const element = (type.flags & ts.TypeFlags.Object) !== 0
|
|
5709
|
+
? panicSafe(() => this.checker.getTypeArguments(type)[0], undefined)
|
|
5710
|
+
: undefined;
|
|
5711
|
+
if (element === undefined)
|
|
5712
|
+
return false;
|
|
5713
|
+
return (element.isUnionType() ? ts.constituentTypes(element) : [element]).some((part) => (part.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Void)) !== 0);
|
|
5714
|
+
},
|
|
5715
|
+
callbackReturnsUndefined: (node) => {
|
|
5716
|
+
if (callbackReturnsOptional(node))
|
|
5717
|
+
return true;
|
|
5718
|
+
// A callback the checker types as possibly returning undefined
|
|
5719
|
+
// (`(m) => map.get(m)`): its results are present undefined
|
|
5720
|
+
// elements of a `(T | undefined)[]`, which stores T elements.
|
|
5721
|
+
const type = typeOrNull(node);
|
|
5722
|
+
return (type !== null &&
|
|
5723
|
+
this.checker.getCallSignatures(type).some((signature) => {
|
|
5724
|
+
const result = this.checker.getReturnTypeOfSignature(signature);
|
|
5725
|
+
return (result.isUnionType() ? ts.constituentTypes(result) : [result]).some((part) => (part.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Void)) !== 0);
|
|
5726
|
+
}));
|
|
5727
|
+
},
|
|
5580
5728
|
isGlobal: (node, name) => this.isStdlibGlobal(node, name),
|
|
5581
5729
|
isString: (node) => {
|
|
5582
5730
|
const type = typeOrNull(node);
|
|
@@ -5604,6 +5752,15 @@ export class Lowerer {
|
|
|
5604
5752
|
const rest = sig.params.find((shape) => shape.mode === "rest");
|
|
5605
5753
|
return rest?.type.kind === "array" ? [typeKey(rest.type.elem)] : [];
|
|
5606
5754
|
},
|
|
5755
|
+
restStart: (call) => {
|
|
5756
|
+
const callee = peel(call.expression);
|
|
5757
|
+
if (!ts.isIdentifier(callee) && !ts.isPropertyAccessExpression(callee))
|
|
5758
|
+
return null;
|
|
5759
|
+
const symbol = callableSymbolOf(callee);
|
|
5760
|
+
const sig = symbol ? signatureBySymbol.get(symbol) : undefined;
|
|
5761
|
+
const at = sig ? sig.params.findIndex((shape) => shape.mode === "rest") : -1;
|
|
5762
|
+
return at >= 0 ? at : null;
|
|
5763
|
+
},
|
|
5607
5764
|
markIterationBinding: (node, known) => {
|
|
5608
5765
|
const symbol = symbolOf(node);
|
|
5609
5766
|
if (!symbol)
|
|
@@ -5640,6 +5797,7 @@ export class Lowerer {
|
|
|
5640
5797
|
if (cached !== undefined)
|
|
5641
5798
|
return cached;
|
|
5642
5799
|
const nodes = [];
|
|
5800
|
+
const values = [];
|
|
5643
5801
|
ts.walkPreorder(sf, (node) => {
|
|
5644
5802
|
if (ts.isVariableDeclaration(node) ||
|
|
5645
5803
|
(ts.isParameter(node) && ts.isObjectBindingPattern(node.name)) ||
|
|
@@ -5653,7 +5811,19 @@ export class Lowerer {
|
|
|
5653
5811
|
ts.isPrefixUnaryExpression(node) ||
|
|
5654
5812
|
ts.isPostfixUnaryExpression(node))
|
|
5655
5813
|
nodes.push(node);
|
|
5814
|
+
// The values these sites store, whose checker types mayBeUndefined
|
|
5815
|
+
// reads: batched here, since dead bodies are scanned too.
|
|
5816
|
+
if (ts.isArrayLiteralExpression(node))
|
|
5817
|
+
for (const element of node.elements.nodes)
|
|
5818
|
+
values.push(ts.isSpreadElement(element) ? element.expression : element);
|
|
5819
|
+
else if (ts.isCallExpression(node) || ts.isNewExpression(node))
|
|
5820
|
+
for (const arg of node.arguments?.nodes ?? [])
|
|
5821
|
+
values.push(ts.isSpreadElement(arg) ? arg.expression : arg);
|
|
5822
|
+
else if (ts.isBinaryExpression(node) &&
|
|
5823
|
+
node.operatorToken.kind === ts.SyntaxKind.EqualsToken)
|
|
5824
|
+
values.push(node.right);
|
|
5656
5825
|
});
|
|
5826
|
+
this.checker.prefetchCollectionTypes(values);
|
|
5657
5827
|
scanSites.set(sf, nodes);
|
|
5658
5828
|
return nodes;
|
|
5659
5829
|
};
|
|
@@ -6830,9 +7000,12 @@ export class Lowerer {
|
|
|
6830
7000
|
finalizeClassMethodValues(this, functions);
|
|
6831
7001
|
finalizePrivateBrands(this, functions);
|
|
6832
7002
|
trackClassFieldCreation(this, functions);
|
|
7003
|
+
boxClassInstancesExactly(this, functions);
|
|
7004
|
+
addUntypedIntegrityWords(this);
|
|
6833
7005
|
guardClassAttributeWrites(this, functions);
|
|
6834
7006
|
guardFrozenWrites(this, functions);
|
|
6835
7007
|
applyHandleProperties(this, functions);
|
|
7008
|
+
installBufferValue(functions);
|
|
6836
7009
|
// Globals typed by a class that never REGISTERED (a JS class whose
|
|
6837
7010
|
// collection fenced — Symbol-keyed fields, an unsupported base): the
|
|
6838
7011
|
// declaration statement and every use compiled to runtime fences, but
|
|
@@ -6921,6 +7094,7 @@ export class Lowerer {
|
|
|
6921
7094
|
// every producer and consumer agrees. Programs with no unregistered
|
|
6922
7095
|
// reference are untouched — byte-stability holds.
|
|
6923
7096
|
checkRequireBindingAccesses(this, functions);
|
|
7097
|
+
refuseX509DynValues(this, functions);
|
|
6924
7098
|
const module = this.diags.length > 0
|
|
6925
7099
|
? null
|
|
6926
7100
|
: {
|
|
@@ -6941,6 +7115,7 @@ export class Lowerer {
|
|
|
6941
7115
|
...(this.freezableArrays.size > 0
|
|
6942
7116
|
? { freezableArrays: [...this.freezableArrays].sort() }
|
|
6943
7117
|
: {}),
|
|
7118
|
+
...(this.untypedIntegrity ? { untypedIntegrity: true } : {}),
|
|
6944
7119
|
...(isNodeEsmFile(this.entry, this.program) ? {} : { commonJsEntry: true }),
|
|
6945
7120
|
...(this.ffiImports.length > 0 ? { ffiImports: [...this.ffiImports] } : {}),
|
|
6946
7121
|
};
|
|
@@ -6948,6 +7123,8 @@ export class Lowerer {
|
|
|
6948
7123
|
sanitizeUnregisteredClassTypes(module, (name) => this.classes.has(name));
|
|
6949
7124
|
if (module)
|
|
6950
7125
|
checkCycleBindingAccesses(this, module);
|
|
7126
|
+
if (module)
|
|
7127
|
+
bindCompletionCallbacks(module);
|
|
6951
7128
|
// Execution tiers from the final bodies (ir/tiers.ts). Assigned with or
|
|
6952
7129
|
// without a module: coverage reports the dynamic tier of programs that
|
|
6953
7130
|
// still have blockers.
|
|
@@ -7123,9 +7300,28 @@ export class Lowerer {
|
|
|
7123
7300
|
// retained-function keys and are deterministic by construction
|
|
7124
7301
|
// (qualified declaration names).
|
|
7125
7302
|
const units = new Map();
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
const
|
|
7303
|
+
// Roots are collected with plain pushes: spread arguments into a rest
|
|
7304
|
+
// parameter pass the nodes as dynamic values.
|
|
7305
|
+
const addRoot = (roots, root) => {
|
|
7306
|
+
if (root !== undefined && root !== null)
|
|
7307
|
+
roots.push(root);
|
|
7308
|
+
};
|
|
7309
|
+
const functionRoots = (decl) => {
|
|
7310
|
+
const roots = [];
|
|
7311
|
+
for (const param of decl.parameters.nodes)
|
|
7312
|
+
addRoot(roots, param.initializer);
|
|
7313
|
+
addRoot(roots, decl.body);
|
|
7314
|
+
return roots;
|
|
7315
|
+
};
|
|
7316
|
+
const classCtorRoots = (info) => {
|
|
7317
|
+
const roots = [];
|
|
7318
|
+
for (const param of info.ctor?.parameters?.nodes ?? [])
|
|
7319
|
+
addRoot(roots, param.initializer);
|
|
7320
|
+
addRoot(roots, info.ctor?.body);
|
|
7321
|
+
for (const field of info.fieldOrder)
|
|
7322
|
+
addRoot(roots, field.initializer);
|
|
7323
|
+
return roots;
|
|
7324
|
+
};
|
|
7129
7325
|
const classMemberRoots = (info) => {
|
|
7130
7326
|
const roots = classCtorRoots(info);
|
|
7131
7327
|
for (const { member } of this.classMethodMembers(info))
|
|
@@ -7309,8 +7505,9 @@ export class Lowerer {
|
|
|
7309
7505
|
register(`%${cName}.set:${prop}`, [], () => this.throwingSetterFn(info, prop));
|
|
7310
7506
|
}
|
|
7311
7507
|
};
|
|
7508
|
+
const onEdge = this.onEdge;
|
|
7312
7509
|
for (const name of collectionEdges)
|
|
7313
|
-
|
|
7510
|
+
onEdge(name);
|
|
7314
7511
|
// Generic instances queued by the bodies above lower here (an instance
|
|
7315
7512
|
// body fires edges of its own and can queue further instances of
|
|
7316
7513
|
// either kind — function instances and class instantiations drain to
|
|
@@ -7414,8 +7611,9 @@ export class Lowerer {
|
|
|
7414
7611
|
// profile-mapped exports are called from outside the graph, so they
|
|
7415
7612
|
// seed the worklist beside the init bodies. Unknown names are inert
|
|
7416
7613
|
// (the export-map resolution reports them as SC4002 later).
|
|
7614
|
+
const rootEdge = this.onEdge;
|
|
7417
7615
|
for (const root of extraRoots ?? [])
|
|
7418
|
-
|
|
7616
|
+
rootEdge?.(root);
|
|
7419
7617
|
const shuffle = lowerShuffle();
|
|
7420
7618
|
const drainUnits = () => {
|
|
7421
7619
|
while (queue.length > 0) {
|
|
@@ -7531,8 +7729,10 @@ export class Lowerer {
|
|
|
7531
7729
|
/** Reachability hook (see emitReachable): fires when lowering resolves a
|
|
7532
7730
|
* reference to a lowerable body. */
|
|
7533
7731
|
noteEdge(name) {
|
|
7534
|
-
|
|
7535
|
-
|
|
7732
|
+
// Called as a plain function: the instance is not its receiver.
|
|
7733
|
+
const onEdge = this.onEdge;
|
|
7734
|
+
if (onEdge)
|
|
7735
|
+
onEdge(name);
|
|
7536
7736
|
}
|
|
7537
7737
|
/** A subclass constructor's super() edge: the base constructor runs, but
|
|
7538
7738
|
* no instance of exactly the base class is created. */
|
|
@@ -7685,8 +7885,11 @@ export class Lowerer {
|
|
|
7685
7885
|
}
|
|
7686
7886
|
this.diags.push(d);
|
|
7687
7887
|
}
|
|
7688
|
-
unsupported(code, node, featureOverride, hintOverride) {
|
|
7689
|
-
|
|
7888
|
+
unsupported(code, node, featureOverride, hintOverride, reason) {
|
|
7889
|
+
const diag = unsupportedDiag(code, locOf(node), featureOverride, hintOverride);
|
|
7890
|
+
if (reason !== undefined)
|
|
7891
|
+
diag.reason = reason;
|
|
7892
|
+
this.pushDiag(diag);
|
|
7690
7893
|
throw new PoisonError();
|
|
7691
7894
|
}
|
|
7692
7895
|
externalHostFence(specifier, node, valueUse = true) {
|
|
@@ -7865,8 +8068,11 @@ export class Lowerer {
|
|
|
7865
8068
|
* nothing lowers. Poisons the statement like every other rejection.
|
|
7866
8069
|
* `sym`, when given, picks the wording: surface declared only by the
|
|
7867
8070
|
* adopted @types/node is blamed at @types/node. */
|
|
7868
|
-
noLowering(surface, node, hint, sym) {
|
|
7869
|
-
|
|
8071
|
+
noLowering(surface, node, hint, sym, reason) {
|
|
8072
|
+
const diag = noLoweringDiag(surface, locOf(node), hint, this.nodeTypesOnlySymbol(sym));
|
|
8073
|
+
if (reason !== undefined)
|
|
8074
|
+
diag.reason = reason;
|
|
8075
|
+
this.pushDiag(diag);
|
|
7870
8076
|
throw new PoisonError();
|
|
7871
8077
|
}
|
|
7872
8078
|
stdlibMemberFence(access) {
|
|
@@ -7923,8 +8129,23 @@ export class Lowerer {
|
|
|
7923
8129
|
return symbol !== undefined && this.anySymbols.has(symbol);
|
|
7924
8130
|
}
|
|
7925
8131
|
typeOf(node) {
|
|
8132
|
+
if (ts.isIdentifier(node)) {
|
|
8133
|
+
const inferred = inferredCollectionType(this, node);
|
|
8134
|
+
if (inferred)
|
|
8135
|
+
return inferred;
|
|
8136
|
+
}
|
|
7926
8137
|
if (this.anySymbols.size > 0 && this.readsAnySymbol(node))
|
|
7927
8138
|
return this.checker.getAnyType();
|
|
8139
|
+
// A checked-dynamic argument that another overload could take at run
|
|
8140
|
+
// time leaves the resolved overload's return a guess, and JS bindings
|
|
8141
|
+
// initialized with that result hold whatever it was.
|
|
8142
|
+
if ((ts.isCallExpression(node) || ts.isNewExpression(node)) &&
|
|
8143
|
+
dynamicOverloadChoice(this, node))
|
|
8144
|
+
return this.checker.getAnyType();
|
|
8145
|
+
if (ts.isIdentifier(node) &&
|
|
8146
|
+
isJsSourceFile(ts.getSourceFileOfNode(node)) &&
|
|
8147
|
+
guessedOverloadIdentifier(this, node))
|
|
8148
|
+
return this.checker.getAnyType();
|
|
7928
8149
|
if (ts.isPropertyAccessExpression(node) && isJsSourceFile(ts.getSourceFileOfNode(node))) {
|
|
7929
8150
|
const receiver = node.expression.kind === ts.SyntaxKind.ThisKeyword && this.fnStack.length > 0
|
|
7930
8151
|
? this.resolveThis()?.type
|
|
@@ -8562,7 +8783,8 @@ export class Lowerer {
|
|
|
8562
8783
|
// so its module binding is too (`ReleaseEmitter = EventEmitter` over
|
|
8563
8784
|
// `const EventEmitter = require("events")`).
|
|
8564
8785
|
if (expr.type.kind === "moduleNs" && isJsSourceFileName(expr.loc.file)) {
|
|
8565
|
-
const
|
|
8786
|
+
const ns = expr;
|
|
8787
|
+
const object = moduleNamespaceObject(this, ns) ?? moduleNamespaceValue(this, ns);
|
|
8566
8788
|
if (object)
|
|
8567
8789
|
return object;
|
|
8568
8790
|
}
|
|
@@ -8605,6 +8827,7 @@ export class Lowerer {
|
|
|
8605
8827
|
// A builtin function's adapter boxes under the builtin's name, the
|
|
8606
8828
|
// name Node's function carries (`[Function: randomUUID]`).
|
|
8607
8829
|
const builtinName = expr.kind === "closure" ? this.builtinCallableValueNames.get(expr.fnName) : undefined;
|
|
8830
|
+
const builtinLength = expr.kind === "closure" ? this.builtinCallableValueLengths.get(expr.fnName) : undefined;
|
|
8608
8831
|
return {
|
|
8609
8832
|
kind: "dynFrom",
|
|
8610
8833
|
value: expr,
|
|
@@ -8612,6 +8835,7 @@ export class Lowerer {
|
|
|
8612
8835
|
loc: expr.loc,
|
|
8613
8836
|
...(liveRef ? { liveRef: true } : {}),
|
|
8614
8837
|
...(builtinName !== undefined ? { fnName: builtinName } : {}),
|
|
8838
|
+
...(builtinLength !== undefined ? { fnLength: builtinLength } : {}),
|
|
8615
8839
|
};
|
|
8616
8840
|
}
|
|
8617
8841
|
return expr;
|
|
@@ -9089,8 +9313,8 @@ export class Lowerer {
|
|
|
9089
9313
|
unionRetagHelper(fromId, toId, loc, trappable) {
|
|
9090
9314
|
return unionRetagHelper(this, fromId, toId, loc, trappable);
|
|
9091
9315
|
}
|
|
9092
|
-
narrowedArmHelper(fromId, target, loc) {
|
|
9093
|
-
return narrowedArmHelper(this, fromId, target, loc);
|
|
9316
|
+
narrowedArmHelper(fromId, target, loc, message) {
|
|
9317
|
+
return narrowedArmHelper(this, fromId, target, loc, message);
|
|
9094
9318
|
}
|
|
9095
9319
|
checkedNarrowCall(helper, value, type, loc) {
|
|
9096
9320
|
return checkedNarrowCall(this, helper, value, type, loc);
|
|
@@ -10365,10 +10589,13 @@ export class Lowerer {
|
|
|
10365
10589
|
}
|
|
10366
10590
|
/** Method-like members with their collected method-map names. Body
|
|
10367
10591
|
* lowering omits abstract declarations; ABI analysis must include them
|
|
10368
|
-
* because an abstract-typed call selects the same virtual slot.
|
|
10369
|
-
|
|
10592
|
+
* because an abstract-typed call selects the same virtual slot. An array,
|
|
10593
|
+
* not a generator: a generator's yielded values are dynamic values, which
|
|
10594
|
+
* would make every syntax node one. */
|
|
10595
|
+
classMethodMembers(info, includeAbstract = false) {
|
|
10596
|
+
const members = [];
|
|
10370
10597
|
if (!info.decl)
|
|
10371
|
-
return; // builtin error classes: runtime-provided bodies
|
|
10598
|
+
return members; // builtin error classes: runtime-provided bodies
|
|
10372
10599
|
for (const member of info.decl.members.nodes) {
|
|
10373
10600
|
const fnLike = ts.isMethodDeclaration(member) || ts.isGetAccessor(member) || ts.isSetAccessor(member)
|
|
10374
10601
|
? member
|
|
@@ -10395,8 +10622,9 @@ export class Lowerer {
|
|
|
10395
10622
|
const signature = info.methods.get(mName);
|
|
10396
10623
|
if (!signature || (!fnLike.body && !(includeAbstract && signature.abstract)))
|
|
10397
10624
|
continue;
|
|
10398
|
-
|
|
10625
|
+
members.push({ mName, member: fnLike });
|
|
10399
10626
|
}
|
|
10627
|
+
return members;
|
|
10400
10628
|
}
|
|
10401
10629
|
lowerClassCtor(info) {
|
|
10402
10630
|
return lowerClassCtor(this, info);
|
|
@@ -11192,11 +11420,28 @@ export class Lowerer {
|
|
|
11192
11420
|
}
|
|
11193
11421
|
/* ── expressions ──────────────────────────────────────────────────── */
|
|
11194
11422
|
lowerExpr(expr) {
|
|
11423
|
+
if (this.speculatedClosures.size > 0) {
|
|
11424
|
+
const speculated = this.speculatedClosure(expr);
|
|
11425
|
+
if (speculated !== null) {
|
|
11426
|
+
this.speculatedClosures.delete(expr);
|
|
11427
|
+
return speculated;
|
|
11428
|
+
}
|
|
11429
|
+
}
|
|
11195
11430
|
const streamValue = this.valueStreamReceivers.get(expr);
|
|
11196
11431
|
if (streamValue)
|
|
11197
11432
|
return valueStreamOf(varRef(streamValue.localId, streamValue.type, locOf(expr)));
|
|
11198
11433
|
return this.stagedArgument(expr) ?? lowerExpr(this, expr);
|
|
11199
11434
|
}
|
|
11435
|
+
/** The value storedImplicitArgumentType lowered for `expr` in the active
|
|
11436
|
+
* function and type bindings (speculatedClosures), or null. */
|
|
11437
|
+
speculatedClosure(expr) {
|
|
11438
|
+
const entry = this.speculatedClosures.get(expr);
|
|
11439
|
+
return entry !== undefined &&
|
|
11440
|
+
entry.ctx === this.ctx &&
|
|
11441
|
+
entry.bindings === this.typeParamBindings
|
|
11442
|
+
? entry.value
|
|
11443
|
+
: null;
|
|
11444
|
+
}
|
|
11200
11445
|
/** The saved value of a staged fs argument (stagedArguments, keyed
|
|
11201
11446
|
* without type-only wrappers), or null for every other expression. */
|
|
11202
11447
|
stagedArgument(node) {
|
|
@@ -11286,6 +11531,10 @@ export class Lowerer {
|
|
|
11286
11531
|
expr.expression.name.text === "cache") {
|
|
11287
11532
|
return lowerElementAccess(this, expr);
|
|
11288
11533
|
}
|
|
11534
|
+
// `a?.[i]`: the optional chain tests the receiver's undefined arm and
|
|
11535
|
+
// lowers this access again inside its guard.
|
|
11536
|
+
if (expr.questionDotToken && !this.chainHandled.has(expr))
|
|
11537
|
+
return lowerElementAccess(this, expr);
|
|
11289
11538
|
const receiver = this.runtimeOptionalIdentifierValue(expr.expression);
|
|
11290
11539
|
const receiverValue = receiver && (receiver.present.kind === "array" || receiver.present.kind === "record")
|
|
11291
11540
|
? (() => {
|
|
@@ -11523,6 +11772,7 @@ export class Lowerer {
|
|
|
11523
11772
|
lowerStaticBlobCall(this, expr) ??
|
|
11524
11773
|
lowerWebCryptoCall(this, expr) ??
|
|
11525
11774
|
lowerKeyObjectCall(this, expr) ??
|
|
11775
|
+
lowerX509Call(this, expr) ??
|
|
11526
11776
|
lowerEcdhCall(this, expr) ??
|
|
11527
11777
|
lowerDiffieHellmanCall(this, expr) ??
|
|
11528
11778
|
lowerNetAddressCall(this, expr) ??
|
|
@@ -11587,14 +11837,20 @@ export class Lowerer {
|
|
|
11587
11837
|
accessorCall(className, member, obj, extraArgs, ret, loc) {
|
|
11588
11838
|
return accessorCall(this, className, member, obj, extraArgs, ret, loc);
|
|
11589
11839
|
}
|
|
11590
|
-
classIteratorOf(t) {
|
|
11591
|
-
return classIteratorOf(this, t);
|
|
11840
|
+
classIteratorOf(t, options) {
|
|
11841
|
+
return classIteratorOf(this, t, options);
|
|
11842
|
+
}
|
|
11843
|
+
classIteratorReturnCall(cit, it, loc) {
|
|
11844
|
+
return classIteratorMethodCall(this, cit, "return", it, loc);
|
|
11592
11845
|
}
|
|
11593
11846
|
classIteratorOpenCall(cit, recv, loc) {
|
|
11594
11847
|
return classIteratorOpenCall(this, cit, recv, loc);
|
|
11595
11848
|
}
|
|
11596
|
-
|
|
11597
|
-
return
|
|
11849
|
+
classIteratorNextRead(cit, itRef, loc) {
|
|
11850
|
+
return classIteratorNextRead(this, cit, itRef, loc);
|
|
11851
|
+
}
|
|
11852
|
+
classIteratorNextCall(cit, itRef, next, loc) {
|
|
11853
|
+
return classIteratorNextCall(this, cit, itRef, next, loc);
|
|
11598
11854
|
}
|
|
11599
11855
|
classIteratorDrainCall(src, loc, elemT) {
|
|
11600
11856
|
return classIteratorDrainCall(this, src, loc, elemT);
|
|
@@ -11853,7 +12109,7 @@ export class Lowerer {
|
|
|
11853
12109
|
}
|
|
11854
12110
|
if (ts.isPropertyAccessExpression(expr) &&
|
|
11855
12111
|
!expr.questionDotToken &&
|
|
11856
|
-
ts.isIdentifier(expr.expression)) {
|
|
12112
|
+
(ts.isIdentifier(expr.expression) || requireSpecOf(expr.expression) !== null)) {
|
|
11857
12113
|
const outer = this.builtinNamespaceModuleOf(expr.expression);
|
|
11858
12114
|
if (outer === null)
|
|
11859
12115
|
return null;
|
|
@@ -12056,6 +12312,15 @@ export class Lowerer {
|
|
|
12056
12312
|
if (builtinModuleFnOf(this, bi.module, bi.member)) {
|
|
12057
12313
|
this.unsupported("SC1090", expr, `library functions as values (call '${ts.getTextOfNode(expr)}' directly)`);
|
|
12058
12314
|
}
|
|
12315
|
+
// A member that is a supported module in its own right (`fs.promises`
|
|
12316
|
+
// is node:fs/promises, as in Node) reads as that module's namespace.
|
|
12317
|
+
{
|
|
12318
|
+
const sub = this.builtinNamespaceModuleOf(expr);
|
|
12319
|
+
if (sub !== null) {
|
|
12320
|
+
const type = { kind: "moduleNs", moduleId: `builtin:${sub}` };
|
|
12321
|
+
return { kind: "moduleNsRef", moduleId: type.moduleId, type, loc };
|
|
12322
|
+
}
|
|
12323
|
+
}
|
|
12059
12324
|
this.noLowering(`${bi.module}.${bi.member}`, expr, builtinFenceHintOf(bi.module, bi.member), this.checker.getSymbolAtLocation(expr.name));
|
|
12060
12325
|
}
|
|
12061
12326
|
/** Materialize one explicitly value-callable table entry as an interned
|
|
@@ -12064,6 +12329,9 @@ export class Lowerer {
|
|
|
12064
12329
|
* deliberately narrower than table membership because many table rows
|
|
12065
12330
|
* are only dispatch sentinels for call-site-specific lowering. */
|
|
12066
12331
|
lowerBuiltinCallableValue(bi, loc) {
|
|
12332
|
+
const assertion = assertFunctionValue(bi, loc);
|
|
12333
|
+
if (assertion)
|
|
12334
|
+
return assertion;
|
|
12067
12335
|
if (bi.module === "util" && bi.member === "types")
|
|
12068
12336
|
return utilTypesModuleValue(this, loc);
|
|
12069
12337
|
if (bi.module === "util/types" && builtinModuleFnOf(this, bi.module, bi.member))
|
|
@@ -12080,6 +12348,9 @@ export class Lowerer {
|
|
|
12080
12348
|
loc,
|
|
12081
12349
|
};
|
|
12082
12350
|
}
|
|
12351
|
+
// The buffer module's Buffer is the global constructor's value.
|
|
12352
|
+
if (bi.module === "buffer" && bi.member === "Buffer")
|
|
12353
|
+
return { kind: "libCall", fn: "buffer.constructor", args: [], type: DYN, loc };
|
|
12083
12354
|
if (bi.module === "fs" && (bi.member === "realpathSync" || bi.member === "realpathSync.native"))
|
|
12084
12355
|
return fsRealpathValue(this, bi.member === "realpathSync.native", loc);
|
|
12085
12356
|
const fn = builtinModuleFnOf(this, bi.module, bi.member);
|
|
@@ -12109,6 +12380,8 @@ export class Lowerer {
|
|
|
12109
12380
|
fnName = keyedHelperName(this, `%builtin.value.${fn.valueFn ?? fn.fn}`, key);
|
|
12110
12381
|
this.builtinCallableValueFns.set(key, fnName);
|
|
12111
12382
|
this.builtinCallableValueNames.set(fnName, display.slice(display.lastIndexOf(".") + 1));
|
|
12383
|
+
if (fn.valueLength !== undefined)
|
|
12384
|
+
this.builtinCallableValueLengths.set(fnName, fn.valueLength);
|
|
12112
12385
|
const params = funcType.params.map((type, index) => ({
|
|
12113
12386
|
localId: `arg.${index}`,
|
|
12114
12387
|
name: `arg${index}`,
|