@scriptc/compiler 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +270 -72
- package/ambient/scriptc-overrides.d.ts +21 -0
- package/dist/backend/executable-features.js +3 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +2 -1
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.js +11 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +9 -0
- package/dist/backend/lld.js +48 -0
- package/dist/backend/lld.js.map +1 -0
- package/dist/backend/lld.test.d.ts +1 -0
- package/dist/backend/lld.test.js +53 -0
- package/dist/backend/lld.test.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.d.ts +11 -1
- package/dist/backend/llvm/appended-array-literals.js +29 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/blocks.js +10 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +13 -4
- package/dist/backend/llvm/bytes-alias.js +16 -5
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-bounds.d.ts +5 -1
- package/dist/backend/llvm/bytes-bounds.js +199 -2
- package/dist/backend/llvm/bytes-bounds.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +45 -3
- package/dist/backend/llvm/bytes-loop-versions.js +244 -20
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +18 -6
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +8 -2
- package/dist/backend/llvm/call-lifetimes.js +87 -18
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +132 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +3 -2
- package/dist/backend/llvm/classes.js +4 -4
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +14 -2
- package/dist/backend/llvm/counted-loops.js +54 -5
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +42 -1
- package/dist/backend/llvm/debug-info.js +72 -6
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.js +2 -2
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +69 -8
- package/dist/backend/llvm/dyn.js +396 -49
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +30 -16
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +8 -4
- package/dist/backend/llvm/emit-journal.js +75 -5
- package/dist/backend/llvm/emit-journal.js.map +1 -1
- package/dist/backend/llvm/emit-module.d.ts +4 -0
- package/dist/backend/llvm/emit-module.js +74 -29
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +297 -28
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +144 -13
- package/dist/backend/llvm/emitter.js +523 -92
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +11 -2
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +11 -13
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +6 -4
- package/dist/backend/llvm/expr-bytes.js +45 -16
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +13 -11
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +11 -0
- package/dist/backend/llvm/expr-containers.js +101 -9
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +3 -0
- package/dist/backend/llvm/expr-control.js +83 -0
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
- package/dist/backend/llvm/expr-dynamic.js +22 -4
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +121 -14
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +111 -26
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/forked-analysis.d.ts +8 -0
- package/dist/backend/llvm/forked-analysis.js +43 -0
- package/dist/backend/llvm/forked-analysis.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +12 -0
- package/dist/backend/llvm/integer-values.js +69 -5
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/integer-views.d.ts +2 -1
- package/dist/backend/llvm/integer-views.js +12 -1
- package/dist/backend/llvm/integer-views.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +4 -0
- package/dist/backend/llvm/js-ic.js +133 -15
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +1 -0
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +6 -1
- package/dist/backend/llvm/lazy-captures.js +10 -5
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.d.ts +5 -0
- package/dist/backend/llvm/lib-abi.js +19 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +249 -33
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.d.ts +10 -0
- package/dist/backend/llvm/lib-filesystem.js +32 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +2 -2
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +2 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +48 -1
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +64 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +28 -3
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +4 -1
- package/dist/backend/llvm/loop-array-borrows.js +11 -5
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +5 -3
- package/dist/backend/llvm/map-entry-fusion.js +20 -11
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.test.js +14 -6
- package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +16 -6
- package/dist/backend/llvm/map-number-lookup.js +41 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +70 -2
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +25 -2
- package/dist/backend/llvm/map-read-lifetimes.js +136 -6
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +8 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +5 -0
- package/dist/backend/llvm/nullable-unions.js +29 -2
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +25 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/publish.js +3 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-union-keys.test.d.ts +1 -0
- package/dist/backend/llvm/record-union-keys.test.js +161 -0
- package/dist/backend/llvm/record-union-keys.test.js.map +1 -0
- package/dist/backend/llvm/reference-effects.js +3 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +4 -5
- package/dist/backend/llvm/shapes.js +106 -58
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +14 -2
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +50 -3
- package/dist/backend/llvm/speculative-integers.js +411 -24
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +103 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split.d.ts +10 -1
- package/dist/backend/llvm/split.js +243 -59
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +92 -13
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-captures.js +1 -5
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -2
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +13 -0
- package/dist/backend/llvm/string-reads.js +22 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +36 -2
- package/dist/backend/llvm/string-slices.js +308 -12
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +182 -3
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/string-unit-versions.d.ts +11 -0
- package/dist/backend/llvm/string-unit-versions.js +191 -0
- package/dist/backend/llvm/string-unit-versions.js.map +1 -0
- package/dist/backend/llvm/string-unit-versions.test.d.ts +1 -0
- package/dist/backend/llvm/string-unit-versions.test.js +117 -0
- package/dist/backend/llvm/string-unit-versions.test.js.map +1 -0
- package/dist/backend/llvm/test-boxed-unions.d.ts +5 -2
- package/dist/backend/llvm/test-boxed-unions.js +24 -8
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -1
- package/dist/backend/llvm/union-repr.d.ts +4 -3
- package/dist/backend/llvm/union-repr.js +6 -5
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +52 -0
- package/dist/backend/llvm/unwind-abi.js +498 -0
- package/dist/backend/llvm/unwind-abi.js.map +1 -0
- package/dist/backend/llvm/unwind-abi.test.d.ts +1 -0
- package/dist/backend/llvm/unwind-abi.test.js +255 -0
- package/dist/backend/llvm/unwind-abi.test.js.map +1 -0
- package/dist/backend/llvm/walkers.js +13 -0
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +14 -10
- package/dist/backend/llvm/wrapping-sums.js +31 -14
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/loop-polls.d.ts +6 -0
- package/dist/backend/loop-polls.js +24 -0
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/may-throw.js +8 -8
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +12 -2
- package/dist/backend/native/executable.js +48 -6
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +4 -3
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/program-shards.d.ts +2 -2
- package/dist/backend/native/program-shards.js +2 -2
- package/dist/backend/native/program-shards.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +5 -3
- package/dist/backend/native-codegen-core.js +13 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +3 -1
- package/dist/backend/native-codegen.js +4 -3
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +6 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +8 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +14 -0
- package/dist/backend/native-profile.js +28 -0
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +8 -1
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +11 -11
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +3 -1
- package/dist/backend/runtime-pack-core.js +2 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +17 -5
- package/dist/backend/runtime-pack-native.js +186 -14
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +160 -3
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +26 -0
- package/dist/backend/target-cpu.js +98 -0
- package/dist/backend/target-cpu.js.map +1 -0
- package/dist/backend/target-cpu.test.d.ts +1 -0
- package/dist/backend/target-cpu.test.js +38 -0
- package/dist/backend/target-cpu.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +4 -1
- package/dist/backend/vendor-archives.js +78 -4
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +3 -1
- package/dist/backend/vendor-inputs.js +3 -1
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +98 -12
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +25 -1
- package/dist/cli/usage.js +40 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +15 -6
- package/dist/compat/fetch-profile.js +519 -498
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +14 -0
- package/dist/contracts/int32-elements.js +2 -1
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +14 -3
- package/dist/coverage/report.js +216 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +25 -25
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +10 -1
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +19 -0
- package/dist/diagnostics/diagnostic.js +53 -2
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +54 -0
- package/dist/diagnostics/envelope.js +7 -1
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +15 -4
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +6 -0
- package/dist/executable/executable-cache.js +5 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +3 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +5 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +26 -2
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/decl-projection.js +105 -10
- package/dist/frontend/decl-projection.js.map +1 -1
- package/dist/frontend/fork-target.js +67 -1
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +43 -0
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +4 -1
- package/dist/frontend/input-tracker.js +42 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +45 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/abstract-equality.js +38 -1
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/argument-counts.d.ts +36 -0
- package/dist/frontend/lowering/argument-counts.js +201 -0
- package/dist/frontend/lowering/argument-counts.js.map +1 -0
- package/dist/frontend/lowering/array-values.d.ts +27 -0
- package/dist/frontend/lowering/array-values.js +112 -0
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +3 -0
- package/dist/frontend/lowering/binding-analysis.js +9 -3
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +13 -0
- package/dist/frontend/lowering/builtin-namespaces.js +238 -0
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -0
- package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
- package/dist/frontend/lowering/builtins/async-context.js +62 -3
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +4 -3
- package/dist/frontend/lowering/builtins/compression.js +86 -5
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +3 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.js +17 -1
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +19 -5
- package/dist/frontend/lowering/builtins/dates.js +163 -9
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +29 -4
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
- package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.d.ts +4 -0
- package/dist/frontend/lowering/builtins/fs-streams.js +24 -1
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.d.ts +4 -1
- package/dist/frontend/lowering/builtins/json.js +9 -3
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +6 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +23 -1
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +6 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +5 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +95 -4
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +1 -1
- package/dist/frontend/lowering/builtins/promises.js +293 -139
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
- package/dist/frontend/lowering/builtins/readline.js +22 -11
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.d.ts +4 -1
- package/dist/frontend/lowering/builtins/reflection.js +41 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +31 -2
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +4 -1
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/x509.d.ts +33 -0
- package/dist/frontend/lowering/builtins/x509.js +431 -0
- package/dist/frontend/lowering/builtins/x509.js.map +1 -0
- package/dist/frontend/lowering/call-arguments.js +44 -0
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +1 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
- package/dist/frontend/lowering/cjs-inline-require.js +308 -5
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-attributes.d.ts +7 -0
- package/dist/frontend/lowering/class-attributes.js +52 -10
- package/dist/frontend/lowering/class-attributes.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +23 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +288 -9
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +97 -26
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +71 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +25 -0
- package/dist/frontend/lowering/class-protocols.js +183 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +8 -0
- package/dist/frontend/lowering/class-prototypes.js +83 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +5 -0
- package/dist/frontend/lowering/class-to-primitive.js +79 -7
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +1 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +89 -10
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +4 -2
- package/dist/frontend/lowering/coercions/unions.js +13 -6
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
- package/dist/frontend/lowering/completion-callbacks.js +146 -0
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
- package/dist/frontend/lowering/containers/array-callbacks.js +58 -21
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +4 -1
- package/dist/frontend/lowering/containers/array-construction.js +107 -9
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +96 -8
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +346 -77
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
- package/dist/frontend/lowering/containers/bytes.js +453 -45
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +11 -1
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +12 -0
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +73 -25
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +4 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +8 -2
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/replacer-params.d.ts +37 -0
- package/dist/frontend/lowering/containers/replacer-params.js +294 -0
- package/dist/frontend/lowering/containers/replacer-params.js.map +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.d.ts +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js +61 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +2 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +7 -3
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -2
- package/dist/frontend/lowering/cycle-initialization.js +4 -1
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +14 -0
- package/dist/frontend/lowering/date-values.js +254 -0
- package/dist/frontend/lowering/date-values.js.map +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.js +16 -8
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +22 -6
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.js +1 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +0 -8
- package/dist/frontend/lowering/expressions/array-literals.js +125 -26
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +102 -26
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +129 -6
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +66 -4
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +2 -1
- package/dist/frontend/lowering/expressions/narrowing.js +8 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +8 -2
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +121 -34
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +76 -11
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +12 -1
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +37 -11
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/f64-handles.d.ts +8 -0
- package/dist/frontend/lowering/f64-handles.js +16 -0
- package/dist/frontend/lowering/f64-handles.js.map +1 -0
- package/dist/frontend/lowering/frozen-records.d.ts +5 -0
- package/dist/frontend/lowering/frozen-records.js +12 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +3 -0
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +30 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +17 -6
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
- package/dist/frontend/lowering/indexed-unions.js +401 -0
- package/dist/frontend/lowering/indexed-unions.js.map +1 -0
- package/dist/frontend/lowering/instantiation-path.d.ts +3 -2
- package/dist/frontend/lowering/instantiation-path.js.map +1 -1
- package/dist/frontend/lowering/instantiation-path.test.js +6 -4
- package/dist/frontend/lowering/instantiation-path.test.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +4 -2
- package/dist/frontend/lowering/iterator-adapters.js +26 -33
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-collection-types.d.ts +11 -0
- package/dist/frontend/lowering/js-collection-types.js +490 -0
- package/dist/frontend/lowering/js-collection-types.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.js +210 -32
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +104 -4
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +2 -2
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +14 -0
- package/dist/frontend/lowering/lower-assert.js +298 -29
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +3 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +116 -10
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +59 -7
- package/dist/frontend/lowering/lower-classes.js +668 -222
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +2 -1
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +5 -0
- package/dist/frontend/lowering/lower-exprs.js +254 -3
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +7 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +5 -4
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +299 -57
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +49 -22
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +3 -0
- package/dist/frontend/lowering/lower-namespaces.js +44 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.js +1 -1
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +126 -32
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -1
- package/dist/frontend/lowering/lower-stdlib.js +51 -37
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +393 -79
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +515 -121
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +82 -12
- package/dist/frontend/lowering/lowerer.js +317 -44
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +1 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +13 -0
- package/dist/frontend/lowering/module-namespace-elements.js +118 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
- package/dist/frontend/lowering/object-factory-new.js +20 -6
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/overload-choice.d.ts +33 -0
- package/dist/frontend/lowering/overload-choice.js +190 -0
- package/dist/frontend/lowering/overload-choice.js.map +1 -0
- package/dist/frontend/lowering/private-brands.d.ts +5 -0
- package/dist/frontend/lowering/private-brands.js +39 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +6 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +14 -3
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.js +2 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +7 -2
- package/dist/frontend/lowering/site-dependencies.js +0 -15
- package/dist/frontend/lowering/site-dependencies.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.test.js +7 -5
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.d.ts +7 -4
- package/dist/frontend/lowering/string-index-bounds.js +21 -7
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +1630 -1540
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +45 -2
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.d.ts +5 -2
- package/dist/frontend/lowering/union-narrow.js +6 -3
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.test.js +10 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
- package/dist/frontend/npm-static-namespace-defaults.d.ts +6 -0
- package/dist/frontend/npm-static-namespace-defaults.js +163 -0
- package/dist/frontend/npm-static-namespace-defaults.js.map +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.d.ts +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js +72 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +152 -111
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static.js +35 -32
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +7 -4
- package/dist/frontend/package-shims.js +39 -40
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +2 -2
- package/dist/frontend/pipeline-native.js +2 -2
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +19 -2
- package/dist/frontend/pipeline.js +103 -12
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +7 -1
- package/dist/frontend/program-analysis.js +8 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +28 -5
- package/dist/frontend/program.js +422 -76
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +2 -0
- package/dist/frontend/resolve.js +5 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +3 -0
- package/dist/frontend/services.js +31 -4
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +93 -0
- package/dist/frontend/shape-inference/analyze.js +3138 -0
- package/dist/frontend/shape-inference/analyze.js.map +1 -0
- package/dist/frontend/shape-inference/constant-graphs.d.ts +54 -0
- package/dist/frontend/shape-inference/constant-graphs.js +357 -0
- package/dist/frontend/shape-inference/constant-graphs.js.map +1 -0
- package/dist/frontend/shape-inference/domain.d.ts +32 -0
- package/dist/frontend/shape-inference/domain.js +104 -0
- package/dist/frontend/shape-inference/domain.js.map +1 -0
- package/dist/frontend/shape-inference/index.d.ts +7 -0
- package/dist/frontend/shape-inference/index.js +19 -0
- package/dist/frontend/shape-inference/index.js.map +1 -0
- package/dist/frontend/shape-inference/report.d.ts +21 -0
- package/dist/frontend/shape-inference/report.js +348 -0
- package/dist/frontend/shape-inference/report.js.map +1 -0
- package/dist/frontend/token-equivalence.d.ts +6 -0
- package/dist/frontend/token-equivalence.js +66 -9
- package/dist/frontend/token-equivalence.js.map +1 -1
- package/dist/frontend/token-equivalence.test.js +33 -1
- package/dist/frontend/token-equivalence.test.js.map +1 -1
- package/dist/frontend/ts7/checker-features.d.ts +15 -0
- package/dist/frontend/ts7/checker-features.js +45 -0
- package/dist/frontend/ts7/checker-features.js.map +1 -0
- package/dist/frontend/ts7/checker-features.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-features.test.js +40 -0
- package/dist/frontend/ts7/checker-features.test.js.map +1 -0
- package/dist/frontend/ts7/checker-server.d.ts +19 -0
- package/dist/frontend/ts7/checker-server.js +46 -0
- package/dist/frontend/ts7/checker-server.js.map +1 -0
- package/dist/frontend/ts7/checker-server.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-server.test.js +38 -0
- package/dist/frontend/ts7/checker-server.test.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.js +39 -13
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.test.js +40 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -1
- package/dist/frontend/ts7/native-api.d.ts +1 -0
- package/dist/frontend/ts7/native-api.js +25 -2
- package/dist/frontend/ts7/native-api.js.map +1 -1
- package/dist/frontend/ts7/native-process.d.ts +9 -2
- package/dist/frontend/ts7/native-process.js +22 -4
- package/dist/frontend/ts7/native-process.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +11 -0
- package/dist/frontend/ts7/program-host.js +36 -22
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +9 -0
- package/dist/frontend/ts7/semantic-json.js +25 -5
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +3 -0
- package/dist/frontend/ts7/semantic-model.js +8 -1
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +6 -1
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +1 -1
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/source-parser.js +3 -1
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/tsc-codes.js +10 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +18 -6
- package/dist/frontend/type-mapper.js +205 -44
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +44 -3
- package/dist/index.js +39 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +37 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -2
- package/dist/ir/builtin-signatures.js +5104 -4894
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +4 -2
- package/dist/ir/callback-specialization.js +24 -9
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.js +4 -2
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +12 -2
- package/dist/ir/char-unit-locals.js +400 -58
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/char-unit-locals.test.js +111 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -1
- package/dist/ir/constant-globals.js +18 -4
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +15 -0
- package/dist/ir/expression-inlining.js +166 -0
- package/dist/ir/expression-inlining.js.map +1 -0
- package/dist/ir/expression-inlining.test.d.ts +1 -0
- package/dist/ir/expression-inlining.test.js +123 -0
- package/dist/ir/expression-inlining.test.js.map +1 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +6 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +27 -6
- package/dist/ir/int32-arrays.js +106 -18
- package/dist/ir/int32-arrays.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +26 -1
- package/dist/ir/int32-slots.js +291 -5
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +38 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +5 -0
- package/dist/ir/integer-loop-facts.js +90 -1
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +14 -1
- package/dist/ir/integer-loops.js +107 -11
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +70 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.js +18 -2
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +64 -4
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +63 -11
- package/dist/ir/ir.js +47 -7
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +2 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +10 -3
- package/dist/ir/js-ic.js +14 -2
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +11 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +7 -0
- package/dist/ir/node-index.js +32 -0
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/receiver-readers.d.ts +6 -1
- package/dist/ir/receiver-readers.js +53 -28
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +15 -0
- package/dist/ir/row-pairs.js +373 -0
- package/dist/ir/row-pairs.js.map +1 -0
- package/dist/ir/row-pairs.test.d.ts +1 -0
- package/dist/ir/row-pairs.test.js +129 -0
- package/dist/ir/row-pairs.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +17 -4
- package/dist/ir/runtime-features.js +94 -13
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +15 -0
- package/dist/ir/scalar-records.js +301 -1
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +181 -1
- package/dist/ir/scalar-records.test.js.map +1 -1
- package/dist/ir/self-captures.js +8 -0
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/validate.js +78 -28
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +4 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +5 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +13 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/native/cache.d.ts +5 -1
- package/dist/native/cache.js +15 -3
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +6 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +3 -0
- package/dist/native/compiler.js +72 -26
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +87 -2
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/executable-cache-open.test.d.ts +1 -0
- package/dist/native/executable-cache-open.test.js +80 -0
- package/dist/native/executable-cache-open.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +43 -3
- package/dist/native/executable-cache.js +177 -36
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/executable-cache.test.js +103 -0
- package/dist/native/executable-cache.test.js.map +1 -1
- package/dist/native/prepare.d.ts +1 -1
- package/dist/native/prepare.js +49 -17
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +69 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.d.ts +1 -1
- package/dist/native/sanitizer.js +17 -3
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +4 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/classify.d.ts +14 -0
- package/dist/node-islands/classify.js +114 -0
- package/dist/node-islands/classify.js.map +1 -0
- package/dist/node-islands/detect.d.ts +13 -0
- package/dist/node-islands/detect.js +805 -0
- package/dist/node-islands/detect.js.map +1 -0
- package/dist/node-islands/detect.test.d.ts +1 -0
- package/dist/node-islands/detect.test.js +136 -0
- package/dist/node-islands/detect.test.js.map +1 -0
- package/dist/node-islands/origin.d.ts +21 -0
- package/dist/node-islands/origin.js +60 -0
- package/dist/node-islands/origin.js.map +1 -0
- package/dist/node-islands/policy.d.ts +49 -0
- package/dist/node-islands/policy.js +130 -0
- package/dist/node-islands/policy.js.map +1 -0
- package/dist/node-islands/report.d.ts +22 -0
- package/dist/node-islands/report.js +326 -0
- package/dist/node-islands/report.js.map +1 -0
- package/dist/node-islands/report.test.d.ts +1 -0
- package/dist/node-islands/report.test.js +228 -0
- package/dist/node-islands/report.test.js.map +1 -0
- package/dist/node-islands/rules.d.ts +20 -0
- package/dist/node-islands/rules.js +91 -0
- package/dist/node-islands/rules.js.map +1 -0
- package/dist/node-islands/scan.d.ts +53 -0
- package/dist/node-islands/scan.js +104 -0
- package/dist/node-islands/scan.js.map +1 -0
- package/dist/node-islands/summary.d.ts +78 -0
- package/dist/node-islands/summary.js +26 -0
- package/dist/node-islands/summary.js.map +1 -0
- package/dist/project-config.d.ts +50 -0
- package/dist/project-config.js +372 -0
- package/dist/project-config.js.map +1 -0
- package/dist/project-config.test.d.ts +1 -0
- package/dist/project-config.test.js +154 -0
- package/dist/project-config.test.js.map +1 -0
- package/dist/wasm/discover.js +6 -31
- package/dist/wasm/discover.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +21 -38
|
@@ -1,14 +1,17 @@
|
|
|
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";
|
|
6
7
|
import * as ts from "../ts7/adapter.js";
|
|
7
8
|
import { unsignedHex } from "../../format-integer.js";
|
|
9
|
+
import { jsFuncNameOf } from "./lowerer.js";
|
|
8
10
|
import { isJsSourceFile } from "../program.js";
|
|
9
|
-
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";
|
|
10
13
|
import { isSafeToDiscard, isSafeToRepeat } from "./expressions/evaluation-safety.js";
|
|
11
|
-
import { symbolFieldDisplayName } from "./symbol-fields.js";
|
|
14
|
+
import { symbolFieldDisplayName, TO_STRING_TAG_FIELD } from "./symbol-fields.js";
|
|
12
15
|
import { eventTargetRootOf } from "./lower-event-target.js";
|
|
13
16
|
import { dateRootOf } from "./builtins/date-classes.js";
|
|
14
17
|
import { lowerSystemErrorMap } from "./lower-system-errors.js";
|
|
@@ -646,11 +649,7 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
646
649
|
case "array":
|
|
647
650
|
return inspectSupport(lowerer, t.elem, visiting, out);
|
|
648
651
|
case "bytes":
|
|
649
|
-
|
|
650
|
-
// differently; the other element kinds are never Buffers.
|
|
651
|
-
return t.elem === "u8"
|
|
652
|
-
? "Uint8Array and Buffer values inside composites have no inspect lowering yet (Buffer's <Buffer ..> form vs Uint8Array's is not recorded in the static type here)"
|
|
653
|
-
: null;
|
|
652
|
+
return null;
|
|
654
653
|
case "record": {
|
|
655
654
|
if (visiting.has(t.shapeId)) {
|
|
656
655
|
out.recursive = true;
|
|
@@ -786,7 +785,10 @@ function inspectSupport(lowerer, t, visiting, out) {
|
|
|
786
785
|
}
|
|
787
786
|
// Generator objects print through their checked capsule: Node's
|
|
788
787
|
// `Object [Generator] {}`, or the tag of the iterator they implement.
|
|
788
|
+
// URLs and URLSearchParams print through their handles.
|
|
789
789
|
case "generator":
|
|
790
|
+
case "url":
|
|
791
|
+
case "searchParams":
|
|
790
792
|
return null;
|
|
791
793
|
default:
|
|
792
794
|
return `'${lowerer.fmt(t)}' values have no inspect lowering`;
|
|
@@ -819,6 +821,106 @@ function isNumberFlag(lowerer, t, v, loc) {
|
|
|
819
821
|
* with the depth budget `depth` — a direct scalar libCall or a call of
|
|
820
822
|
* the interned per-type helper. */
|
|
821
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) {
|
|
822
924
|
// A Dirent row renders through its dyn view: Node's `Dirent { ... }`
|
|
823
925
|
// with the Symbol(type) key.
|
|
824
926
|
if (t.kind === "record") {
|
|
@@ -866,9 +968,29 @@ export function inspectExpr(lowerer, t, value, recurse, depth, loc) {
|
|
|
866
968
|
loc,
|
|
867
969
|
};
|
|
868
970
|
}
|
|
869
|
-
|
|
971
|
+
// A Uint8Array, a Buffer and a DataView share the u8 representation
|
|
972
|
+
// and print differently: the view's own flags pick.
|
|
973
|
+
return {
|
|
974
|
+
kind: "libCall",
|
|
975
|
+
fn: "insp.bytes",
|
|
976
|
+
args: [value, recurse, depth],
|
|
977
|
+
type: STRING,
|
|
978
|
+
loc,
|
|
979
|
+
};
|
|
870
980
|
case "dyn":
|
|
871
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
|
+
};
|
|
872
994
|
case "generator":
|
|
873
995
|
return {
|
|
874
996
|
kind: "libCall",
|
|
@@ -1695,8 +1817,68 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1695
1817
|
// observable way — Node's inspect omits them entirely (verified),
|
|
1696
1818
|
// so a class whose only fields are private prints as `C {}`.
|
|
1697
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);
|
|
1698
1880
|
if (visible.length === 0) {
|
|
1699
|
-
body
|
|
1881
|
+
body.push(ret(named(display === "" ? "{}" : `${display} {}`, after(" {}"))));
|
|
1700
1882
|
break;
|
|
1701
1883
|
}
|
|
1702
1884
|
const get = (field, type) => ({
|
|
@@ -1707,7 +1889,15 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1707
1889
|
type,
|
|
1708
1890
|
loc,
|
|
1709
1891
|
});
|
|
1710
|
-
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());
|
|
1711
1901
|
// def.fields carries layout order: the base chain first, then own —
|
|
1712
1902
|
// exactly the own-property insertion order of a constructor that
|
|
1713
1903
|
// assigns in declaration order (SEMANTICS.md 36's stance). SYMBOL-
|
|
@@ -1728,7 +1918,7 @@ function inspectHelper(lowerer, t, loc) {
|
|
|
1728
1918
|
const key = symNames.has(f.name) ? symbolFieldDisplayName(f.name) : inspectKey(f.name);
|
|
1729
1919
|
body.push(entry(concatAll([strLit(`${key}: `, loc), child(f.type, get(f.name, f.type))], loc), boolLit(false, loc)));
|
|
1730
1920
|
}
|
|
1731
|
-
body.push(ret(end(strLit("", loc),
|
|
1921
|
+
body.push(ret(end(strLit("", loc), named(display === "" ? "{" : `${display} {`, after(" {")), strLit("}", loc), false, boolLit(false, loc))));
|
|
1732
1922
|
break;
|
|
1733
1923
|
}
|
|
1734
1924
|
default:
|
|
@@ -1957,15 +2147,17 @@ export function lowerConsoleInspectArg(lowerer, node, value, surface, loc) {
|
|
|
1957
2147
|
lowerer.unsupported("SC1090", node, `${surface} of '${tname}' values (Buffer and the numeric typed arrays are the lowered byte renderings; DataView has none yet)`);
|
|
1958
2148
|
}
|
|
1959
2149
|
if (!isBufferTypeName(tname)) {
|
|
2150
|
+
// A u8 value the checker types as a Uint8Array may still hold a
|
|
2151
|
+
// Buffer, which Node prints as one: the view's flags pick.
|
|
1960
2152
|
return {
|
|
1961
2153
|
kind: "libCall",
|
|
1962
|
-
fn: "insp.typedArray",
|
|
2154
|
+
fn: t.elem === "u8" ? "insp.bytes" : "insp.typedArray",
|
|
1963
2155
|
args: [value, numLit(0, loc), numLit(2, loc)],
|
|
1964
2156
|
type: STRING,
|
|
1965
2157
|
loc,
|
|
1966
2158
|
};
|
|
1967
2159
|
}
|
|
1968
|
-
return
|
|
2160
|
+
return { kind: "libCall", fn: "insp.buffer", args: [value], type: STRING, loc };
|
|
1969
2161
|
}
|
|
1970
2162
|
if (t.kind === "void") {
|
|
1971
2163
|
// Node prints "undefined" for a void call's result; a void expression
|
|
@@ -2076,35 +2268,49 @@ function parseInspectOptions(lowerer, node, recursive, dir = false) {
|
|
|
2076
2268
|
}
|
|
2077
2269
|
/** A render under non-default breakLength/compact/sorted: the value is evaluated
|
|
2078
2270
|
* first, the layout applies to this render only, and the defaults return
|
|
2079
|
-
*
|
|
2080
|
-
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) {
|
|
2081
2276
|
if (options.breakLength === 80 && options.compact === 3 && !options.sorted)
|
|
2082
2277
|
return render(value);
|
|
2083
|
-
const
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
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
|
+
},
|
|
2092
2292
|
loc,
|
|
2093
|
-
}
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
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 };
|
|
2108
2314
|
}
|
|
2109
2315
|
/** `util.inspect(fn)` / `util.inspect(Cls)` over a DIRECT identifier
|
|
2110
2316
|
* naming a declared function or class: the name is compile-time truth,
|
|
@@ -2132,6 +2338,13 @@ function directCallableInspect(lowerer, node, loc) {
|
|
|
2132
2338
|
const decl = sym.declarations[0];
|
|
2133
2339
|
if (!decl)
|
|
2134
2340
|
return null;
|
|
2341
|
+
// A JavaScript function can hold own properties (`f.x = 1`, computed
|
|
2342
|
+
// keys), which the runtime walk prints after its name.
|
|
2343
|
+
if (isJsSourceFile(node.getSourceFile())) {
|
|
2344
|
+
const type = lowerer.mapTypeOf(lowerer.typeOf(node));
|
|
2345
|
+
if (type?.kind === "func" && lowerer.dynConvertible(type))
|
|
2346
|
+
return null;
|
|
2347
|
+
}
|
|
2135
2348
|
if (ts.isFunctionDeclaration(decl) && decl.name) {
|
|
2136
2349
|
return strLit(`[Function: ${decl.name.text}]`, loc);
|
|
2137
2350
|
}
|
|
@@ -2175,7 +2388,15 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
2175
2388
|
? `[Function: ${valueNode.name.text}]`
|
|
2176
2389
|
: "[Function (anonymous)]", loc);
|
|
2177
2390
|
}
|
|
2178
|
-
|
|
2391
|
+
let value = lowerer.lowerExpr(valueNode);
|
|
2392
|
+
// A JavaScript function renders through the runtime walk, which prints
|
|
2393
|
+
// its own properties after its name.
|
|
2394
|
+
if (value.type.kind === "func" &&
|
|
2395
|
+
isJsSourceFile(valueNode.getSourceFile()) &&
|
|
2396
|
+
lowerer.dynConvertible(value.type)) {
|
|
2397
|
+
const name = jsFuncNameOf(valueNode);
|
|
2398
|
+
value = { kind: "dynFrom", value, type: DYN, ...(name !== null ? { fnName: name } : {}), loc };
|
|
2399
|
+
}
|
|
2179
2400
|
if (value.type.kind === "bytes") {
|
|
2180
2401
|
// One runtime representation serves Buffer AND Uint8Array; their
|
|
2181
2402
|
// renderings differ (<Buffer aa> vs Uint8Array(1) [ 170 ]), so the
|
|
@@ -2193,16 +2414,18 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
2193
2414
|
if (!isBuffer) {
|
|
2194
2415
|
// A numeric typed array: Uint8Array(n) [ ... ] under the depth and
|
|
2195
2416
|
// layout options.
|
|
2196
|
-
return withInspectLayout(lowerer, options, value, (input) => ({
|
|
2417
|
+
return withInspectLayout(lowerer, options, value, "typedArray", (input) => ({
|
|
2197
2418
|
kind: "libCall",
|
|
2198
|
-
fn: "
|
|
2419
|
+
fn: value.type.kind === "bytes" && value.type.elem === "u8"
|
|
2420
|
+
? "insp.bytes"
|
|
2421
|
+
: "insp.typedArray",
|
|
2199
2422
|
args: [input, numLit(0, loc), numLit(options.depth, loc)],
|
|
2200
2423
|
type: STRING,
|
|
2201
2424
|
loc,
|
|
2202
2425
|
}), loc);
|
|
2203
2426
|
}
|
|
2204
2427
|
// Buffers render fully at any depth and on one line (custom inspect).
|
|
2205
|
-
return
|
|
2428
|
+
return { kind: "libCall", fn: "insp.buffer", args: [value], type: STRING, loc };
|
|
2206
2429
|
}
|
|
2207
2430
|
const walk = { recursive: false };
|
|
2208
2431
|
const reason = inspectSupport(lowerer, value.type, new Set(), walk);
|
|
@@ -2212,7 +2435,7 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
2212
2435
|
const options = parseInspectOptions(lowerer, optionsNode, walk.recursive, dir);
|
|
2213
2436
|
const depth = options.depth;
|
|
2214
2437
|
if (dir && value.type.kind === "dyn") {
|
|
2215
|
-
return withInspectLayout(lowerer, options, value, (input) => ({
|
|
2438
|
+
return withInspectLayout(lowerer, options, value, "dirDyn", (input) => ({
|
|
2216
2439
|
kind: "libCall",
|
|
2217
2440
|
fn: "console.dirDyn",
|
|
2218
2441
|
args: [input, numLit(depth, loc)],
|
|
@@ -2220,7 +2443,7 @@ export function lowerInspectValue(lowerer, valueNode, optionsNode, loc, dir) {
|
|
|
2220
2443
|
loc,
|
|
2221
2444
|
}), loc);
|
|
2222
2445
|
}
|
|
2223
|
-
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);
|
|
2224
2447
|
}
|
|
2225
2448
|
/* ── util.format / util.formatWithOptions ────────────────────────────── */
|
|
2226
2449
|
/** One argument as format's %s conversion (Node: numbers via
|
|
@@ -2283,10 +2506,21 @@ function formatSArg(lowerer, node, depth, loc) {
|
|
|
2283
2506
|
return inspectExpr(lowerer, t, value, numLit(0, loc), numLit(depth, loc), loc);
|
|
2284
2507
|
}
|
|
2285
2508
|
/** %O (depth 2) / %o (showHidden, depth 4) — inspect with the spec's
|
|
2286
|
-
* option deltas
|
|
2287
|
-
*
|
|
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). */
|
|
2288
2513
|
function formatOArg(lowerer, node, depth, loc) {
|
|
2289
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
|
+
}
|
|
2290
2524
|
if (value.type.kind === "bytes") {
|
|
2291
2525
|
lowerer.noLowering(`util.format %${depth === 4 ? "o" : "O"} of typed-array values`, node, "pass util.inspect(buf) explicitly");
|
|
2292
2526
|
}
|
|
@@ -2294,8 +2528,8 @@ function formatOArg(lowerer, node, depth, loc) {
|
|
|
2294
2528
|
const reason = inspectSupport(lowerer, value.type, new Set(), walk);
|
|
2295
2529
|
if (reason !== null)
|
|
2296
2530
|
lowerer.noLowering(`util.format %${depth === 4 ? "o" : "O"} of '${lowerer.fmt(value.type)}' values`, node, reason);
|
|
2297
|
-
if (depth === 4 &&
|
|
2298
|
-
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");
|
|
2299
2533
|
}
|
|
2300
2534
|
return inspectExpr(lowerer, value.type, value, numLit(0, loc), numLit(depth, loc), loc);
|
|
2301
2535
|
}
|
|
@@ -2648,9 +2882,10 @@ export function lowerFormatCall(lowerer, expr, loc, withOptions, argNodesOverrid
|
|
|
2648
2882
|
return concatAll(parts, loc);
|
|
2649
2883
|
}
|
|
2650
2884
|
/** Arrays anywhere in the tree — the %o (showHidden) gate. */
|
|
2651
|
-
function
|
|
2885
|
+
function typeTreeHasHidden(lowerer, t, visiting) {
|
|
2652
2886
|
switch (t.kind) {
|
|
2653
2887
|
case "array":
|
|
2888
|
+
case "dyn":
|
|
2654
2889
|
return true;
|
|
2655
2890
|
case "record": {
|
|
2656
2891
|
if (visiting.has(t.shapeId))
|
|
@@ -2659,23 +2894,23 @@ function typeTreeHasArray(lowerer, t, visiting) {
|
|
|
2659
2894
|
const shape = lowerer.shapes.get(t.shapeId);
|
|
2660
2895
|
if (shape?.tuple)
|
|
2661
2896
|
return true;
|
|
2662
|
-
return (shape?.fields ?? []).some((f) =>
|
|
2897
|
+
return (shape?.fields ?? []).some((f) => typeTreeHasHidden(lowerer, f.type, visiting));
|
|
2663
2898
|
}
|
|
2664
2899
|
case "map":
|
|
2665
|
-
return (
|
|
2900
|
+
return (typeTreeHasHidden(lowerer, t.key, visiting) || typeTreeHasHidden(lowerer, t.value, visiting));
|
|
2666
2901
|
case "set":
|
|
2667
|
-
return
|
|
2902
|
+
return typeTreeHasHidden(lowerer, t.elem, visiting);
|
|
2668
2903
|
case "union": {
|
|
2669
2904
|
if (visiting.has(t.unionId))
|
|
2670
2905
|
return false;
|
|
2671
2906
|
visiting.add(t.unionId);
|
|
2672
|
-
return (lowerer.unions.get(t.unionId)?.arms ?? []).some((a) =>
|
|
2907
|
+
return (lowerer.unions.get(t.unionId)?.arms ?? []).some((a) => typeTreeHasHidden(lowerer, a, visiting));
|
|
2673
2908
|
}
|
|
2674
2909
|
case "object": {
|
|
2675
2910
|
if (visiting.has(t.className))
|
|
2676
2911
|
return false;
|
|
2677
2912
|
visiting.add(t.className);
|
|
2678
|
-
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));
|
|
2679
2914
|
}
|
|
2680
2915
|
case "bytes":
|
|
2681
2916
|
return true;
|
|
@@ -2831,8 +3066,13 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2831
3066
|
const builtinBase = member === "inherits" && expr.arguments.nodes[1] !== undefined
|
|
2832
3067
|
? builtinClassKindOf(lowerer, expr.arguments.nodes[1])
|
|
2833
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;
|
|
2834
3074
|
for (const [index, arg] of expr.arguments.nodes.slice(0, classArgs).entries()) {
|
|
2835
|
-
if (index === 1 && builtinBase !== null)
|
|
3075
|
+
if (index === 1 && (builtinBase !== null || superView !== null))
|
|
2836
3076
|
continue;
|
|
2837
3077
|
if (lowerer.mapTypeOf(lowerer.typeOf(arg))?.kind === "classval")
|
|
2838
3078
|
lowerer.noLowering(`util.${member} over a class constructor`, arg, member === "inherits"
|
|
@@ -2857,7 +3097,9 @@ function lowerUtilCallableCall(lowerer, expr, member, loc) {
|
|
|
2857
3097
|
for (const arg of expr.arguments.nodes.slice(arity))
|
|
2858
3098
|
stmts.push({ kind: "exprStmt", expr: lowerer.lowerExpr(arg), loc });
|
|
2859
3099
|
const type = fn === "util.inherits" ? VOID : DYN;
|
|
2860
|
-
const result =
|
|
3100
|
+
const result = superView
|
|
3101
|
+
? { kind: "libCall", fn: "util.inheritsPrototype", args: [...args, superView], type, loc }
|
|
3102
|
+
: { kind: "libCall", fn, args, type, loc };
|
|
2861
3103
|
return { kind: "seqExpr", stmts, result, type: result.type, loc };
|
|
2862
3104
|
}
|
|
2863
3105
|
/** Whether the slot receiving a callbackify wrapper declares a callback
|