@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,5 +1,6 @@
|
|
|
1
1
|
import { keyedHelperName } from "./stable-names.js";
|
|
2
2
|
import { perKeyOrder } from "./key-order-witness.js";
|
|
3
|
+
import { classPrototypeView } from "./class-prototypes.js";
|
|
3
4
|
import { dynUndefinedExpr, boolLit, helperLoc, nodeThrowExpr, numLit, strLit, varRef, } from "../../ir/build.js";
|
|
4
5
|
import { builtinClassDynValueOf, builtinClassKindOf } from "./builtins/builtin-class-dyn.js";
|
|
5
6
|
import { InternalCompilerError } from "../../errors.js";
|
|
@@ -7,9 +8,10 @@ import * as ts from "../ts7/adapter.js";
|
|
|
7
8
|
import { unsignedHex } from "../../format-integer.js";
|
|
8
9
|
import { jsFuncNameOf } from "./lowerer.js";
|
|
9
10
|
import { isJsSourceFile } from "../program.js";
|
|
10
|
-
import { BOOL, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, isUnitType, UNDEFINED_T, VOID, canConvertToDyn, canDynCheckTo, CLASS_FIELD_ATTRIBUTES_PREFIX, classDynViewSupported, DYN_CLASS_PROPERTIES, isClassOwnEnumerableFieldName, isDirentShape, isDynTypedRefType, recordTextCodecClass, shapeHasAccessorSlots, shapeKeyOrders, typeKey, } from "../../ir/ir.js";
|
|
11
|
+
import { BOOL, CAUGHT, DYN, F64, RUNTIME_ERROR_CLASSES, STRING, isUnitType, UNDEFINED_T, VOID, canConvertToDyn, canDynCheckTo, CLASS_FIELD_ATTRIBUTES_PREFIX, classDynViewSupported, DYN_CLASS_PROPERTIES, isClassOwnEnumerableFieldName, isDirentShape, isDynTypedRefType, recordTextCodecClass, shapeHasAccessorSlots, shapeKeyOrders, typeKey, } from "../../ir/ir.js";
|
|
12
|
+
import { accessorCall, findMethodOn } from "./lower-classes.js";
|
|
11
13
|
import { isSafeToDiscard, isSafeToRepeat } from "./expressions/evaluation-safety.js";
|
|
12
|
-
import { symbolFieldDisplayName } from "./symbol-fields.js";
|
|
14
|
+
import { symbolFieldDisplayName, TO_STRING_TAG_FIELD } from "./symbol-fields.js";
|
|
13
15
|
import { eventTargetRootOf } from "./lower-event-target.js";
|
|
14
16
|
import { dateRootOf } from "./builtins/date-classes.js";
|
|
15
17
|
import { lowerSystemErrorMap } from "./lower-system-errors.js";
|
|
@@ -783,7 +785,10 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
783
785
|
}
|
|
784
786
|
// Generator objects print through their checked capsule: Node's
|
|
785
787
|
// `Object [Generator] {}`, or the tag of the iterator they implement.
|
|
788
|
+
// URLs and URLSearchParams print through their handles.
|
|
786
789
|
case "generator":
|
|
790
|
+
case "url":
|
|
791
|
+
case "searchParams":
|
|
787
792
|
return null;
|
|
788
793
|
default:
|
|
789
794
|
return `'${lowerer.fmt(t)}' values have no inspect lowering`;
|
|
@@ -816,6 +821,106 @@ function isNumberFlag(lowerer, t, v, loc) {
|
|
|
816
821
|
* with the depth budget `depth` — a direct scalar libCall or a call of
|
|
817
822
|
* the interned per-type helper. */
|
|
818
823
|
export function inspectExpr(lowerer, t, value, recurse, depth, loc) {
|
|
824
|
+
const render = inspectExprBody(lowerer, t, value, recurse, depth, loc);
|
|
825
|
+
// A top-level render through emitted helpers that can reach a refusal
|
|
826
|
+
// (the 'not supported yet' Error of insp.dyn) unwinds the inspector to
|
|
827
|
+
// its state before the render on every exit: the Error propagates out of
|
|
828
|
+
// the helpers before they close their frames.
|
|
829
|
+
if (render.kind !== "call" ||
|
|
830
|
+
recurse.kind !== "numLit" ||
|
|
831
|
+
recurse.value !== 0 ||
|
|
832
|
+
!inspectMayRefuse(lowerer, t))
|
|
833
|
+
return render;
|
|
834
|
+
return withInspectUnwind(lowerer, render, t, loc);
|
|
835
|
+
}
|
|
836
|
+
/** A top-level helper render (`call helper(v, r, d)`) through a lifted
|
|
837
|
+
* wrapper that takes insp.mark first and runs insp.unwind however the
|
|
838
|
+
* render ends: `try { return helper(v, r, d); } finally { insp.unwind(); }`.
|
|
839
|
+
* A seqExpr cannot hold the try. */
|
|
840
|
+
function withInspectUnwind(lowerer, render, t, loc) {
|
|
841
|
+
const key = `unwind:${render.callee}`;
|
|
842
|
+
let name = lowerer.inspectHelpers.get(key);
|
|
843
|
+
if (name === undefined) {
|
|
844
|
+
name = keyedHelperName(lowerer, "%util.inspUnwound", key);
|
|
845
|
+
lowerer.inspectHelpers.set(key, name);
|
|
846
|
+
const params = [
|
|
847
|
+
{ localId: "v.0", name: "v", type: t },
|
|
848
|
+
{ localId: "r.0", name: "r", type: F64 },
|
|
849
|
+
{ localId: "d.0", name: "d", type: F64 },
|
|
850
|
+
];
|
|
851
|
+
const call = (fn) => ({
|
|
852
|
+
kind: "exprStmt",
|
|
853
|
+
expr: { kind: "libCall", fn, args: [], type: VOID, loc },
|
|
854
|
+
loc,
|
|
855
|
+
});
|
|
856
|
+
lowerer.liftedFns.push({
|
|
857
|
+
name,
|
|
858
|
+
params,
|
|
859
|
+
returnType: STRING,
|
|
860
|
+
locals: params.map((p) => ({ id: p.localId, name: p.name, type: p.type, mutable: false })),
|
|
861
|
+
body: [
|
|
862
|
+
call("insp.mark"),
|
|
863
|
+
{
|
|
864
|
+
kind: "tryCatch",
|
|
865
|
+
tryBody: [
|
|
866
|
+
{
|
|
867
|
+
kind: "return",
|
|
868
|
+
value: {
|
|
869
|
+
kind: "call",
|
|
870
|
+
callee: render.callee,
|
|
871
|
+
args: params.map((p) => varRef(p.localId, p.type, loc)),
|
|
872
|
+
type: STRING,
|
|
873
|
+
loc,
|
|
874
|
+
},
|
|
875
|
+
loc,
|
|
876
|
+
},
|
|
877
|
+
],
|
|
878
|
+
catchBody: null,
|
|
879
|
+
catchLocalId: null,
|
|
880
|
+
finallyBody: [call("insp.unwind")],
|
|
881
|
+
loc,
|
|
882
|
+
},
|
|
883
|
+
],
|
|
884
|
+
loc,
|
|
885
|
+
});
|
|
886
|
+
}
|
|
887
|
+
return { ...render, callee: name };
|
|
888
|
+
}
|
|
889
|
+
/** Whether inspecting a `t` value can end in an inspection refusal: `t`
|
|
890
|
+
* or a type reachable from it is a checked-dynamic value, a generator, a
|
|
891
|
+
* Dirent row or a class instance, or a record or array that can keep
|
|
892
|
+
* undeclared properties, which can render through a checked-dynamic view. */
|
|
893
|
+
function inspectMayRefuse(lowerer, t) {
|
|
894
|
+
const seen = new Set();
|
|
895
|
+
const walk = (u) => {
|
|
896
|
+
if (u.kind === "dyn" || u.kind === "generator")
|
|
897
|
+
return true;
|
|
898
|
+
if (u.kind === "record") {
|
|
899
|
+
const shape = lowerer.shapes.get(u.shapeId);
|
|
900
|
+
if (shape && isDirentShape(shape))
|
|
901
|
+
return true;
|
|
902
|
+
// The kept source properties render through the checked view (the
|
|
903
|
+
// helper's source gate).
|
|
904
|
+
if (recordMayKeepSource(lowerer, u))
|
|
905
|
+
return true;
|
|
906
|
+
}
|
|
907
|
+
// So do an array's properties besides its elements.
|
|
908
|
+
if (u.kind === "array" && lowerer.dynConvertible(u))
|
|
909
|
+
return true;
|
|
910
|
+
// A class instance can render through its checked-dynamic view, which
|
|
911
|
+
// a helper built earlier may only learn at the end of lowering
|
|
912
|
+
// (classInspectsAddedProperties).
|
|
913
|
+
if (u.kind === "object")
|
|
914
|
+
return true;
|
|
915
|
+
const k = typeKey(u);
|
|
916
|
+
if (seen.has(k))
|
|
917
|
+
return false;
|
|
918
|
+
seen.add(k);
|
|
919
|
+
return typeConstituents(lowerer, u).some(walk);
|
|
920
|
+
};
|
|
921
|
+
return walk(t);
|
|
922
|
+
}
|
|
923
|
+
function inspectExprBody(lowerer, t, value, recurse, depth, loc) {
|
|
819
924
|
// A Dirent row renders through its dyn view: Node's `Dirent { ... }`
|
|
820
925
|
// with the Symbol(type) key.
|
|
821
926
|
if (t.kind === "record") {
|
|
@@ -874,6 +979,18 @@ export function inspectExpr(lowerer, t, value, recurse, depth, loc) {
|
|
|
874
979
|
};
|
|
875
980
|
case "dyn":
|
|
876
981
|
return { kind: "libCall", fn: "insp.dyn", args: [value, recurse, depth], type: STRING, loc };
|
|
982
|
+
// URLs and URLSearchParams render through their checked-dynamic
|
|
983
|
+
// handles: Node's `URL { href: ..., hash: ... }` and
|
|
984
|
+
// `URLSearchParams { 'a' => '1' }`.
|
|
985
|
+
case "url":
|
|
986
|
+
case "searchParams":
|
|
987
|
+
return {
|
|
988
|
+
kind: "libCall",
|
|
989
|
+
fn: "insp.dyn",
|
|
990
|
+
args: [lowerer.coerceToExpected(value, DYN), recurse, depth],
|
|
991
|
+
type: STRING,
|
|
992
|
+
loc,
|
|
993
|
+
};
|
|
877
994
|
case "generator":
|
|
878
995
|
return {
|
|
879
996
|
kind: "libCall",
|
|
@@ -1700,8 +1817,68 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1700
1817
|
// observable way — Node's inspect omits them entirely (verified),
|
|
1701
1818
|
// so a class whose only fields are private prints as `C {}`.
|
|
1702
1819
|
const visible = info.def.fields.filter((f) => isClassOwnEnumerableFieldName(f.name));
|
|
1820
|
+
// A Symbol.toStringTag getter (an own tag field is listed instead)
|
|
1821
|
+
// brackets the tag after the name, `Name [tag] {`, when it is a
|
|
1822
|
+
// nonempty string other than the name. A getter that throws shows
|
|
1823
|
+
// no tag, as in Node.
|
|
1824
|
+
const tagGetter = info.fields.has(TO_STRING_TAG_FIELD)
|
|
1825
|
+
? null
|
|
1826
|
+
: findMethodOn(lowerer, info, "get:sym:toStringTag");
|
|
1827
|
+
let named = (plain) => strLit(plain, loc);
|
|
1828
|
+
if (tagGetter?.sig.ret.kind === "string") {
|
|
1829
|
+
const owner = tagGetter.declarer.def.name;
|
|
1830
|
+
locals.push({ id: "tag.0", name: "tag", type: STRING, mutable: true }, { id: "tagError.0", name: "tagError", type: CAUGHT, mutable: false });
|
|
1831
|
+
body.push({ kind: "varDecl", localId: "tag.0", init: strLit("", loc), loc }, {
|
|
1832
|
+
kind: "tryCatch",
|
|
1833
|
+
tryBody: [
|
|
1834
|
+
{
|
|
1835
|
+
kind: "assign",
|
|
1836
|
+
localId: "tag.0",
|
|
1837
|
+
value: accessorCall(lowerer, owner, "get:sym:toStringTag", lowerer.upcastTo(v(), owner), [], STRING, loc),
|
|
1838
|
+
loc,
|
|
1839
|
+
},
|
|
1840
|
+
],
|
|
1841
|
+
catchBody: [],
|
|
1842
|
+
catchLocalId: "tagError.0",
|
|
1843
|
+
finallyBody: null,
|
|
1844
|
+
loc,
|
|
1845
|
+
});
|
|
1846
|
+
const tag = () => varRef("tag.0", STRING, loc);
|
|
1847
|
+
const shown = {
|
|
1848
|
+
kind: "logical",
|
|
1849
|
+
op: "&&",
|
|
1850
|
+
left: {
|
|
1851
|
+
kind: "strEq",
|
|
1852
|
+
negated: true,
|
|
1853
|
+
left: tag(),
|
|
1854
|
+
right: strLit("", loc),
|
|
1855
|
+
type: BOOL,
|
|
1856
|
+
loc,
|
|
1857
|
+
},
|
|
1858
|
+
right: {
|
|
1859
|
+
kind: "strEq",
|
|
1860
|
+
negated: true,
|
|
1861
|
+
left: tag(),
|
|
1862
|
+
right: strLit(display, loc),
|
|
1863
|
+
type: BOOL,
|
|
1864
|
+
loc,
|
|
1865
|
+
},
|
|
1866
|
+
type: BOOL,
|
|
1867
|
+
loc,
|
|
1868
|
+
};
|
|
1869
|
+
const head = concatAll([strLit(`${display === "" ? "Object" : display} [`, loc), tag(), strLit("]", loc)], loc);
|
|
1870
|
+
named = (plain, make) => ({
|
|
1871
|
+
kind: "ternary",
|
|
1872
|
+
cond: shown,
|
|
1873
|
+
then: make(head),
|
|
1874
|
+
else_: strLit(plain, loc),
|
|
1875
|
+
type: STRING,
|
|
1876
|
+
loc,
|
|
1877
|
+
});
|
|
1878
|
+
}
|
|
1879
|
+
const after = (text) => (head) => concatAll([head, strLit(text, loc)], loc);
|
|
1703
1880
|
if (visible.length === 0) {
|
|
1704
|
-
body
|
|
1881
|
+
body.push(ret(named(display === "" ? "{}" : `${display} {}`, after(" {}"))));
|
|
1705
1882
|
break;
|
|
1706
1883
|
}
|
|
1707
1884
|
const get = (field, type) => ({
|
|
@@ -1712,7 +1889,15 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1712
1889
|
type,
|
|
1713
1890
|
loc,
|
|
1714
1891
|
});
|
|
1715
|
-
body
|
|
1892
|
+
body.push({
|
|
1893
|
+
kind: "if",
|
|
1894
|
+
cond: { kind: "bin", op: ">", left: r(), right: d(), type: BOOL, loc },
|
|
1895
|
+
then: [
|
|
1896
|
+
ret(named(display === "" ? "[Object]" : `[${display}]`, (head) => concatAll([strLit("[", loc), head, strLit("]", loc)], loc))),
|
|
1897
|
+
],
|
|
1898
|
+
else_: null,
|
|
1899
|
+
loc,
|
|
1900
|
+
}, ...begin());
|
|
1716
1901
|
// def.fields carries layout order: the base chain first, then own —
|
|
1717
1902
|
// exactly the own-property insertion order of a constructor that
|
|
1718
1903
|
// assigns in declaration order (SEMANTICS.md 36's stance). SYMBOL-
|
|
@@ -1733,7 +1918,7 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1733
1918
|
const key = symNames.has(f.name) ? symbolFieldDisplayName(f.name) : inspectKey(f.name);
|
|
1734
1919
|
body.push(entry(concatAll([strLit(`${key}: `, loc), child(f.type, get(f.name, f.type))], loc), boolLit(false, loc)));
|
|
1735
1920
|
}
|
|
1736
|
-
body.push(ret(end(strLit("", loc),
|
|
1921
|
+
body.push(ret(end(strLit("", loc), named(display === "" ? "{" : `${display} {`, after(" {")), strLit("}", loc), false, boolLit(false, loc))));
|
|
1737
1922
|
break;
|
|
1738
1923
|
}
|
|
1739
1924
|
default:
|
|
@@ -2083,35 +2268,49 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
2083
2268
|
}
|
|
2084
2269
|
/** A render under non-default breakLength/compact/sorted: the value is evaluated
|
|
2085
2270
|
* first, the layout applies to this render only, and the defaults return
|
|
2086
|
-
*
|
|
2087
|
-
function
|
|
2271
|
+
* however the render ends, an inspection refusal included. The render runs
|
|
2272
|
+
* in a lifted function, `(v) => { insp.layout(...); try { return render(v); }
|
|
2273
|
+
* finally { insp.layout(80, 3, false); } }`, since a seqExpr cannot hold the
|
|
2274
|
+
* try; `tag` names the render for the function's key. */
|
|
2275
|
+
function withInspectLayout(lowerer, options, value, tag, render, loc) {
|
|
2088
2276
|
if (options.breakLength === 80 && options.compact === 3 && !options.sorted)
|
|
2089
2277
|
return render(value);
|
|
2090
|
-
const
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2278
|
+
const key = `layout:${tag}:${typeKey(value.type)}:${options.breakLength}:${options.compact}:${options.sorted}:${options.depth}`;
|
|
2279
|
+
let name = lowerer.inspectHelpers.get(key);
|
|
2280
|
+
if (name === undefined) {
|
|
2281
|
+
name = keyedHelperName(lowerer, "%util.inspLayout", key);
|
|
2282
|
+
lowerer.inspectHelpers.set(key, name);
|
|
2283
|
+
const layout = (breakLength, compact, sorted) => ({
|
|
2284
|
+
kind: "exprStmt",
|
|
2285
|
+
expr: {
|
|
2286
|
+
kind: "libCall",
|
|
2287
|
+
fn: "insp.layout",
|
|
2288
|
+
args: [numLit(breakLength, loc), numLit(compact, loc), boolLit(sorted, loc)],
|
|
2289
|
+
type: VOID,
|
|
2290
|
+
loc,
|
|
2291
|
+
},
|
|
2099
2292
|
loc,
|
|
2100
|
-
}
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2293
|
+
});
|
|
2294
|
+
lowerer.liftedFns.push({
|
|
2295
|
+
name,
|
|
2296
|
+
params: [{ localId: "v.0", name: "v", type: value.type }],
|
|
2297
|
+
returnType: STRING,
|
|
2298
|
+
locals: [{ id: "v.0", name: "v", type: value.type, mutable: false }],
|
|
2299
|
+
body: [
|
|
2300
|
+
layout(options.breakLength, options.compact, options.sorted),
|
|
2301
|
+
{
|
|
2302
|
+
kind: "tryCatch",
|
|
2303
|
+
tryBody: [{ kind: "return", value: render(varRef("v.0", value.type, loc)), loc }],
|
|
2304
|
+
catchBody: null,
|
|
2305
|
+
catchLocalId: null,
|
|
2306
|
+
finallyBody: [layout(80, 3, false)],
|
|
2307
|
+
loc,
|
|
2308
|
+
},
|
|
2309
|
+
],
|
|
2310
|
+
loc,
|
|
2311
|
+
});
|
|
2312
|
+
}
|
|
2313
|
+
return { kind: "call", callee: name, args: [value], type: STRING, loc };
|
|
2115
2314
|
}
|
|
2116
2315
|
/** `util.inspect(fn)` / `util.inspect(Cls)` over a DIRECT identifier
|
|
2117
2316
|
* naming a declared function or class: the name is compile-time truth,
|
|
@@ -2215,7 +2414,7 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
2215
2414
|
if (!isBuffer) {
|
|
2216
2415
|
// A numeric typed array: Uint8Array(n) [ ... ] under the depth and
|
|
2217
2416
|
// layout options.
|
|
2218
|
-
return withInspectLayout(lowerer, options, value, (input) => ({
|
|
2417
|
+
return withInspectLayout(lowerer, options, value, "typedArray", (input) => ({
|
|
2219
2418
|
kind: "libCall",
|
|
2220
2419
|
fn: value.type.kind === "bytes" && value.type.elem === "u8"
|
|
2221
2420
|
? "insp.bytes"
|
|
@@ -2236,7 +2435,7 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
2236
2435
|
const options = parseInspectOptions(lowerer, optionsNode, walk.recursive, dir);
|
|
2237
2436
|
const depth = options.depth;
|
|
2238
2437
|
if (dir && value.type.kind === "dyn") {
|
|
2239
|
-
return withInspectLayout(lowerer, options, value, (input) => ({
|
|
2438
|
+
return withInspectLayout(lowerer, options, value, "dirDyn", (input) => ({
|
|
2240
2439
|
kind: "libCall",
|
|
2241
2440
|
fn: "console.dirDyn",
|
|
2242
2441
|
args: [input, numLit(depth, loc)],
|
|
@@ -2244,7 +2443,7 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
2244
2443
|
loc,
|
|
2245
2444
|
}), loc);
|
|
2246
2445
|
}
|
|
2247
|
-
return withInspectLayout(lowerer, options, value, (input) => inspectExpr(lowerer, value.type, input, numLit(0, loc), numLit(depth, loc), loc), loc);
|
|
2446
|
+
return withInspectLayout(lowerer, options, value, "inspect", (input) => inspectExpr(lowerer, value.type, input, numLit(0, loc), numLit(depth, loc), loc), loc);
|
|
2248
2447
|
}
|
|
2249
2448
|
/* ── util.format / util.formatWithOptions ────────────────────────────── */
|
|
2250
2449
|
/** One argument as format's %s conversion (Node: numbers via
|
|
@@ -2307,10 +2506,21 @@ function formatSArg(lowerer, node, depth, loc) {
|
|
|
2307
2506
|
return inspectExpr(lowerer, t, value, numLit(0, loc), numLit(depth, loc), loc);
|
|
2308
2507
|
}
|
|
2309
2508
|
/** %O (depth 2) / %o (showHidden, depth 4) — inspect with the spec's
|
|
2310
|
-
* option deltas
|
|
2311
|
-
*
|
|
2509
|
+
* option deltas. A checked-dynamic argument renders through the runtime's
|
|
2510
|
+
* showHidden walk; static %o fences over arrays and nested dynamic values
|
|
2511
|
+
* (showHidden adds an array's hidden [length] entry, which the static
|
|
2512
|
+
* rendering has no lowering for). */
|
|
2312
2513
|
function formatOArg(lowerer, node, depth, loc) {
|
|
2313
2514
|
const value = lowerer.lowerExpr(node);
|
|
2515
|
+
if (depth === 4 && value.type.kind === "dyn") {
|
|
2516
|
+
return {
|
|
2517
|
+
kind: "libCall",
|
|
2518
|
+
fn: "insp.dynHidden",
|
|
2519
|
+
args: [value, numLit(4, loc)],
|
|
2520
|
+
type: STRING,
|
|
2521
|
+
loc,
|
|
2522
|
+
};
|
|
2523
|
+
}
|
|
2314
2524
|
if (value.type.kind === "bytes") {
|
|
2315
2525
|
lowerer.noLowering(`util.format %${depth === 4 ? "o" : "O"} of typed-array values`, node, "pass util.inspect(buf) explicitly");
|
|
2316
2526
|
}
|
|
@@ -2318,8 +2528,8 @@ function formatOArg(lowerer, node, depth, loc) {
|
|
|
2318
2528
|
const reason = inspectSupport(lowerer, value.type, new Set(), walk);
|
|
2319
2529
|
if (reason !== null)
|
|
2320
2530
|
lowerer.noLowering(`util.format %${depth === 4 ? "o" : "O"} of '${lowerer.fmt(value.type)}' values`, node, reason);
|
|
2321
|
-
if (depth === 4 &&
|
|
2322
|
-
lowerer.noLowering("util.format %o over arrays", node, "%o renders with showHidden (arrays gain a hidden [length] entry) — use %O for the default rendering");
|
|
2531
|
+
if (depth === 4 && typeTreeHasHidden(lowerer, value.type, new Set())) {
|
|
2532
|
+
lowerer.noLowering("util.format %o over arrays", node, "%o renders with showHidden (arrays gain a hidden [length] entry) — use %O for the default rendering, or pass the value as unknown");
|
|
2323
2533
|
}
|
|
2324
2534
|
return inspectExpr(lowerer, value.type, value, numLit(0, loc), numLit(depth, loc), loc);
|
|
2325
2535
|
}
|
|
@@ -2672,9 +2882,10 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
2672
2882
|
return concatAll(parts, loc);
|
|
2673
2883
|
}
|
|
2674
2884
|
/** Arrays anywhere in the tree — the %o (showHidden) gate. */
|
|
2675
|
-
function
|
|
2885
|
+
function typeTreeHasHidden(lowerer, t, visiting) {
|
|
2676
2886
|
switch (t.kind) {
|
|
2677
2887
|
case "array":
|
|
2888
|
+
case "dyn":
|
|
2678
2889
|
return true;
|
|
2679
2890
|
case "record": {
|
|
2680
2891
|
if (visiting.has(t.shapeId))
|
|
@@ -2683,23 +2894,23 @@ function typeTreeHasArray(lowerer, t, visiting) {
|
|
|
2683
2894
|
const shape = lowerer.shapes.get(t.shapeId);
|
|
2684
2895
|
if (shape?.tuple)
|
|
2685
2896
|
return true;
|
|
2686
|
-
return (shape?.fields ?? []).some((f) =>
|
|
2897
|
+
return (shape?.fields ?? []).some((f) => typeTreeHasHidden(lowerer, f.type, visiting));
|
|
2687
2898
|
}
|
|
2688
2899
|
case "map":
|
|
2689
|
-
return (
|
|
2900
|
+
return (typeTreeHasHidden(lowerer, t.key, visiting) || typeTreeHasHidden(lowerer, t.value, visiting));
|
|
2690
2901
|
case "set":
|
|
2691
|
-
return
|
|
2902
|
+
return typeTreeHasHidden(lowerer, t.elem, visiting);
|
|
2692
2903
|
case "union": {
|
|
2693
2904
|
if (visiting.has(t.unionId))
|
|
2694
2905
|
return false;
|
|
2695
2906
|
visiting.add(t.unionId);
|
|
2696
|
-
return (lowerer.unions.get(t.unionId)?.arms ?? []).some((a) =>
|
|
2907
|
+
return (lowerer.unions.get(t.unionId)?.arms ?? []).some((a) => typeTreeHasHidden(lowerer, a, visiting));
|
|
2697
2908
|
}
|
|
2698
2909
|
case "object": {
|
|
2699
2910
|
if (visiting.has(t.className))
|
|
2700
2911
|
return false;
|
|
2701
2912
|
visiting.add(t.className);
|
|
2702
|
-
return (lowerer.classes.get(t.className)?.def.fields ?? []).some((f) =>
|
|
2913
|
+
return (lowerer.classes.get(t.className)?.def.fields ?? []).some((f) => typeTreeHasHidden(lowerer, f.type, visiting));
|
|
2703
2914
|
}
|
|
2704
2915
|
case "bytes":
|
|
2705
2916
|
return true;
|
|
@@ -2855,8 +3066,13 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2855
3066
|
const builtinBase = member === "inherits" && expr.arguments.nodes[1] !== undefined
|
|
2856
3067
|
? builtinClassKindOf(lowerer, expr.arguments.nodes[1])
|
|
2857
3068
|
: null;
|
|
3069
|
+
// A superCtor class whose prototype has a complete view (a module-level
|
|
3070
|
+
// JavaScript class named directly) passes that view to the runtime.
|
|
3071
|
+
const superView = member === "inherits" && builtinBase === null && expr.arguments.nodes[1] !== undefined
|
|
3072
|
+
? classPrototypeView(lowerer, expr.arguments.nodes[1], loc)
|
|
3073
|
+
: null;
|
|
2858
3074
|
for (const [index, arg] of expr.arguments.nodes.slice(0, classArgs).entries()) {
|
|
2859
|
-
if (index === 1 && builtinBase !== null)
|
|
3075
|
+
if (index === 1 && (builtinBase !== null || superView !== null))
|
|
2860
3076
|
continue;
|
|
2861
3077
|
if (lowerer.mapTypeOf(lowerer.typeOf(arg))?.kind === "classval")
|
|
2862
3078
|
lowerer.noLowering(`util.${member} over a class constructor`, arg, member === "inherits"
|
|
@@ -2881,7 +3097,9 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2881
3097
|
for (const arg of expr.arguments.nodes.slice(arity))
|
|
2882
3098
|
stmts.push({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc });
|
|
2883
3099
|
const type = fn === "util.inherits" ? VOID : DYN;
|
|
2884
|
-
const result =
|
|
3100
|
+
const result = superView
|
|
3101
|
+
? { kind: "libCall", fn: "util.inheritsPrototype", args: [...args, superView], type, loc }
|
|
3102
|
+
: { kind: "libCall", fn, args, type, loc };
|
|
2885
3103
|
return { kind: "seqExpr", stmts, result, type: result.type, loc };
|
|
2886
3104
|
}
|
|
2887
3105
|
/** Whether the slot receiving a callbackify wrapper declares a callback
|