@scriptc/compiler 0.4.4 → 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 +198 -44
- 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 +238 -20
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +11 -4
- 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 +70 -1
- 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 +65 -8
- package/dist/backend/llvm/dyn.js +375 -40
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +28 -8
- 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 +58 -23
- 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 +134 -13
- package/dist/backend/llvm/emitter.js +514 -87
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +6 -4
- package/dist/backend/llvm/expr-bytes.js +31 -8
- 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 +87 -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 +107 -9
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +95 -22
- 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 +7 -0
- package/dist/backend/llvm/integer-values.js +42 -2
- 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 +128 -42
- 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 +11 -0
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +43 -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/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/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 +104 -51
- 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-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/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/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.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-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/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 +78 -11
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +22 -1
- package/dist/cli/usage.js +33 -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 +7 -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 +52 -1
- 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 +3 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -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/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/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/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 +159 -8
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +26 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.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-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.js +144 -1
- 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 -1
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js +1 -1
- 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 +13 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +174 -9
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +43 -8
- 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-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/containers/array-callbacks.js +51 -15
- 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 +102 -9
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +85 -5
- 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/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 +9 -6
- package/dist/frontend/lowering/date-values.js +63 -16
- package/dist/frontend/lowering/date-values.js.map +1 -1
- 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 +119 -26
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +38 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +50 -6
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +35 -3
- 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 +65 -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 +6 -1
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +20 -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 +15 -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/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/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 +283 -26
- 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 +97 -7
- 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 +647 -176
- 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 +52 -5
- 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 +4 -3
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +264 -46
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +28 -17
- 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 +294 -46
- 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 +52 -10
- package/dist/frontend/lowering/lowerer.js +249 -37
- 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/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 +1576 -1539
- 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 +102 -11
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +2 -0
- package/dist/frontend/program-analysis.js +3 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +15 -0
- package/dist/frontend/program.js +227 -64
- 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.js +3 -1
- package/dist/frontend/ts7/semantic-model.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 +160 -28
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +44 -3
- package/dist/index.js +27 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +29 -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 -4950
- 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 +284 -5
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +5 -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 +93 -7
- 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 +50 -8
- package/dist/ir/ir.js +38 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +25 -5
- package/dist/ir/js-ic.js +93 -13
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +153 -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 +69 -12
- 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 +37 -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 +4 -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.js +38 -16
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +51 -1
- 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 +20 -35
|
@@ -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";
|
|
@@ -35,6 +35,7 @@ import { discoverWasmModules } from "../../wasm/discover.js";
|
|
|
35
35
|
import { encodeBase64 } from "../../wasm/base64.js";
|
|
36
36
|
import { resolveRequireRuntime } from "../runtime-resolve.js";
|
|
37
37
|
import { lowerKeyObjectCall } from "./builtins/key-object.js";
|
|
38
|
+
import { lowerX509Call, refuseX509DynValues } from "./builtins/x509.js";
|
|
38
39
|
import { isEcdhType, lowerEcdhCall } from "./builtins/ecdh.js";
|
|
39
40
|
import { isDiffieHellmanType, lowerDiffieHellmanCall } from "./builtins/dh.js";
|
|
40
41
|
import { fenceWebCryptoMember, lowerWebCryptoCall } from "./builtins/webcrypto.js";
|
|
@@ -71,7 +72,8 @@ import { InternalCompilerError } from "../../errors.js";
|
|
|
71
72
|
import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "./optional-arguments.js";
|
|
72
73
|
import {} from "./class-protocol-dispatch.js";
|
|
73
74
|
import { ClassDynamicDispatch, boxClassInstancesExactly, trackClassFieldCreation, } from "./class-dynamic-dispatch.js";
|
|
74
|
-
import { guardClassAttributeWrites } from "./class-attributes.js";
|
|
75
|
+
import { addUntypedIntegrityWords, guardClassAttributeWrites } from "./class-attributes.js";
|
|
76
|
+
import { inferredCollectionType } from "./js-collection-types.js";
|
|
75
77
|
import { guardFrozenWrites, markSloppyRecordWrites } from "./frozen-records.js";
|
|
76
78
|
import { applyHandleProperties } from "./handle-properties.js";
|
|
77
79
|
import { installBufferValue } from "./containers/bytes.js";
|
|
@@ -112,7 +114,7 @@ import { discriminantOwners, literalUnionArm } from "../union-discriminants.js";
|
|
|
112
114
|
import { unsupportedAnyOperationDiag, blockedBindingUseDiag, checkerPanicDiag, componentTypeDiag, isCheckerPanic, genericSignatureTypeDiag, indexSignatureTypeDiag, intersectionTypeDiag, noLoweringDiag, overloadedSignatureTypeDiag, recordShapeMismatchDiag, unsupportedNativeApiDiag, unsupportedPackageValueDiag, unionMismatchDiag, UNSUPPORTED, unsupportedDiag, unsupportedTypeDiag, } from "../../diagnostics/diagnostic.js";
|
|
113
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";
|
|
114
116
|
import { provenanceActive } from "../provenance-registry.js";
|
|
115
|
-
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";
|
|
116
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";
|
|
117
119
|
import { builtinConstLit, builtinModuleConstOf, builtinModulesArrayLit, builtinFenceHintOf, builtinModuleFnOf, stdlibMemberFence, isStdlibMember, isStdlibSymbol, isStdlibGlobal, stdlibGlobalNameOf, stdlibGlobalMember, nodeTypesOnlySymbol, } from "./surfaces.js";
|
|
118
120
|
import { builtinClassAliasOf, runtimeClassValueOfType, } from "./builtins/class-values.js";
|
|
@@ -122,7 +124,7 @@ import { cjsNamespaceModule, cjsWholeExportValueOf, inlineNamespaceRequireOf, in
|
|
|
122
124
|
import { tscInteropModuleOf } from "./cjs-tsc-interop.js";
|
|
123
125
|
import { usesCjsExportsIdentity } from "./cjs-exports-object.js";
|
|
124
126
|
import { registerBuiltinEventTargetClasses } from "./lower-event-target.js";
|
|
125
|
-
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";
|
|
126
128
|
import { mixinCallClassInfoOf, mixinIntersectionInstanceType, } from "./lower-mixins.js";
|
|
127
129
|
import { tryLowerExpression } from "./expressions/try-lower-expression.js";
|
|
128
130
|
import { funcTypeFromParamShapes, isThisParameter, paramShape, paramShapes, checkDefaultParamBodyType, requireExactArityValue, collectSignature, collectSignatureInner, lambdaSignature, } from "./call-signatures.js";
|
|
@@ -176,7 +178,7 @@ import { fenceFetchObjectAssignment, fenceFetchObjectBinding, fenceStaticAbortCo
|
|
|
176
178
|
import { lowerHttpHeadersElement, lowerNetModuleCall, lowerServerMethodCall, lowerServerProperty, lowerTlsRootCertificates, } from "./lower-server.js";
|
|
177
179
|
import { lowerDgramDnsModuleCall, lowerDgramMethodCall } from "./lower-dgram.js";
|
|
178
180
|
import { lowerNodeTestModuleCall, lowerTestDirectCall, lowerTestMethodCall, lowerTestCtxProperty, } from "./lower-test.js";
|
|
179
|
-
import { lowerAssertModuleCall, lowerAssertDirectCall } from "./lower-assert.js";
|
|
181
|
+
import { assertFunctionValue, lowerAssertModuleCall, lowerAssertDirectCall, } from "./lower-assert.js";
|
|
180
182
|
import { lowerUtilModuleCall } from "./lower-inspect.js";
|
|
181
183
|
import { lowerSystemErrorMapValue } from "./lower-system-errors.js";
|
|
182
184
|
import { lowerComptime, comptimeBakeable, rejectComptimeCaptures, comptimeValueToIr, } from "./lower-comptime.js";
|
|
@@ -1584,6 +1586,9 @@ export class Lowerer {
|
|
|
1584
1586
|
* Date's time value instead of a Date object (date-values.ts). */
|
|
1585
1587
|
timeValueDateDecisions = new Map();
|
|
1586
1588
|
timeValueDateLocals = new Set();
|
|
1589
|
+
/** Declarations of those locals that a setter call writes
|
|
1590
|
+
* (date-values.ts). */
|
|
1591
|
+
timeValueDateWrites = new Set();
|
|
1587
1592
|
/** Record bindings whose flow class reaches storage outside the class:
|
|
1588
1593
|
* they keep the declared layout, so an initializer from unchecked reads
|
|
1589
1594
|
* converts once instead of the binding adopting the widened variant. */
|
|
@@ -1592,6 +1597,9 @@ export class Lowerer {
|
|
|
1592
1597
|
* every name destructured from a present source optional. */
|
|
1593
1598
|
runtimeOptionalPatternTypes = new Map();
|
|
1594
1599
|
runtimeOptionalReduceTypes = new Map();
|
|
1600
|
+
/** Each function declaration's `arguments.length` count slot, or null
|
|
1601
|
+
* (argument-counts.ts argumentCountSlot). */
|
|
1602
|
+
argumentCountSlots = new Map();
|
|
1595
1603
|
/** Non-null assertions whose value is forwarded into a slot promoted to
|
|
1596
1604
|
* hold undefined. `x!` has no runtime effect, so these keep the stored
|
|
1597
1605
|
* undefined state instead of trapping before any dereference. */
|
|
@@ -2031,6 +2039,9 @@ export class Lowerer {
|
|
|
2031
2039
|
/** Parameters read as `any` in the error-path copy of an error-first
|
|
2032
2040
|
* callback. */
|
|
2033
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;
|
|
2034
2045
|
/** overload-choice's answers per call, binding and function. */
|
|
2035
2046
|
dynamicOverloadAnswers = new Map();
|
|
2036
2047
|
/** Error parameters of an error-first callback with a known value in
|
|
@@ -2178,6 +2189,9 @@ export class Lowerer {
|
|
|
2178
2189
|
builtinCallableValueFns = new Map();
|
|
2179
2190
|
/** Each builtin function-value adapter's Node name, for boxed values. */
|
|
2180
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();
|
|
2181
2195
|
/** Optional-chain lowering state. While a chain body lowers, the guarded
|
|
2182
2196
|
* receiver NODE reads as a chainRecv (typed by the narrowed arm) instead
|
|
2183
2197
|
* of re-lowering, its checker type reads non-nullish (typeOf), and the
|
|
@@ -2316,6 +2330,11 @@ export class Lowerer {
|
|
|
2316
2330
|
* (builtins/fs-paths.ts): each lowers to the hidden local that holds its
|
|
2317
2331
|
* value, which is null until the path's lowering has saved it. */
|
|
2318
2332
|
stagedArguments = new Map();
|
|
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();
|
|
2319
2338
|
/** What each fs path argument of a URL-path call lowers to (the plans
|
|
2320
2339
|
* of builtins/fs-paths.ts). */
|
|
2321
2340
|
fsPathPlans = new Map();
|
|
@@ -2442,6 +2461,9 @@ export class Lowerer {
|
|
|
2442
2461
|
recordFieldDeletes = new Set();
|
|
2443
2462
|
/** typeKeys of the array types the program may freeze (IrModule.freezableArrays). */
|
|
2444
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;
|
|
2445
2467
|
liftedFns = [];
|
|
2446
2468
|
/** The first lifted function of each name (liftedFnNamed), for the
|
|
2447
2469
|
* liftedFns indexed so far. liftedFns only grows. */
|
|
@@ -2844,9 +2866,7 @@ export class Lowerer {
|
|
|
2844
2866
|
* that comes back through a boundary cast keeps its identity. */
|
|
2845
2867
|
declBoundaryMemo = null;
|
|
2846
2868
|
get declBoundary() {
|
|
2847
|
-
this.declBoundaryMemo ??= this.program
|
|
2848
|
-
.getSourceFiles()
|
|
2849
|
-
.some((sf) => isDeclBoundaryFile(sf.fileName));
|
|
2869
|
+
this.declBoundaryMemo ??= this.program.getSourceFileNames().some(isDeclBoundaryFile);
|
|
2850
2870
|
return this.declBoundaryMemo;
|
|
2851
2871
|
}
|
|
2852
2872
|
/** Tracked classes' bag initializers over a typed `this`
|
|
@@ -2889,7 +2909,7 @@ export class Lowerer {
|
|
|
2889
2909
|
positionOf: (node) => this.positions.of(node),
|
|
2890
2910
|
shapes: this.shapes,
|
|
2891
2911
|
unions: this.unions,
|
|
2892
|
-
classNamer: this.classNamer,
|
|
2912
|
+
classNamer: (decl) => this.classNamer(decl),
|
|
2893
2913
|
resolveTypeParam: this.typeParamResolver,
|
|
2894
2914
|
resolveTypeParamTs: this.typeParamTsResolver,
|
|
2895
2915
|
isErasing: () => this.erasingDepth > 0,
|
|
@@ -2953,8 +2973,8 @@ export class Lowerer {
|
|
|
2953
2973
|
},
|
|
2954
2974
|
mixinIntersectionInstance: (widened) => mixinIntersectionInstanceType(this, widened),
|
|
2955
2975
|
classImplementedProtocol: (type) => this.classImplementedProtocol(type),
|
|
2956
|
-
isStdlibFile: this.isStdlibFile,
|
|
2957
|
-
isNpmFile: this.isNpmFile,
|
|
2976
|
+
isStdlibFile: (sf) => this.isStdlibFile(sf),
|
|
2977
|
+
isNpmFile: (sf) => this.isNpmFile(sf),
|
|
2958
2978
|
// The declaration-typed boundary's generated types (decl-projection.ts)
|
|
2959
2979
|
// describe data, like an explicitly mapped external type surface.
|
|
2960
2980
|
isExternalTypeFile: (sf) => this.externalTypeSpecifiersByFile.has(tsgoPath(resolve(sf.fileName))) ||
|
|
@@ -3018,7 +3038,8 @@ export class Lowerer {
|
|
|
3018
3038
|
/** Declared class fields may store a DYN value only when its static type
|
|
3019
3039
|
* is `unknown` or `object` (also with `null` or `undefined`, or an array
|
|
3020
3040
|
* of those), names checked protocol identity, is an owned runtime
|
|
3021
|
-
* 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
|
|
3022
3043
|
* a node:crypto ECDH, DiffieHellman or DiffieHellmanGroup), or is a
|
|
3023
3044
|
* WeakMap/WeakSet (native weak collections live in checked-dynamic
|
|
3024
3045
|
* storage, as locals of those types do); `any` fields stay refused. */
|
|
@@ -3086,6 +3107,35 @@ export class Lowerer {
|
|
|
3086
3107
|
}
|
|
3087
3108
|
return null;
|
|
3088
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
|
+
}
|
|
3089
3139
|
sourceFileOfModuleNamespace(type) {
|
|
3090
3140
|
if (type.kind !== "moduleNs" || !type.moduleId.startsWith("file:"))
|
|
3091
3141
|
return null;
|
|
@@ -5591,6 +5641,23 @@ export class Lowerer {
|
|
|
5591
5641
|
});
|
|
5592
5642
|
return keys;
|
|
5593
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
|
+
};
|
|
5594
5661
|
const elementStates = new ArrayElementStates({
|
|
5595
5662
|
elementAdmitsUndefined: (key) => {
|
|
5596
5663
|
siteDependencies?.read(key);
|
|
@@ -5601,9 +5668,16 @@ export class Lowerer {
|
|
|
5601
5668
|
arrayKeys: arrayKeysOf,
|
|
5602
5669
|
mayBeUndefined: (node) => {
|
|
5603
5670
|
if (explicitlyNonNull(node))
|
|
5604
|
-
return
|
|
5671
|
+
return assertedReadMayBeUndefined(node);
|
|
5605
5672
|
if (mayBeOptional(node))
|
|
5606
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;
|
|
5607
5681
|
// `undefined as unknown as T` keeps the undefined value.
|
|
5608
5682
|
for (let inner = node; ts.isParenthesizedExpression(inner) ||
|
|
5609
5683
|
ts.isAsExpression(inner) ||
|
|
@@ -5620,7 +5694,37 @@ export class Lowerer {
|
|
|
5620
5694
|
const symbol = symbolOf(e);
|
|
5621
5695
|
return symbol !== null && iterationSymbols.has(symbol) && !provenPresent(e, symbol);
|
|
5622
5696
|
},
|
|
5623
|
-
|
|
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
|
+
},
|
|
5624
5728
|
isGlobal: (node, name) => this.isStdlibGlobal(node, name),
|
|
5625
5729
|
isString: (node) => {
|
|
5626
5730
|
const type = typeOrNull(node);
|
|
@@ -5648,6 +5752,15 @@ export class Lowerer {
|
|
|
5648
5752
|
const rest = sig.params.find((shape) => shape.mode === "rest");
|
|
5649
5753
|
return rest?.type.kind === "array" ? [typeKey(rest.type.elem)] : [];
|
|
5650
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
|
+
},
|
|
5651
5764
|
markIterationBinding: (node, known) => {
|
|
5652
5765
|
const symbol = symbolOf(node);
|
|
5653
5766
|
if (!symbol)
|
|
@@ -5684,6 +5797,7 @@ export class Lowerer {
|
|
|
5684
5797
|
if (cached !== undefined)
|
|
5685
5798
|
return cached;
|
|
5686
5799
|
const nodes = [];
|
|
5800
|
+
const values = [];
|
|
5687
5801
|
ts.walkPreorder(sf, (node) => {
|
|
5688
5802
|
if (ts.isVariableDeclaration(node) ||
|
|
5689
5803
|
(ts.isParameter(node) && ts.isObjectBindingPattern(node.name)) ||
|
|
@@ -5697,7 +5811,19 @@ export class Lowerer {
|
|
|
5697
5811
|
ts.isPrefixUnaryExpression(node) ||
|
|
5698
5812
|
ts.isPostfixUnaryExpression(node))
|
|
5699
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);
|
|
5700
5825
|
});
|
|
5826
|
+
this.checker.prefetchCollectionTypes(values);
|
|
5701
5827
|
scanSites.set(sf, nodes);
|
|
5702
5828
|
return nodes;
|
|
5703
5829
|
};
|
|
@@ -6875,6 +7001,7 @@ export class Lowerer {
|
|
|
6875
7001
|
finalizePrivateBrands(this, functions);
|
|
6876
7002
|
trackClassFieldCreation(this, functions);
|
|
6877
7003
|
boxClassInstancesExactly(this, functions);
|
|
7004
|
+
addUntypedIntegrityWords(this);
|
|
6878
7005
|
guardClassAttributeWrites(this, functions);
|
|
6879
7006
|
guardFrozenWrites(this, functions);
|
|
6880
7007
|
applyHandleProperties(this, functions);
|
|
@@ -6967,6 +7094,7 @@ export class Lowerer {
|
|
|
6967
7094
|
// every producer and consumer agrees. Programs with no unregistered
|
|
6968
7095
|
// reference are untouched — byte-stability holds.
|
|
6969
7096
|
checkRequireBindingAccesses(this, functions);
|
|
7097
|
+
refuseX509DynValues(this, functions);
|
|
6970
7098
|
const module = this.diags.length > 0
|
|
6971
7099
|
? null
|
|
6972
7100
|
: {
|
|
@@ -6987,6 +7115,7 @@ export class Lowerer {
|
|
|
6987
7115
|
...(this.freezableArrays.size > 0
|
|
6988
7116
|
? { freezableArrays: [...this.freezableArrays].sort() }
|
|
6989
7117
|
: {}),
|
|
7118
|
+
...(this.untypedIntegrity ? { untypedIntegrity: true } : {}),
|
|
6990
7119
|
...(isNodeEsmFile(this.entry, this.program) ? {} : { commonJsEntry: true }),
|
|
6991
7120
|
...(this.ffiImports.length > 0 ? { ffiImports: [...this.ffiImports] } : {}),
|
|
6992
7121
|
};
|
|
@@ -7171,9 +7300,28 @@ export class Lowerer {
|
|
|
7171
7300
|
// retained-function keys and are deterministic by construction
|
|
7172
7301
|
// (qualified declaration names).
|
|
7173
7302
|
const units = new Map();
|
|
7174
|
-
|
|
7175
|
-
|
|
7176
|
-
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
|
+
};
|
|
7177
7325
|
const classMemberRoots = (info) => {
|
|
7178
7326
|
const roots = classCtorRoots(info);
|
|
7179
7327
|
for (const { member } of this.classMethodMembers(info))
|
|
@@ -7357,8 +7505,9 @@ export class Lowerer {
|
|
|
7357
7505
|
register(`%${cName}.set:${prop}`, [], () => this.throwingSetterFn(info, prop));
|
|
7358
7506
|
}
|
|
7359
7507
|
};
|
|
7508
|
+
const onEdge = this.onEdge;
|
|
7360
7509
|
for (const name of collectionEdges)
|
|
7361
|
-
|
|
7510
|
+
onEdge(name);
|
|
7362
7511
|
// Generic instances queued by the bodies above lower here (an instance
|
|
7363
7512
|
// body fires edges of its own and can queue further instances of
|
|
7364
7513
|
// either kind — function instances and class instantiations drain to
|
|
@@ -7462,8 +7611,9 @@ export class Lowerer {
|
|
|
7462
7611
|
// profile-mapped exports are called from outside the graph, so they
|
|
7463
7612
|
// seed the worklist beside the init bodies. Unknown names are inert
|
|
7464
7613
|
// (the export-map resolution reports them as SC4002 later).
|
|
7614
|
+
const rootEdge = this.onEdge;
|
|
7465
7615
|
for (const root of extraRoots ?? [])
|
|
7466
|
-
|
|
7616
|
+
rootEdge?.(root);
|
|
7467
7617
|
const shuffle = lowerShuffle();
|
|
7468
7618
|
const drainUnits = () => {
|
|
7469
7619
|
while (queue.length > 0) {
|
|
@@ -7579,8 +7729,10 @@ export class Lowerer {
|
|
|
7579
7729
|
/** Reachability hook (see emitReachable): fires when lowering resolves a
|
|
7580
7730
|
* reference to a lowerable body. */
|
|
7581
7731
|
noteEdge(name) {
|
|
7582
|
-
|
|
7583
|
-
|
|
7732
|
+
// Called as a plain function: the instance is not its receiver.
|
|
7733
|
+
const onEdge = this.onEdge;
|
|
7734
|
+
if (onEdge)
|
|
7735
|
+
onEdge(name);
|
|
7584
7736
|
}
|
|
7585
7737
|
/** A subclass constructor's super() edge: the base constructor runs, but
|
|
7586
7738
|
* no instance of exactly the base class is created. */
|
|
@@ -7733,8 +7885,11 @@ export class Lowerer {
|
|
|
7733
7885
|
}
|
|
7734
7886
|
this.diags.push(d);
|
|
7735
7887
|
}
|
|
7736
|
-
unsupported(code, node, featureOverride, hintOverride) {
|
|
7737
|
-
|
|
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);
|
|
7738
7893
|
throw new PoisonError();
|
|
7739
7894
|
}
|
|
7740
7895
|
externalHostFence(specifier, node, valueUse = true) {
|
|
@@ -7913,8 +8068,11 @@ export class Lowerer {
|
|
|
7913
8068
|
* nothing lowers. Poisons the statement like every other rejection.
|
|
7914
8069
|
* `sym`, when given, picks the wording: surface declared only by the
|
|
7915
8070
|
* adopted @types/node is blamed at @types/node. */
|
|
7916
|
-
noLowering(surface, node, hint, sym) {
|
|
7917
|
-
|
|
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);
|
|
7918
8076
|
throw new PoisonError();
|
|
7919
8077
|
}
|
|
7920
8078
|
stdlibMemberFence(access) {
|
|
@@ -7971,6 +8129,11 @@ export class Lowerer {
|
|
|
7971
8129
|
return symbol !== undefined && this.anySymbols.has(symbol);
|
|
7972
8130
|
}
|
|
7973
8131
|
typeOf(node) {
|
|
8132
|
+
if (ts.isIdentifier(node)) {
|
|
8133
|
+
const inferred = inferredCollectionType(this, node);
|
|
8134
|
+
if (inferred)
|
|
8135
|
+
return inferred;
|
|
8136
|
+
}
|
|
7974
8137
|
if (this.anySymbols.size > 0 && this.readsAnySymbol(node))
|
|
7975
8138
|
return this.checker.getAnyType();
|
|
7976
8139
|
// A checked-dynamic argument that another overload could take at run
|
|
@@ -8620,7 +8783,8 @@ export class Lowerer {
|
|
|
8620
8783
|
// so its module binding is too (`ReleaseEmitter = EventEmitter` over
|
|
8621
8784
|
// `const EventEmitter = require("events")`).
|
|
8622
8785
|
if (expr.type.kind === "moduleNs" && isJsSourceFileName(expr.loc.file)) {
|
|
8623
|
-
const
|
|
8786
|
+
const ns = expr;
|
|
8787
|
+
const object = moduleNamespaceObject(this, ns) ?? moduleNamespaceValue(this, ns);
|
|
8624
8788
|
if (object)
|
|
8625
8789
|
return object;
|
|
8626
8790
|
}
|
|
@@ -8663,6 +8827,7 @@ export class Lowerer {
|
|
|
8663
8827
|
// A builtin function's adapter boxes under the builtin's name, the
|
|
8664
8828
|
// name Node's function carries (`[Function: randomUUID]`).
|
|
8665
8829
|
const builtinName = expr.kind === "closure" ? this.builtinCallableValueNames.get(expr.fnName) : undefined;
|
|
8830
|
+
const builtinLength = expr.kind === "closure" ? this.builtinCallableValueLengths.get(expr.fnName) : undefined;
|
|
8666
8831
|
return {
|
|
8667
8832
|
kind: "dynFrom",
|
|
8668
8833
|
value: expr,
|
|
@@ -8670,6 +8835,7 @@ export class Lowerer {
|
|
|
8670
8835
|
loc: expr.loc,
|
|
8671
8836
|
...(liveRef ? { liveRef: true } : {}),
|
|
8672
8837
|
...(builtinName !== undefined ? { fnName: builtinName } : {}),
|
|
8838
|
+
...(builtinLength !== undefined ? { fnLength: builtinLength } : {}),
|
|
8673
8839
|
};
|
|
8674
8840
|
}
|
|
8675
8841
|
return expr;
|
|
@@ -9147,8 +9313,8 @@ export class Lowerer {
|
|
|
9147
9313
|
unionRetagHelper(fromId, toId, loc, trappable) {
|
|
9148
9314
|
return unionRetagHelper(this, fromId, toId, loc, trappable);
|
|
9149
9315
|
}
|
|
9150
|
-
narrowedArmHelper(fromId, target, loc) {
|
|
9151
|
-
return narrowedArmHelper(this, fromId, target, loc);
|
|
9316
|
+
narrowedArmHelper(fromId, target, loc, message) {
|
|
9317
|
+
return narrowedArmHelper(this, fromId, target, loc, message);
|
|
9152
9318
|
}
|
|
9153
9319
|
checkedNarrowCall(helper, value, type, loc) {
|
|
9154
9320
|
return checkedNarrowCall(this, helper, value, type, loc);
|
|
@@ -10423,10 +10589,13 @@ export class Lowerer {
|
|
|
10423
10589
|
}
|
|
10424
10590
|
/** Method-like members with their collected method-map names. Body
|
|
10425
10591
|
* lowering omits abstract declarations; ABI analysis must include them
|
|
10426
|
-
* because an abstract-typed call selects the same virtual slot.
|
|
10427
|
-
|
|
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 = [];
|
|
10428
10597
|
if (!info.decl)
|
|
10429
|
-
return; // builtin error classes: runtime-provided bodies
|
|
10598
|
+
return members; // builtin error classes: runtime-provided bodies
|
|
10430
10599
|
for (const member of info.decl.members.nodes) {
|
|
10431
10600
|
const fnLike = ts.isMethodDeclaration(member) || ts.isGetAccessor(member) || ts.isSetAccessor(member)
|
|
10432
10601
|
? member
|
|
@@ -10453,8 +10622,9 @@ export class Lowerer {
|
|
|
10453
10622
|
const signature = info.methods.get(mName);
|
|
10454
10623
|
if (!signature || (!fnLike.body && !(includeAbstract && signature.abstract)))
|
|
10455
10624
|
continue;
|
|
10456
|
-
|
|
10625
|
+
members.push({ mName, member: fnLike });
|
|
10457
10626
|
}
|
|
10627
|
+
return members;
|
|
10458
10628
|
}
|
|
10459
10629
|
lowerClassCtor(info) {
|
|
10460
10630
|
return lowerClassCtor(this, info);
|
|
@@ -11250,11 +11420,28 @@ export class Lowerer {
|
|
|
11250
11420
|
}
|
|
11251
11421
|
/* ── expressions ──────────────────────────────────────────────────── */
|
|
11252
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
|
+
}
|
|
11253
11430
|
const streamValue = this.valueStreamReceivers.get(expr);
|
|
11254
11431
|
if (streamValue)
|
|
11255
11432
|
return valueStreamOf(varRef(streamValue.localId, streamValue.type, locOf(expr)));
|
|
11256
11433
|
return this.stagedArgument(expr) ?? lowerExpr(this, expr);
|
|
11257
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
|
+
}
|
|
11258
11445
|
/** The saved value of a staged fs argument (stagedArguments, keyed
|
|
11259
11446
|
* without type-only wrappers), or null for every other expression. */
|
|
11260
11447
|
stagedArgument(node) {
|
|
@@ -11344,6 +11531,10 @@ export class Lowerer {
|
|
|
11344
11531
|
expr.expression.name.text === "cache") {
|
|
11345
11532
|
return lowerElementAccess(this, expr);
|
|
11346
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);
|
|
11347
11538
|
const receiver = this.runtimeOptionalIdentifierValue(expr.expression);
|
|
11348
11539
|
const receiverValue = receiver && (receiver.present.kind === "array" || receiver.present.kind === "record")
|
|
11349
11540
|
? (() => {
|
|
@@ -11581,6 +11772,7 @@ export class Lowerer {
|
|
|
11581
11772
|
lowerStaticBlobCall(this, expr) ??
|
|
11582
11773
|
lowerWebCryptoCall(this, expr) ??
|
|
11583
11774
|
lowerKeyObjectCall(this, expr) ??
|
|
11775
|
+
lowerX509Call(this, expr) ??
|
|
11584
11776
|
lowerEcdhCall(this, expr) ??
|
|
11585
11777
|
lowerDiffieHellmanCall(this, expr) ??
|
|
11586
11778
|
lowerNetAddressCall(this, expr) ??
|
|
@@ -11645,14 +11837,20 @@ export class Lowerer {
|
|
|
11645
11837
|
accessorCall(className, member, obj, extraArgs, ret, loc) {
|
|
11646
11838
|
return accessorCall(this, className, member, obj, extraArgs, ret, loc);
|
|
11647
11839
|
}
|
|
11648
|
-
classIteratorOf(t) {
|
|
11649
|
-
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);
|
|
11650
11845
|
}
|
|
11651
11846
|
classIteratorOpenCall(cit, recv, loc) {
|
|
11652
11847
|
return classIteratorOpenCall(this, cit, recv, loc);
|
|
11653
11848
|
}
|
|
11654
|
-
|
|
11655
|
-
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);
|
|
11656
11854
|
}
|
|
11657
11855
|
classIteratorDrainCall(src, loc, elemT) {
|
|
11658
11856
|
return classIteratorDrainCall(this, src, loc, elemT);
|
|
@@ -11911,7 +12109,7 @@ export class Lowerer {
|
|
|
11911
12109
|
}
|
|
11912
12110
|
if (ts.isPropertyAccessExpression(expr) &&
|
|
11913
12111
|
!expr.questionDotToken &&
|
|
11914
|
-
ts.isIdentifier(expr.expression)) {
|
|
12112
|
+
(ts.isIdentifier(expr.expression) || requireSpecOf(expr.expression) !== null)) {
|
|
11915
12113
|
const outer = this.builtinNamespaceModuleOf(expr.expression);
|
|
11916
12114
|
if (outer === null)
|
|
11917
12115
|
return null;
|
|
@@ -12114,6 +12312,15 @@ export class Lowerer {
|
|
|
12114
12312
|
if (builtinModuleFnOf(this, bi.module, bi.member)) {
|
|
12115
12313
|
this.unsupported("SC1090", expr, `library functions as values (call '${ts.getTextOfNode(expr)}' directly)`);
|
|
12116
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
|
+
}
|
|
12117
12324
|
this.noLowering(`${bi.module}.${bi.member}`, expr, builtinFenceHintOf(bi.module, bi.member), this.checker.getSymbolAtLocation(expr.name));
|
|
12118
12325
|
}
|
|
12119
12326
|
/** Materialize one explicitly value-callable table entry as an interned
|
|
@@ -12122,6 +12329,9 @@ export class Lowerer {
|
|
|
12122
12329
|
* deliberately narrower than table membership because many table rows
|
|
12123
12330
|
* are only dispatch sentinels for call-site-specific lowering. */
|
|
12124
12331
|
lowerBuiltinCallableValue(bi, loc) {
|
|
12332
|
+
const assertion = assertFunctionValue(bi, loc);
|
|
12333
|
+
if (assertion)
|
|
12334
|
+
return assertion;
|
|
12125
12335
|
if (bi.module === "util" && bi.member === "types")
|
|
12126
12336
|
return utilTypesModuleValue(this, loc);
|
|
12127
12337
|
if (bi.module === "util/types" && builtinModuleFnOf(this, bi.module, bi.member))
|
|
@@ -12170,6 +12380,8 @@ export class Lowerer {
|
|
|
12170
12380
|
fnName = keyedHelperName(this, `%builtin.value.${fn.valueFn ?? fn.fn}`, key);
|
|
12171
12381
|
this.builtinCallableValueFns.set(key, fnName);
|
|
12172
12382
|
this.builtinCallableValueNames.set(fnName, display.slice(display.lastIndexOf(".") + 1));
|
|
12383
|
+
if (fn.valueLength !== undefined)
|
|
12384
|
+
this.builtinCallableValueLengths.set(fnName, fn.valueLength);
|
|
12173
12385
|
const params = funcType.params.map((type, index) => ({
|
|
12174
12386
|
localId: `arg.${index}`,
|
|
12175
12387
|
name: `arg${index}`,
|