@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
|
@@ -30,8 +30,11 @@ import { jsFuncNameOf, own } from "./lowerer.js";
|
|
|
30
30
|
import { NARROW_FIRST } from "./surfaces.js";
|
|
31
31
|
import { inspectExpr, typeReachesCycle, typeReachesFunction, typeReachesItself, } from "./lower-inspect.js";
|
|
32
32
|
import { abstractEqualityExpr, abstractEqualitySupported } from "./abstract-equality.js";
|
|
33
|
-
import { BOOL, CAUGHT, DYN, DYN_HANDLE_KINDS, F64, REGEX, RUNTIME_ERROR_CLASSES, STRING, VOID, isUnitType, typeEquals, typeKey, } from "../../ir/ir.js";
|
|
33
|
+
import { BOOL, CAUGHT, DYN, DYN_HANDLE_KINDS, F64, REGEX, RUNTIME_ERROR_CLASSES, STRING, VOID, isDynTypedRefType, isUnitType, typeEquals, typeKey, } from "../../ir/ir.js";
|
|
34
34
|
import { boolLit, countedFor, dynUndefinedExpr, numLit, strLit, varRef } from "../../ir/build.js";
|
|
35
|
+
import { everyExpr } from "../../ir/traverse.js";
|
|
36
|
+
import { checkedClassInstanceOf } from "./class-construction.js";
|
|
37
|
+
import { isJsSourceFile } from "../program.js";
|
|
35
38
|
/** node:assert/strict binds the loose NAMES to the strict comparisons —
|
|
36
39
|
* Node's own aliasing (`strict.equal === assert.strictEqual`). */
|
|
37
40
|
const STRICT_ALIASES = {
|
|
@@ -47,6 +50,56 @@ function canonicalAssertMember(module, member) {
|
|
|
47
50
|
return own(STRICT_ALIASES, member) ?? member;
|
|
48
51
|
return member;
|
|
49
52
|
}
|
|
53
|
+
/** The assert methods that are function values (scr_assert_method_value). */
|
|
54
|
+
const ASSERT_FUNCTION_VALUES = new Set([
|
|
55
|
+
"ok",
|
|
56
|
+
"fail",
|
|
57
|
+
"equal",
|
|
58
|
+
"notEqual",
|
|
59
|
+
"strictEqual",
|
|
60
|
+
"notStrictEqual",
|
|
61
|
+
"deepEqual",
|
|
62
|
+
"notDeepEqual",
|
|
63
|
+
"deepStrictEqual",
|
|
64
|
+
"notDeepStrictEqual",
|
|
65
|
+
"partialDeepStrictEqual",
|
|
66
|
+
"ifError",
|
|
67
|
+
]);
|
|
68
|
+
/** The assert method a `const` binding holds (`const ok = assert.ok`,
|
|
69
|
+
* `const eq = strictEqual`), or null. */
|
|
70
|
+
export function assertFunctionAliasOf(lowerer, ident) {
|
|
71
|
+
const decl = lowerer.checker.getSymbolAtLocation(ident)?.valueDeclaration;
|
|
72
|
+
if (!decl ||
|
|
73
|
+
!ts.isVariableDeclaration(decl) ||
|
|
74
|
+
!ts.isIdentifier(decl.name) ||
|
|
75
|
+
!ts.isVariableDeclarationList(decl.parent) ||
|
|
76
|
+
(decl.parent.flags & ts.NodeFlags.Const) === 0 ||
|
|
77
|
+
!decl.initializer)
|
|
78
|
+
return null;
|
|
79
|
+
let init = decl.initializer;
|
|
80
|
+
while (ts.isParenthesizedExpression(init))
|
|
81
|
+
init = init.expression;
|
|
82
|
+
const bi = ts.isPropertyAccessExpression(init)
|
|
83
|
+
? lowerer.builtinMemberOf(init)
|
|
84
|
+
: ts.isIdentifier(init)
|
|
85
|
+
? lowerer.builtinImportOf(init)
|
|
86
|
+
: null;
|
|
87
|
+
if (!bi || (bi.module !== "assert" && bi.module !== "assert/strict"))
|
|
88
|
+
return null;
|
|
89
|
+
return ASSERT_FUNCTION_VALUES.has(canonicalAssertMember(bi.module, bi.member)) ? bi : null;
|
|
90
|
+
}
|
|
91
|
+
/** An assert method read as a value (`emitter.on("x", assert.fail)`,
|
|
92
|
+
* `const eq = assert.strictEqual`): an untyped function that asserts as
|
|
93
|
+
* the method does, the same value for every read. Null for other
|
|
94
|
+
* members. */
|
|
95
|
+
export function assertFunctionValue(bi, loc) {
|
|
96
|
+
if (bi.module !== "assert" && bi.module !== "assert/strict")
|
|
97
|
+
return null;
|
|
98
|
+
const member = canonicalAssertMember(bi.module, bi.member);
|
|
99
|
+
if (!ASSERT_FUNCTION_VALUES.has(member))
|
|
100
|
+
return null;
|
|
101
|
+
return { kind: "libCall", fn: "assert.methodValue", args: [strLit(member, loc)], type: DYN, loc };
|
|
102
|
+
}
|
|
50
103
|
/* Node's AssertionError carries actual, expected and operator. Where the
|
|
51
104
|
* verdict is computed in compiled code, the failure branch records them
|
|
52
105
|
* (assert.record) before the throwing call, so a passing assertion boxes
|
|
@@ -116,20 +169,122 @@ function requireStatementPosition(lowerer, call, what) {
|
|
|
116
169
|
return;
|
|
117
170
|
lowerer.noLowering(`using the result of ${what}`, call, "the result is void — call it as its own statement");
|
|
118
171
|
}
|
|
172
|
+
/** The message the runtime reads from a registered value
|
|
173
|
+
* (SCR_ASSERT_VALUE_MESSAGE in scr_assert.h). */
|
|
174
|
+
const VALUE_MESSAGE = "\u0001scriptc:assert-message-value";
|
|
175
|
+
/** A message argument that is not a string, met while one assertion
|
|
176
|
+
* lowers (withValueMessage). `fail` marks assert.fail's message, which
|
|
177
|
+
* Node uses for every value but null and undefined. */
|
|
178
|
+
let valueMessage = null;
|
|
119
179
|
/** The optional trailing message argument: Node accepts a string or an
|
|
120
180
|
* Error (throwing the Error itself) — the STRING form lowers; a literal
|
|
121
181
|
* `undefined` counts as omitted (Node's `message == null` test). Returns
|
|
122
182
|
* the libCall's (msg, hasMsg) pair — a "" dummy when omitted, so the
|
|
123
|
-
* runtime can distinguish an omitted message from an empty one.
|
|
124
|
-
|
|
183
|
+
* runtime can distinguish an omitted message from an empty one. Any other
|
|
184
|
+
* value that crosses into the checked-dynamic tree (an untyped
|
|
185
|
+
* `failures.join('')`, an Error) is registered with the runtime at the call
|
|
186
|
+
* instead (withValueMessage). */
|
|
187
|
+
function lowerMessageArg(lowerer, node, loc, fail = false) {
|
|
125
188
|
if (!node || (ts.isIdentifier(node) && node.text === "undefined")) {
|
|
126
189
|
return { msg: { kind: "strLit", value: "", type: STRING, loc }, hasMsg: boolLit(false, loc) };
|
|
127
190
|
}
|
|
128
191
|
const msg = lowerer.lowerExpr(node);
|
|
129
|
-
if (msg.type.kind
|
|
192
|
+
if (msg.type.kind === "string")
|
|
193
|
+
return { msg, hasMsg: boolLit(true, loc) };
|
|
194
|
+
const value = valueMessage === null && (msg.type.kind === "dyn" || lowerer.dynConvertible(msg.type))
|
|
195
|
+
? lowerer.coerceToExpected(msg, DYN)
|
|
196
|
+
: null;
|
|
197
|
+
if (value === null || value.type.kind !== "dyn") {
|
|
130
198
|
lowerer.noLowering(`assert messages of type '${lowerer.fmt(msg.type)}'`, node, "only string messages lower (Node also accepts an Error to throw — construct and throw it directly)");
|
|
131
199
|
}
|
|
132
|
-
|
|
200
|
+
const has = lowerer.declareHiddenLocal("assert.hasMessage", BOOL);
|
|
201
|
+
const text = lowerer.declareHiddenLocal("assert.messageText", STRING);
|
|
202
|
+
valueMessage = { value, has: has.id, text: text.id, fail };
|
|
203
|
+
return { msg: varRef(text.id, STRING, loc), hasMsg: varRef(has.id, BOOL, loc) };
|
|
204
|
+
}
|
|
205
|
+
/** Lowers one assertion; a message value met on the way is evaluated after
|
|
206
|
+
* the assertion's other arguments, as Node evaluates them. A null or
|
|
207
|
+
* undefined message is omitted (Node's `message == null` test); a truthy
|
|
208
|
+
* one is registered with the runtime, which the failure reads; any other
|
|
209
|
+
* value is the empty message, which Node's comparison diffs treat as no
|
|
210
|
+
* message too (createErrDiff tests the message's truthiness). */
|
|
211
|
+
function withValueMessage(lowerer, expr, loc, lower) {
|
|
212
|
+
const outer = valueMessage;
|
|
213
|
+
valueMessage = null;
|
|
214
|
+
try {
|
|
215
|
+
const lowered = lower();
|
|
216
|
+
const message = valueMessage;
|
|
217
|
+
if (lowered === null || message === null)
|
|
218
|
+
return lowered;
|
|
219
|
+
// assert.ok's statements evaluate the value first; its call is last.
|
|
220
|
+
const before = lowered.kind === "seqExpr" ? lowered.stmts : [];
|
|
221
|
+
const call = lowered.kind === "seqExpr" ? lowered.result : lowered;
|
|
222
|
+
if (call.kind !== "libCall") {
|
|
223
|
+
lowerer.noLowering("assert messages that are not strings in this assertion form", expr, "pass a string message");
|
|
224
|
+
}
|
|
225
|
+
const stmts = [...before];
|
|
226
|
+
// An argument computed from the message (assert.fail's generated flag)
|
|
227
|
+
// reads it after the declarations below; the others are evaluated first.
|
|
228
|
+
const readsMessage = (arg) => !everyExpr(arg, {
|
|
229
|
+
stmt: () => true,
|
|
230
|
+
expr: (e) => !(e.kind === "varRef" && (e.localId === message.has || e.localId === message.text)),
|
|
231
|
+
});
|
|
232
|
+
const args = call.args.map((arg, index) => readsMessage(arg) ? arg : stableValue(lowerer, stmts, arg, `assert.arg${index}`, loc));
|
|
233
|
+
const local = lowerer.declareHiddenLocal("assert.message", DYN);
|
|
234
|
+
const value = varRef(local.id, DYN, loc);
|
|
235
|
+
// The runtime reports a registered value: a truthy one for the other
|
|
236
|
+
// methods, any value but null and undefined for assert.fail (Node's
|
|
237
|
+
// `actual == null` test), whose other values read "Failed".
|
|
238
|
+
const registered = message.fail
|
|
239
|
+
? varRef(message.has, BOOL, loc)
|
|
240
|
+
: { kind: "dynTest", test: "truthy", value, type: BOOL, loc };
|
|
241
|
+
stmts.push({ kind: "varDecl", localId: local.id, init: message.value, loc }, {
|
|
242
|
+
kind: "varDecl",
|
|
243
|
+
localId: message.has,
|
|
244
|
+
init: { kind: "dynTest", test: "nullish", negated: true, value, type: BOOL, loc },
|
|
245
|
+
loc,
|
|
246
|
+
}, {
|
|
247
|
+
kind: "varDecl",
|
|
248
|
+
localId: message.text,
|
|
249
|
+
init: {
|
|
250
|
+
kind: "ternary",
|
|
251
|
+
cond: registered,
|
|
252
|
+
then: strLit(VALUE_MESSAGE, loc),
|
|
253
|
+
else_: strLit(message.fail ? "Failed" : "", loc),
|
|
254
|
+
type: STRING,
|
|
255
|
+
loc,
|
|
256
|
+
},
|
|
257
|
+
loc,
|
|
258
|
+
}, {
|
|
259
|
+
kind: "if",
|
|
260
|
+
cond: registered,
|
|
261
|
+
then: [
|
|
262
|
+
{
|
|
263
|
+
kind: "exprStmt",
|
|
264
|
+
expr: {
|
|
265
|
+
kind: "libCall",
|
|
266
|
+
fn: "assert.messageValue",
|
|
267
|
+
args: [value, { kind: "dynTest", test: "error", value, type: BOOL, loc }],
|
|
268
|
+
type: VOID,
|
|
269
|
+
loc,
|
|
270
|
+
},
|
|
271
|
+
loc,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
else_: null,
|
|
275
|
+
loc,
|
|
276
|
+
}, { kind: "exprStmt", expr: { ...call, args }, loc });
|
|
277
|
+
return {
|
|
278
|
+
kind: "seqExpr",
|
|
279
|
+
stmts,
|
|
280
|
+
result: { kind: "libCall", fn: "assert.messageClear", args: [], type: VOID, loc },
|
|
281
|
+
type: VOID,
|
|
282
|
+
loc,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
valueMessage = outer;
|
|
287
|
+
}
|
|
133
288
|
}
|
|
134
289
|
/** The module-function dispatch — the spoke's entry, called from both the
|
|
135
290
|
* named-import and namespace/default-import call paths. Null for other
|
|
@@ -138,6 +293,9 @@ function lowerMessageArg(lowerer, node, loc) {
|
|
|
138
293
|
export function lowerAssertModuleCall(lowerer, expr, bi, loc) {
|
|
139
294
|
if (bi.module !== "assert" && bi.module !== "assert/strict")
|
|
140
295
|
return null;
|
|
296
|
+
return withValueMessage(lowerer, expr, loc, () => lowerAssertMember(lowerer, expr, bi, loc));
|
|
297
|
+
}
|
|
298
|
+
function lowerAssertMember(lowerer, expr, bi, loc) {
|
|
141
299
|
switch (canonicalAssertMember(bi.module, bi.member)) {
|
|
142
300
|
case "ok":
|
|
143
301
|
return lowerAssertOk(lowerer, expr, loc);
|
|
@@ -707,7 +865,7 @@ export function lowerAssertDirectCall(lowerer, expr, loc) {
|
|
|
707
865
|
lowerer.unsupported("SC1013", expr, "calling a module namespace object (Node throws TypeError there — " +
|
|
708
866
|
'use the default import: import assert from "node:assert")');
|
|
709
867
|
}
|
|
710
|
-
return lowerAssertOk(lowerer, expr, loc);
|
|
868
|
+
return withValueMessage(lowerer, expr, loc, () => lowerAssertOk(lowerer, expr, loc));
|
|
711
869
|
}
|
|
712
870
|
/** assert(value[, message]) / assert.ok(value[, message]): the truthiness
|
|
713
871
|
* test over any condition-testable type; the generated message carries the
|
|
@@ -715,7 +873,24 @@ export function lowerAssertDirectCall(lowerer, expr, loc) {
|
|
|
715
873
|
* the same bytes at compile time). */
|
|
716
874
|
function lowerAssertOk(lowerer, expr, loc) {
|
|
717
875
|
requireStatementPosition(lowerer, expr, ts.getTextOfNode(expr.expression));
|
|
718
|
-
if (expr.arguments.nodes.length
|
|
876
|
+
if (expr.arguments.nodes.length === 0) {
|
|
877
|
+
// Node's message for a call without arguments.
|
|
878
|
+
const text = "No value argument passed to `assert.ok()`";
|
|
879
|
+
return {
|
|
880
|
+
kind: "seqExpr",
|
|
881
|
+
stmts: [recordOnFailure(lowerer, boolLit(true, loc), null, boolLit(true, loc), "==", loc)],
|
|
882
|
+
result: {
|
|
883
|
+
kind: "libCall",
|
|
884
|
+
fn: "assert.ok",
|
|
885
|
+
args: [boolLit(false, loc), strLit(text, loc), boolLit(true, loc)],
|
|
886
|
+
type: VOID,
|
|
887
|
+
loc,
|
|
888
|
+
},
|
|
889
|
+
type: VOID,
|
|
890
|
+
loc,
|
|
891
|
+
};
|
|
892
|
+
}
|
|
893
|
+
if (expr.arguments.nodes.length > 2) {
|
|
719
894
|
lowerer.noLowering(`${ts.getTextOfNode(expr.expression)} with ${expr.arguments.nodes.length} arguments`, expr, "the supported forms are assert(value) and assert(value, message)");
|
|
720
895
|
}
|
|
721
896
|
const valueNode = expr.arguments.nodes[0];
|
|
@@ -766,16 +941,27 @@ function lowerAssertFail(lowerer, expr, loc) {
|
|
|
766
941
|
}
|
|
767
942
|
else {
|
|
768
943
|
// Node's AssertionError sets generatedMessage to !message, so an
|
|
769
|
-
// empty custom message counts as generated.
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
loc
|
|
778
|
-
}
|
|
944
|
+
// empty custom message counts as generated. A message that is not a
|
|
945
|
+
// string is read from the hidden local that withValueMessage declares
|
|
946
|
+
// after these statements, so it is used as is.
|
|
947
|
+
const { msg: lowered, hasMsg } = lowerMessageArg(lowerer, msgNode, loc, true);
|
|
948
|
+
if (lowered.kind === "varRef" && hasMsg.kind === "varRef") {
|
|
949
|
+
// A value message: generated when Node reads "Failed" for null or
|
|
950
|
+
// undefined; the runtime sets the flag for a registered value.
|
|
951
|
+
msg = lowered;
|
|
952
|
+
generated = { kind: "unary", op: "!", operand: hasMsg, type: BOOL, loc };
|
|
953
|
+
}
|
|
954
|
+
else {
|
|
955
|
+
msg = stableValue(lowerer, stmts, lowered, "%assertFailMessage", loc);
|
|
956
|
+
generated = {
|
|
957
|
+
kind: "strEq",
|
|
958
|
+
negated: false,
|
|
959
|
+
left: msg,
|
|
960
|
+
right: strLit("", loc),
|
|
961
|
+
type: BOOL,
|
|
962
|
+
loc,
|
|
963
|
+
};
|
|
964
|
+
}
|
|
779
965
|
}
|
|
780
966
|
const falseLit = { kind: "boolLit", value: false, type: BOOL, loc };
|
|
781
967
|
stmts.push(recordOnFailure(lowerer, boolLit(true, loc), null, null, "fail", loc));
|
|
@@ -847,9 +1033,20 @@ function lowerAssertEqual(lowerer, expr, loc, negated, deep) {
|
|
|
847
1033
|
// would answer false where Node can answer true (the value's own
|
|
848
1034
|
// earlier crossing) — a miscompare, never lowered. Bytes fence both
|
|
849
1035
|
// ways (the dyn copy cannot carry the Buffer/Uint8Array brand the
|
|
850
|
-
// checker type knows);
|
|
851
|
-
//
|
|
852
|
-
|
|
1036
|
+
// checker type knows); everything non-convertible keeps the fence too.
|
|
1037
|
+
// A class instance crosses as a reference to the instance itself, so
|
|
1038
|
+
// strict compares are honest reference equality, between two instances
|
|
1039
|
+
// too (assert.strictEqual(e, e.setMaxListeners(1))).
|
|
1040
|
+
const instanceType = (t) => isDynTypedRefType(t) && !lowerer.isSubclassOf(t.className, "%Error");
|
|
1041
|
+
const instance = (e) => !deep &&
|
|
1042
|
+
(instanceType(e.type) ||
|
|
1043
|
+
(e.type.kind === "union" &&
|
|
1044
|
+
(lowerer.unions
|
|
1045
|
+
.get(e.type.unionId)
|
|
1046
|
+
?.arms.every((arm) => instanceType(arm) || isUnitType(arm)) ??
|
|
1047
|
+
false))) &&
|
|
1048
|
+
lowerer.dynConvertible(e.type);
|
|
1049
|
+
if (a.type.kind === "dyn" || b.type.kind === "dyn" || (instance(a) && instance(b))) {
|
|
853
1050
|
const box = (e, node) => {
|
|
854
1051
|
if (e.type.kind === "dyn")
|
|
855
1052
|
return e;
|
|
@@ -858,6 +1055,15 @@ function lowerAssertEqual(lowerer, expr, loc, negated, deep) {
|
|
|
858
1055
|
k === "f64" ||
|
|
859
1056
|
k === "string" ||
|
|
860
1057
|
k === "bool" ||
|
|
1058
|
+
// A union of scalars and units crosses by value, like its arms.
|
|
1059
|
+
(e.type.kind === "union" &&
|
|
1060
|
+
(lowerer.unions
|
|
1061
|
+
.get(e.type.unionId)
|
|
1062
|
+
?.arms.every((arm) => arm.kind === "f64" ||
|
|
1063
|
+
arm.kind === "string" ||
|
|
1064
|
+
arm.kind === "bool" ||
|
|
1065
|
+
isUnitType(arm)) ??
|
|
1066
|
+
false)) ||
|
|
861
1067
|
(k === "func" && lowerer.dynConvertible(e.type)) ||
|
|
862
1068
|
// Runtime handles cross by REFERENCE (identity preserved), so the
|
|
863
1069
|
// strict compare is honest: assert.strictEqual(this, server) —
|
|
@@ -873,6 +1079,9 @@ function lowerAssertEqual(lowerer, expr, loc, negated, deep) {
|
|
|
873
1079
|
// same). The deep walk compares the retained error data without
|
|
874
1080
|
// re-encoding and losing identity (SEMANTICS.md).
|
|
875
1081
|
(k === "object" && e.type.kind === "object" && e.type.className === "%Error") ||
|
|
1082
|
+
instance(e) ||
|
|
1083
|
+
// A symbol crosses as itself, so strict compares are identity.
|
|
1084
|
+
(!deep && k === "symbol") ||
|
|
876
1085
|
(deep && k !== "bytes" && k !== "object" && lowerer.dynConvertible(e.type)) ||
|
|
877
1086
|
// Under skipPrototype the prototype a class instance or Buffer
|
|
878
1087
|
// brand would carry is not compared.
|
|
@@ -1146,13 +1355,28 @@ function classifyThrowsExpected(lowerer, surface, node, loc) {
|
|
|
1146
1355
|
displayName: rec ? rec.lib : info.def.name.replace(/^%/, ""),
|
|
1147
1356
|
};
|
|
1148
1357
|
}
|
|
1149
|
-
if (
|
|
1150
|
-
expectedT?.kind === "func") {
|
|
1358
|
+
if (expectedT?.kind === "func") {
|
|
1151
1359
|
const value = lowerer.lowerExpr(node);
|
|
1360
|
+
// An untyped value there (a dynamic-tier function's result) is checked
|
|
1361
|
+
// at run time like any untyped expected value.
|
|
1362
|
+
if (value.type.kind === "jsval" || value.type.kind === "dyn") {
|
|
1363
|
+
const boxed = lowerer.coerceToExpected(value, DYN);
|
|
1364
|
+
if (boxed.type.kind === "dyn")
|
|
1365
|
+
return { form: "errValue", value: boxed };
|
|
1366
|
+
}
|
|
1367
|
+
// A JavaScript function accepts any argument; a typed one must take
|
|
1368
|
+
// unknown values (the caught value need not be an Error).
|
|
1152
1369
|
if (value.type.kind === "func" &&
|
|
1153
|
-
value.type.params.every((param) => param.kind === "dyn")
|
|
1370
|
+
(value.type.params.every((param) => param.kind === "dyn") ||
|
|
1371
|
+
isJsSourceFile(ts.getSourceFileOfNode(node))) &&
|
|
1154
1372
|
lowerer.dynConvertible(value.type)) {
|
|
1155
|
-
|
|
1373
|
+
// The boxed function carries its source name (Node's message names
|
|
1374
|
+
// a named validation function).
|
|
1375
|
+
const fnName = jsFuncNameOf(node);
|
|
1376
|
+
return {
|
|
1377
|
+
form: "predicate",
|
|
1378
|
+
value: { kind: "dynFrom", value, ...(fnName !== null ? { fnName } : {}), type: DYN, loc },
|
|
1379
|
+
};
|
|
1156
1380
|
}
|
|
1157
1381
|
lowerer.noLowering(`${surface} with this validation callback`, node, "use a callback accepting an unknown value, or a zero-parameter callback; its result is compared with true");
|
|
1158
1382
|
}
|
|
@@ -1200,7 +1424,9 @@ function classifyThrowsExpected(lowerer, surface, node, loc) {
|
|
|
1200
1424
|
// tracingChannel suite's shape): the value crosses as a dyn error and
|
|
1201
1425
|
// the runtime compares per Node's expectsError key walk. A
|
|
1202
1426
|
// checked-dynamic expected rides directly; a static %Error boxes.
|
|
1203
|
-
|
|
1427
|
+
// An untyped JavaScript value (a parameter) too: a function there is
|
|
1428
|
+
// checked at run time (assertThrowsHelper).
|
|
1429
|
+
if (expectedT?.kind === "dyn" || expectedT === null) {
|
|
1204
1430
|
const value = lowerer.lowerExpr(node);
|
|
1205
1431
|
if (value.type.kind === "dyn")
|
|
1206
1432
|
return { form: "errValue", value };
|
|
@@ -1503,6 +1729,33 @@ function assertThrowsHelper(lowerer, mode, recvType, recvIsPromise, expected, lo
|
|
|
1503
1729
|
}
|
|
1504
1730
|
return { e: strLit("", loc), has: false };
|
|
1505
1731
|
})();
|
|
1732
|
+
// expectedException's function branch: a function with a prototype that
|
|
1733
|
+
// the caught value is an instance of passes; anything else is called as
|
|
1734
|
+
// a validation function, whose result must be true.
|
|
1735
|
+
const validateStmts = (fn) => {
|
|
1736
|
+
const actual = () => ({ kind: "caughtToDyn", value: caughtRef(), type: DYN, loc });
|
|
1737
|
+
const prototype = {
|
|
1738
|
+
kind: "dynKeyGet",
|
|
1739
|
+
value: fn,
|
|
1740
|
+
key: strLit("prototype", loc),
|
|
1741
|
+
optional: true,
|
|
1742
|
+
type: DYN,
|
|
1743
|
+
loc,
|
|
1744
|
+
};
|
|
1745
|
+
return [
|
|
1746
|
+
ifStmt({ kind: "dynTest", test: "undefined", negated: true, value: prototype, type: BOOL, loc }, [
|
|
1747
|
+
ifStmt(checkedClassInstanceOf(lowerer, actual(), fn, "assert.throws against this native constructor is not supported yet", loc), [doReturn]),
|
|
1748
|
+
]),
|
|
1749
|
+
lib("assert.throwsValidate", [
|
|
1750
|
+
actual(),
|
|
1751
|
+
fn,
|
|
1752
|
+
strLit(mode === "rejects" ? "rejects" : "throws", loc),
|
|
1753
|
+
m(),
|
|
1754
|
+
hm(),
|
|
1755
|
+
]),
|
|
1756
|
+
doReturn,
|
|
1757
|
+
];
|
|
1758
|
+
};
|
|
1506
1759
|
let catchBody;
|
|
1507
1760
|
if (mode === "dnr" || mode === "dnt") {
|
|
1508
1761
|
const actual = () => ({ kind: "caughtToDyn", value: caughtRef(), type: DYN, loc });
|
|
@@ -1667,7 +1920,10 @@ function assertThrowsHelper(lowerer, mode, recvType, recvIsPromise, expected, lo
|
|
|
1667
1920
|
// caught value crosses as a dyn value (identity-preserving) and
|
|
1668
1921
|
// the runtime walks the expected's keys — a mismatch throws the
|
|
1669
1922
|
// deep-equal AssertionError.
|
|
1923
|
+
// A function there is a validation function (or an error class
|
|
1924
|
+
// value) as in the predicate form.
|
|
1670
1925
|
catchBody = [
|
|
1926
|
+
ifStmt({ kind: "dynTest", test: "function", value: varRef("ev.0", DYN, loc), type: BOOL, loc }, validateStmts(varRef("ev.0", DYN, loc))),
|
|
1671
1927
|
lib("assert.expectsErrDyn", [
|
|
1672
1928
|
{ kind: "caughtToDyn", value: caughtRef(), type: DYN, loc },
|
|
1673
1929
|
varRef("ev.0", DYN, loc),
|
|
@@ -1678,7 +1934,8 @@ function assertThrowsHelper(lowerer, mode, recvType, recvIsPromise, expected, lo
|
|
|
1678
1934
|
];
|
|
1679
1935
|
break;
|
|
1680
1936
|
case "predicate":
|
|
1681
|
-
|
|
1937
|
+
catchBody = validateStmts(varRef("predicate.0", DYN, loc));
|
|
1938
|
+
break;
|
|
1682
1939
|
}
|
|
1683
1940
|
}
|
|
1684
1941
|
const body = [];
|