@scriptc/compiler 0.2.6 → 0.2.8
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 +7 -18
- package/dist/backend/cycle-analysis.d.ts +21 -9
- package/dist/backend/cycle-analysis.js +139 -67
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +283 -3
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +39 -0
- package/dist/backend/cycle-mutability.js +205 -0
- package/dist/backend/cycle-mutability.js.map +1 -0
- package/dist/backend/link-plan-core.d.ts +2 -1
- package/dist/backend/link-plan-core.js +15 -3
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +2 -1
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +43 -0
- package/dist/backend/llvm/alloc.js +246 -0
- package/dist/backend/llvm/alloc.js.map +1 -0
- package/dist/backend/llvm/alloc.test.d.ts +1 -0
- package/dist/backend/llvm/alloc.test.js +102 -0
- package/dist/backend/llvm/alloc.test.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +9 -0
- package/dist/backend/llvm/blocks.js +9 -0
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/borrowed-receivers.d.ts +7 -0
- package/dist/backend/llvm/borrowed-receivers.js +39 -0
- package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +18 -3
- package/dist/backend/llvm/call-lifetimes.js +54 -19
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +178 -3
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.d.ts +24 -0
- package/dist/backend/llvm/checked-narrows.js +108 -0
- package/dist/backend/llvm/checked-narrows.js.map +1 -0
- package/dist/backend/llvm/checked-narrows.test.d.ts +1 -0
- package/dist/backend/llvm/checked-narrows.test.js +208 -0
- package/dist/backend/llvm/checked-narrows.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +16 -1
- package/dist/backend/llvm/classes.js +60 -49
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +68 -6
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +13 -0
- package/dist/backend/llvm/common.js +30 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +19 -3
- package/dist/backend/llvm/constant-callbacks.js +289 -52
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +140 -3
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +6 -2
- package/dist/backend/llvm/debug-info.js +11 -1
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +29 -0
- package/dist/backend/llvm/dense-array-access.js +335 -0
- package/dist/backend/llvm/dense-array-access.js.map +1 -0
- package/dist/backend/llvm/dense-array-access.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-access.test.js +238 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +38 -0
- package/dist/backend/llvm/dyn.js +213 -14
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +308 -15
- package/dist/backend/llvm/emitter.js +1788 -206
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +89 -7
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +62 -8
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.d.ts +1 -0
- package/dist/backend/llvm/expr-async.test.js +62 -0
- package/dist/backend/llvm/expr-async.test.js.map +1 -0
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +85 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +29 -21
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +5 -0
- package/dist/backend/llvm/expr-calls.js +118 -15
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +7 -1
- package/dist/backend/llvm/expr-containers.js +246 -32
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +113 -8
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +244 -44
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.js +3 -8
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +93 -36
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +51 -3
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +31 -17
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +96 -29
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +6 -3
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-remainder.d.ts +11 -0
- package/dist/backend/llvm/integer-remainder.js +91 -0
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +3 -1
- package/dist/backend/llvm/layouts.js +3 -2
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +16 -0
- package/dist/backend/llvm/lazy-captures.js +96 -0
- package/dist/backend/llvm/lazy-captures.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.test.d.ts +1 -0
- package/dist/backend/llvm/lazy-captures.test.js +78 -0
- package/dist/backend/llvm/lazy-captures.test.js.map +1 -0
- package/dist/backend/llvm/lib-abi.js +10 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +10 -15
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +8 -8
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +1 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.d.ts +5 -1
- package/dist/backend/llvm/local-array-reads.js +147 -26
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +85 -4
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +5 -1
- package/dist/backend/llvm/local-union-storage.js +54 -8
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +94 -6
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +18 -0
- package/dist/backend/llvm/map-number-lookup.js +62 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -0
- package/dist/backend/llvm/map-read-lifetimes.js +24 -3
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +39 -20
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-fields.d.ts +28 -0
- package/dist/backend/llvm/nullable-fields.js +45 -0
- package/dist/backend/llvm/nullable-fields.js.map +1 -0
- package/dist/backend/llvm/nullable-fields.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-fields.test.js +48 -0
- package/dist/backend/llvm/nullable-fields.test.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +68 -0
- package/dist/backend/llvm/nullable-unions.js +132 -0
- package/dist/backend/llvm/nullable-unions.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +58 -0
- package/dist/backend/llvm/publish.js +286 -0
- package/dist/backend/llvm/publish.js.map +1 -0
- package/dist/backend/llvm/rebound-parameters.d.ts +12 -0
- package/dist/backend/llvm/rebound-parameters.js +72 -0
- package/dist/backend/llvm/rebound-parameters.js.map +1 -0
- package/dist/backend/llvm/rebound-parameters.test.d.ts +1 -0
- package/dist/backend/llvm/rebound-parameters.test.js +67 -0
- package/dist/backend/llvm/rebound-parameters.test.js.map +1 -0
- package/dist/backend/llvm/reference-effects.d.ts +18 -2
- package/dist/backend/llvm/reference-effects.js +106 -16
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-effects.test.js +52 -1
- package/dist/backend/llvm/reference-effects.test.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.d.ts +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +52 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +104 -9
- package/dist/backend/llvm/shapes.js +356 -46
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +139 -5
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-callbacks.js +2 -3
- package/dist/backend/llvm/stack-callbacks.js.map +1 -1
- package/dist/backend/llvm/stack-captures.d.ts +3 -1
- package/dist/backend/llvm/stack-captures.js +5 -3
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +43 -3
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-construction.d.ts +10 -0
- package/dist/backend/llvm/string-construction.js +42 -0
- package/dist/backend/llvm/string-construction.js.map +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-key-hash.d.ts +15 -0
- package/dist/backend/llvm/string-key-hash.js +76 -0
- package/dist/backend/llvm/string-key-hash.js.map +1 -0
- package/dist/backend/llvm/string-key-hash.test.d.ts +1 -0
- package/dist/backend/llvm/string-key-hash.test.js +45 -0
- package/dist/backend/llvm/string-key-hash.test.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.test.js +65 -15
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +7 -0
- package/dist/backend/llvm/string-reads.js +76 -0
- package/dist/backend/llvm/string-reads.js.map +1 -0
- package/dist/backend/llvm/switch-dispatch.js +1 -1
- package/dist/backend/llvm/switch-dispatch.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +3 -3
- package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
- package/dist/backend/llvm/test-boxed-unions.d.ts +5 -0
- package/dist/backend/llvm/test-boxed-unions.js +13 -0
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +15 -0
- package/dist/backend/llvm/union-repr.js +89 -0
- package/dist/backend/llvm/union-repr.js.map +1 -0
- package/dist/backend/llvm/virtual-borrows.d.ts +31 -0
- package/dist/backend/llvm/virtual-borrows.js +82 -0
- package/dist/backend/llvm/virtual-borrows.js.map +1 -0
- package/dist/backend/llvm/walk-borrows.d.ts +43 -0
- package/dist/backend/llvm/walk-borrows.js +150 -0
- package/dist/backend/llvm/walk-borrows.js.map +1 -0
- package/dist/backend/llvm/walk-borrows.test.d.ts +1 -0
- package/dist/backend/llvm/walk-borrows.test.js +119 -0
- package/dist/backend/llvm/walk-borrows.test.js.map +1 -0
- package/dist/backend/llvm/walkers.d.ts +5 -1
- package/dist/backend/llvm/walkers.js +24 -21
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.d.ts +29 -1
- package/dist/backend/may-throw.js +349 -3
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +114 -2
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/cache-warm.d.ts +2 -1
- package/dist/backend/native/cache-warm.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +3 -2
- package/dist/backend/native/contracts.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +7 -4
- package/dist/backend/native-codegen-core.js +14 -9
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +9 -0
- package/dist/backend/native-codegen.js +53 -2
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +64 -10
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -2
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-link-info.d.ts +2 -1
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +2 -2
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +5 -1
- package/dist/backend/native-tools.js +3 -1
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/optimization.d.ts +25 -0
- package/dist/backend/optimization.js +21 -0
- package/dist/backend/optimization.js.map +1 -0
- package/dist/backend/optimization.test.d.ts +1 -0
- package/dist/backend/optimization.test.js +24 -0
- package/dist/backend/optimization.test.js.map +1 -0
- package/dist/backend/publication.d.ts +28 -0
- package/dist/backend/publication.js +155 -0
- package/dist/backend/publication.js.map +1 -0
- package/dist/backend/publication.test.d.ts +1 -0
- package/dist/backend/publication.test.js +72 -0
- package/dist/backend/publication.test.js.map +1 -0
- 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 +15 -4
- package/dist/backend/runtime-pack-core.js +23 -12
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +7 -3
- package/dist/backend/runtime-pack-native.js +0 -3
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.d.ts +20 -2
- package/dist/backend/runtime-pack.js +23 -0
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +115 -2
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/targets.d.ts +2 -1
- package/dist/backend/targets.js +1 -1
- package/dist/backend/targets.js.map +1 -1
- package/dist/cli/command.js +75 -11
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +2 -1
- package/dist/cli/usage.d.ts +4 -1
- package/dist/cli/usage.js +13 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +17 -5
- package/dist/coverage/report.d.ts +25 -2
- package/dist/coverage/report.js +161 -33
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +63 -0
- package/dist/coverage/verdict-cache.js +193 -0
- package/dist/coverage/verdict-cache.js.map +1 -0
- package/dist/coverage/verdict-cache.test.d.ts +1 -0
- package/dist/coverage/verdict-cache.test.js +52 -0
- package/dist/coverage/verdict-cache.test.js.map +1 -0
- package/dist/coverage/verdict-semantic.d.ts +2 -0
- package/dist/coverage/verdict-semantic.js +24 -0
- package/dist/coverage/verdict-semantic.js.map +1 -0
- package/dist/coverage/verdict-startup.d.ts +15 -0
- package/dist/coverage/verdict-startup.js +66 -0
- package/dist/coverage/verdict-startup.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +29 -1
- package/dist/diagnostics/diagnostic.js +84 -12
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +130 -0
- package/dist/diagnostics/envelope.js +257 -0
- package/dist/diagnostics/envelope.js.map +1 -0
- package/dist/diagnostics/envelope.test.d.ts +1 -0
- package/dist/diagnostics/envelope.test.js +91 -0
- package/dist/diagnostics/envelope.test.js.map +1 -0
- package/dist/diagnostics/render.d.ts +3 -0
- package/dist/diagnostics/render.js +13 -2
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +2 -2
- package/dist/executable/executable-cache.js +7 -4
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +20 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +4 -0
- package/dist/executable/prepare.js +7 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/lowering/abstract-equality.js +5 -49
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +30 -0
- package/dist/frontend/lowering/array-values.js +246 -1
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +17 -2
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +29 -1
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +10 -17
- package/dist/frontend/lowering/builtins/process.js +66 -29
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/workers.js +4 -2
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +11 -0
- package/dist/frontend/lowering/caught-value-dispatch.js +87 -0
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -0
- package/dist/frontend/lowering/class-assertions.d.ts +12 -0
- package/dist/frontend/lowering/class-assertions.js +229 -5
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -3
- package/dist/frontend/lowering/class-callbacks.js +18 -5
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +12 -6
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.d.ts +5 -0
- package/dist/frontend/lowering/class-method-mutations.js +472 -0
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -0
- package/dist/frontend/lowering/class-method-values.js +25 -5
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +8 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-unions.d.ts +16 -0
- package/dist/frontend/lowering/class-unions.js +127 -0
- package/dist/frontend/lowering/class-unions.js.map +1 -0
- package/dist/frontend/lowering/coercions/builders.js +8 -1
- package/dist/frontend/lowering/coercions/builders.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +2 -0
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/identity.d.ts +7 -0
- package/dist/frontend/lowering/coercions/identity.js +26 -0
- package/dist/frontend/lowering/coercions/identity.js.map +1 -0
- package/dist/frontend/lowering/coercions/state.d.ts +6 -0
- package/dist/frontend/lowering/coercions/state.js +2 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +9 -6
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +8 -0
- package/dist/frontend/lowering/coercions/unions.js +67 -2
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.d.ts +1 -0
- package/dist/frontend/lowering/collation-repertoire.js +19 -0
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -0
- package/dist/frontend/lowering/collection-narrowing.d.ts +6 -0
- package/dist/frontend/lowering/collection-narrowing.js +31 -0
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -0
- package/dist/frontend/lowering/construction-escapes.d.ts +38 -0
- package/dist/frontend/lowering/construction-escapes.js +146 -0
- package/dist/frontend/lowering/construction-escapes.js.map +1 -0
- package/dist/frontend/lowering/construction-escapes.test.d.ts +1 -0
- package/dist/frontend/lowering/construction-escapes.test.js +150 -0
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +52 -0
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +416 -65
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-concat.js +130 -0
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -0
- package/dist/frontend/lowering/containers/array-construction.d.ts +2 -0
- package/dist/frontend/lowering/containers/array-construction.js +110 -5
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +1 -11
- package/dist/frontend/lowering/containers/array-methods.js +274 -144
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +43 -1
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +10 -1
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +56 -70
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +7 -63
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +46 -0
- package/dist/frontend/lowering/cycle-initialization.js +303 -0
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -0
- package/dist/frontend/lowering/divergences.d.ts +9 -0
- package/dist/frontend/lowering/divergences.js +630 -0
- package/dist/frontend/lowering/divergences.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +178 -34
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-field-write.d.ts +4 -4
- package/dist/frontend/lowering/expressions/union-field-write.js +54 -44
- package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +20 -0
- package/dist/frontend/lowering/iterator-adapters.js +605 -0
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
- package/dist/frontend/lowering/lower-array-sort.js +44 -5
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-array-sort.test.js +31 -0
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +7 -0
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +1 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +8 -3
- package/dist/frontend/lowering/lower-calls.js +388 -278
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +6 -0
- package/dist/frontend/lowering/lower-classes.js +117 -65
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +22 -2
- package/dist/frontend/lowering/lower-exprs.js +811 -254
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +32 -19
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +19 -13
- package/dist/frontend/lowering/lower-generators.js +67 -44
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +29 -4
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +1 -1
- package/dist/frontend/lowering/lower-island.js +24 -7
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +100 -3
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +82 -64
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +115 -2
- package/dist/frontend/lowering/lowerer.js +1266 -88
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +3 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-bounds.d.ts +19 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +354 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js +66 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +117 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +738 -0
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.d.ts +36 -0
- package/dist/frontend/lowering/runtime-optional-guards.js +375 -0
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.js +92 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-ownership.d.ts +63 -0
- package/dist/frontend/lowering/runtime-optional-ownership.js +382 -0
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +16 -0
- package/dist/frontend/lowering/runtime-optional-provenance.js +41 -0
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/strict-equality.d.ts +9 -0
- package/dist/frontend/lowering/strict-equality.js +116 -0
- package/dist/frontend/lowering/strict-equality.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.d.ts +36 -0
- package/dist/frontend/lowering/string-index-bounds.js +537 -0
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.test.d.ts +1 -0
- package/dist/frontend/lowering/string-index-bounds.test.js +223 -0
- package/dist/frontend/lowering/string-index-bounds.test.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +3 -0
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-comparison.d.ts +5 -0
- package/dist/frontend/lowering/union-comparison.js +47 -0
- package/dist/frontend/lowering/union-comparison.js.map +1 -0
- package/dist/frontend/lowering/union-narrow.d.ts +2 -0
- package/dist/frontend/lowering/union-narrow.js +10 -6
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +10 -0
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +63 -2
- package/dist/frontend/program.js +1038 -61
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +122 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.d.ts +6 -0
- package/dist/frontend/resolve.js +14 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/threads-import.d.ts +5 -0
- package/dist/frontend/threads-import.js +21 -0
- package/dist/frontend/threads-import.js.map +1 -0
- package/dist/frontend/type-mapper.d.ts +4 -1
- package/dist/frontend/type-mapper.js +161 -20
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +15 -3
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend/worker-target.d.ts +4 -0
- package/dist/frontend/worker-target.js +8 -1
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +70 -16
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +3 -1
- package/dist/ir/analysis.js +4 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/build.d.ts +5 -0
- package/dist/ir/build.js +7 -0
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +5 -3
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +72 -0
- package/dist/ir/int32-slots.js +837 -0
- package/dist/ir/int32-slots.js.map +1 -0
- package/dist/ir/int32-slots.test.d.ts +1 -0
- package/dist/ir/int32-slots.test.js +222 -0
- package/dist/ir/int32-slots.test.js.map +1 -0
- package/dist/ir/integer-ranges.d.ts +19 -3
- package/dist/ir/integer-ranges.js +168 -23
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +74 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +101 -20
- package/dist/ir/ir.js +20 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +3 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +8 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +139 -22
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +308 -8
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +2 -1
- package/dist/library/library-profile.js +4 -3
- package/dist/library/library-profile.js.map +1 -1
- package/dist/native/cache.d.ts +3 -0
- package/dist/native/cache.js +49 -1
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +21 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +1 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +5 -0
- package/dist/native/compiler.js +51 -4
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/library.d.ts +2 -1
- package/dist/native/library.js.map +1 -1
- package/dist/native/prepare.d.ts +4 -0
- package/dist/native/prepare.js +28 -3
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.d.ts +3 -2
- package/dist/native/sanitizer.js +3 -13
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/startup-cache.d.ts +2 -0
- package/dist/startup-cache.js +2 -0
- package/dist/startup-cache.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +8 -2
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { type CycleInitFlag } from "./cycle-initialization.js";
|
|
1
2
|
import type { FieldLift } from "./coercions/structural-plans.js";
|
|
2
3
|
import { CoercionState } from "./coercions/state.js";
|
|
4
|
+
import { StringIndexBounds } from "./string-index-bounds.js";
|
|
3
5
|
import { RuntimeOptionalLocals } from "./runtime-optional-locals.js";
|
|
4
6
|
import type { WidthLift } from "./width-lift.js";
|
|
5
7
|
import { type FnCtx } from "./function-context.js";
|
|
@@ -76,6 +78,11 @@ export declare function boundIdentifiersOf(name: ts.BindingName): ts.Identifier[
|
|
|
76
78
|
/** Inspect executable children directly, without boxing the statement tree
|
|
77
79
|
* into checked-dynamic storage just to calculate coverage. */
|
|
78
80
|
export declare function stmtUsesIsland(stmts: IrStmt | IrStmt[]): boolean;
|
|
81
|
+
/** Statements a never-lowered body would have contributed to the coverage
|
|
82
|
+
* totals: every element of a statement list (blocks, case clauses), plus
|
|
83
|
+
* the single-statement bodies of control flow, nested functions included —
|
|
84
|
+
* the same accounting lowerStmts applies to bodies that do lower. */
|
|
85
|
+
export declare function countBodyStatements(root: ts.Node): number;
|
|
79
86
|
export interface LowerResult {
|
|
80
87
|
/** Present iff diagnostics is empty. */
|
|
81
88
|
module: IrModule | null;
|
|
@@ -99,7 +106,11 @@ export interface LowerResult {
|
|
|
99
106
|
unreached?: {
|
|
100
107
|
diagnostics: ScrDiagnostic[];
|
|
101
108
|
stats: LowerStats;
|
|
109
|
+
runtimeFences?: ScrDiagnostic[];
|
|
102
110
|
};
|
|
111
|
+
/** Compile-time-detectable behavior differences from Node (SC6xxx
|
|
112
|
+
* divergence warnings) in the program's own modules. Never failures. */
|
|
113
|
+
divergences?: ScrDiagnostic[];
|
|
103
114
|
/** --dynamic only: every Node builtin the embedded npm graph imports,
|
|
104
115
|
* shimmed or not — the coverage report's island honesty. */
|
|
105
116
|
npmBuiltins?: NpmBuiltinUse[];
|
|
@@ -350,6 +361,11 @@ export declare class Lowerer {
|
|
|
350
361
|
/** Per-symbol result of the never-reassigned file scan
|
|
351
362
|
* (bindingNeverReassigned — object-literal generic-method receivers). */
|
|
352
363
|
readonly neverReassignedCache: Map<ts.Symbol, boolean>;
|
|
364
|
+
private stringIndexBoundsCache;
|
|
365
|
+
/** Proofs that a string element read names an existing code unit. The
|
|
366
|
+
* indexed-read analysis and expression lowering share one instance, so a
|
|
367
|
+
* read's representation and its callers' signatures always agree. */
|
|
368
|
+
get stringIndexBounds(): StringIndexBounds;
|
|
353
369
|
/** Syntactic writes indexed once per JS scope. Symbol and RHS type
|
|
354
370
|
* checks remain contextual to each binding probe. */
|
|
355
371
|
readonly jsBindingWritesByOwner: Map<import("../ts7/ast-node.js").AstNode, Map<string, ts.BinaryExpression[]>>;
|
|
@@ -471,6 +487,11 @@ export declare class Lowerer {
|
|
|
471
487
|
* prepass. This includes explicit annotations: unchecked TS annotations do
|
|
472
488
|
* not prove that an array property read produced a value. */
|
|
473
489
|
readonly runtimeOptionalBindingTypes: Map<ts.Symbol, IrType>;
|
|
490
|
+
/** Bindings that receive an unchecked indexed read (or a value derived
|
|
491
|
+
* from one) through an initializer or assignment. The checker narrows a
|
|
492
|
+
* declared optional binding to that read's bare type, so presence tests
|
|
493
|
+
* on these bindings consult the stored tag instead. */
|
|
494
|
+
readonly runtimeOptionalAssignedSymbols: Set<ts.Symbol>;
|
|
474
495
|
/** Concise callback/lambda returns promoted by the HOF callback prepass;
|
|
475
496
|
* arrows have no declaration symbol to key in fnSigsBySymbol. */
|
|
476
497
|
readonly runtimeOptionalFunctionReturns: Map<import("../ts7/ast-node.js").AstNode, IrType>;
|
|
@@ -488,6 +509,17 @@ export declare class Lowerer {
|
|
|
488
509
|
* every name destructured from a present source optional. */
|
|
489
510
|
readonly runtimeOptionalPatternTypes: Map<import("../ts7/ast-node.js").AstNode, IrType>;
|
|
490
511
|
readonly runtimeOptionalReduceTypes: Map<ts.CallExpression, IrType>;
|
|
512
|
+
/** Non-null assertions whose value is forwarded into a slot promoted to
|
|
513
|
+
* hold undefined. `x!` has no runtime effect, so these keep the stored
|
|
514
|
+
* undefined state instead of trapping before any dereference. */
|
|
515
|
+
readonly runtimeOptionalAssertions: Set<ts.NonNullExpression>;
|
|
516
|
+
/** Array callback calls whose receiver the optional-read analysis proved
|
|
517
|
+
* never holds an explicit undefined (or a hole, for the find family):
|
|
518
|
+
* their callbacks take the element type itself. */
|
|
519
|
+
readonly presentElementCalls: Set<ts.CallExpression>;
|
|
520
|
+
/** for-of loops over arrays that can hold neither holes nor undefined:
|
|
521
|
+
* each pass reads the element payload directly. */
|
|
522
|
+
readonly presentElementLoops: Set<ts.ForOfStatement>;
|
|
491
523
|
/** Capture entries and their origin share one mutable box. Normalize each
|
|
492
524
|
* entry to the origin so writes and flow proofs stay synchronized. */
|
|
493
525
|
readonly runtimeOptionalRoots: Map<IrLocal, IrLocal>;
|
|
@@ -521,6 +553,12 @@ export declare class Lowerer {
|
|
|
521
553
|
promoteRuntimeOptionalParameter(node: ts.Node, type: IrType): IrType;
|
|
522
554
|
promoteRuntimeOptionalFunctionReturn(node: ts.Node, type: IrType): IrType;
|
|
523
555
|
runtimeOptionalFunctionReturnType(node: ts.Node, fallback: IrType): IrType;
|
|
556
|
+
/** True when `actual` is `declared` with some record fields (directly,
|
|
557
|
+
* in nested records, or in an array's element records) widened to runtime-optional unions:
|
|
558
|
+
* fields filled from unchecked indexed reads the checker calls present.
|
|
559
|
+
* Inferred bindings and destructured parameters keep that layout instead
|
|
560
|
+
* of narrowing it away. */
|
|
561
|
+
isRuntimeOptionalRecordVariant(actual: IrType, declared: IrType): boolean;
|
|
524
562
|
/** Promote one field of a record storage shape to the value's runtime
|
|
525
563
|
* type. Shapes are immutable by identity, so this interns a sibling shape
|
|
526
564
|
* and records the field as runtime-optional for property-read narrowing. */
|
|
@@ -537,6 +575,8 @@ export declare class Lowerer {
|
|
|
537
575
|
/** True while re-lowering a base function's 2nd+ instance: the same source
|
|
538
576
|
* statements were already counted for the first instance. */
|
|
539
577
|
suppressStats: boolean;
|
|
578
|
+
/** Comparisons interned by operand representations and equality semantics. */
|
|
579
|
+
readonly equalityHelpers: Map<string, string>;
|
|
540
580
|
/** Synthetic array-HOF loop functions (map/filter/forEach desugar),
|
|
541
581
|
* interned per method + element/callback-result type: key → fn name. */
|
|
542
582
|
readonly arrHofHelpers: Map<string, string>;
|
|
@@ -633,6 +673,10 @@ export declare class Lowerer {
|
|
|
633
673
|
* node carrying the ?. token is marked handled so the receiver-typed
|
|
634
674
|
* lowerings stop declining it (chainBlocked). */
|
|
635
675
|
readonly chainRecvByNode: Map<import("../ts7/ast-node.js").AstNode, IrExpr>;
|
|
676
|
+
/** Lowered void calls whose checked type is `never` (they throw or exit).
|
|
677
|
+
* TypeScript lets such a call stand where any value is expected;
|
|
678
|
+
* coerceToExpected turns them into diverging sequences. */
|
|
679
|
+
readonly neverValued: Set<IrExpr>;
|
|
636
680
|
readonly chainNarrowedType: Map<import("../ts7/ast-node.js").AstNode, ts.Type>;
|
|
637
681
|
readonly chainHandled: Set<import("../ts7/ast-node.js").AstNode>;
|
|
638
682
|
/** for-of-over-matchAll bindings whose `.index` reads the companion-index
|
|
@@ -676,6 +720,8 @@ export declare class Lowerer {
|
|
|
676
720
|
/** Named method slots observed before class collection need a callable
|
|
677
721
|
* ABI and shared prototype descriptors instead of call-site specialization. */
|
|
678
722
|
readonly prototypeMethodAccesses: Map<string, import("../ts7/ast-node.js").AstNode>;
|
|
723
|
+
/** Field names whose complete source census stores only lexical arrows. */
|
|
724
|
+
readonly receiverFreeCallbackFields: Set<string>;
|
|
679
725
|
/** Inferred JS methods participating in an override chain keep a vtable
|
|
680
726
|
* ABI instead of call-site specialization. Filled before class collection. */
|
|
681
727
|
readonly virtualJsMethods: Set<ts.MethodDeclaration>;
|
|
@@ -809,6 +855,9 @@ export declare class Lowerer {
|
|
|
809
855
|
* and therefore becomes the cycle's evaluation root. Dynamic imports
|
|
810
856
|
* wait on this shared verdict rather than a build-time-selected member. */
|
|
811
857
|
readonly asyncCyclePromiseOf: Map<ts.SourceFile, string>;
|
|
858
|
+
/** Modules whose evaluation an import() can request again after it threw,
|
|
859
|
+
* computed on first use (lower-modules.ts importRetryModules). */
|
|
860
|
+
importRetryModules: ReadonlySet<ts.SourceFile> | null;
|
|
812
861
|
/** Record-shape interner: canonical (name-sorted) field list → shapeId.
|
|
813
862
|
* Threaded into every mapType call; its `shapes` array becomes
|
|
814
863
|
* IrModule.records. */
|
|
@@ -860,6 +909,10 @@ export declare class Lowerer {
|
|
|
860
909
|
* function called above the declaration statement reads that, never a
|
|
861
910
|
* NULL slot. Filled by collectGlobals. */
|
|
862
911
|
readonly varGlobalEntryInits: Map<ts.SourceFile, IrGlobal[]>;
|
|
912
|
+
/** Import-cycle bindings with an initialization flag, by global id, and
|
|
913
|
+
* the top-level statements declaring them (cycle-initialization.ts). */
|
|
914
|
+
readonly cycleInitFlags: Map<string, CycleInitFlag>;
|
|
915
|
+
readonly cycleInitDeclarations: Map<ts.StatementBase, CycleInitFlag[]>;
|
|
863
916
|
get ctx(): FnCtx;
|
|
864
917
|
get scopes(): Map<ts.Symbol, IrLocal>[];
|
|
865
918
|
/** Names of bodies a prior reachability pass reached; null lowers everything. */
|
|
@@ -888,6 +941,16 @@ export declare class Lowerer {
|
|
|
888
941
|
* coverage remainder as alreadyFlushed). */
|
|
889
942
|
readonly flushedSymbols: Set<ts.Symbol>;
|
|
890
943
|
readonly alreadyFlushed: ReadonlySet<ts.Symbol>;
|
|
944
|
+
/** Deferred diagnostics a flush handed to a capture buffer (diagSink)
|
|
945
|
+
* instead of the build, keyed by the copy in that buffer. A buffer can
|
|
946
|
+
* be discarded (a declined probe, a collection that succeeded) or
|
|
947
|
+
* re-deferred under another declaration, so the declaration stays
|
|
948
|
+
* deferred until one of these copies reaches `diags` (pushDiag commits
|
|
949
|
+
* it); until then a later flush reports the diagnostics again. */
|
|
950
|
+
readonly pendingFlushes: Map<ScrDiagnostic, {
|
|
951
|
+
symbol: ts.Symbol;
|
|
952
|
+
source: ScrDiagnostic;
|
|
953
|
+
}>;
|
|
891
954
|
/** The build's target platform ("win32" | "darwin" | "linux" | ...):
|
|
892
955
|
* selects the platform-keyed builtin surfaces (builtinModuleFnsOf /
|
|
893
956
|
* builtinModuleConstOf in surfaces.ts). */
|
|
@@ -944,6 +1007,10 @@ export declare class Lowerer {
|
|
|
944
1007
|
registerBuiltinErrorClasses(): void;
|
|
945
1008
|
private classProtocols;
|
|
946
1009
|
classImplementedProtocol(type: ts.Type): boolean;
|
|
1010
|
+
/** Declared class fields may store a DYN value only when its static type
|
|
1011
|
+
* names checked protocol identity or an owned runtime handle (a Worker
|
|
1012
|
+
* or MessagePort); `unknown` and `any` fields stay refused. */
|
|
1013
|
+
classFieldStoresDyn(type: ts.Type): boolean;
|
|
947
1014
|
/** The nominal identity of a checker module-namespace type. Program
|
|
948
1015
|
* modules use their normalized absolute source name; supported builtins
|
|
949
1016
|
* use the lowering tables' canonical bare name. */
|
|
@@ -1093,7 +1160,15 @@ export declare class Lowerer {
|
|
|
1093
1160
|
* registered ClassInfo — the shape of a JS class whose collection fenced.
|
|
1094
1161
|
* Used by run()'s global pruning; shapes/unions recurse with a seen-set
|
|
1095
1162
|
* (interned ids can nest). */
|
|
1096
|
-
typeNamesUnregisteredClass(t: IrType
|
|
1163
|
+
typeNamesUnregisteredClass(t: IrType): boolean;
|
|
1164
|
+
/** The first class name typeNamesUnregisteredClass finds in `t`. */
|
|
1165
|
+
unregisteredClassOf(t: IrType, seen: Set<string>): string | null;
|
|
1166
|
+
/** A declaration whose signature blocked never lowers its body, so its
|
|
1167
|
+
* statements would otherwise vanish from the coverage totals and the
|
|
1168
|
+
* percentage would overstate how much of the program compiles. Count
|
|
1169
|
+
* every statement the body holds as attempted and failed, in addition to
|
|
1170
|
+
* the skipped-function tally. */
|
|
1171
|
+
private countSkippedBody;
|
|
1097
1172
|
/** Whether run() counts a signature-blocked declaration in
|
|
1098
1173
|
* stats.functionsSkipped: whole-program passes and the coverage
|
|
1099
1174
|
* remainder do; an externally-gated emit pass leaves the counting to the
|
|
@@ -1291,6 +1366,8 @@ export declare class Lowerer {
|
|
|
1291
1366
|
literalUnionArm(unionId: string, values: readonly UnionLiteral[]): (IrType & {
|
|
1292
1367
|
kind: "record";
|
|
1293
1368
|
}) | null;
|
|
1369
|
+
/** Widen only the result view; identical parameter ABIs preserve closure identity. */
|
|
1370
|
+
coerceCovariantFunction(expr: IrExpr, expected: IrType): IrExpr | null;
|
|
1294
1371
|
/** Implicit union construction. Wherever a value flows into a typed slot
|
|
1295
1372
|
* (initializer, assignment, call argument, return, field write, record
|
|
1296
1373
|
* literal field, ternary arm) whose expected type is a union and the
|
|
@@ -1373,6 +1450,7 @@ export declare class Lowerer {
|
|
|
1373
1450
|
}, toId: string, loc: SrcLoc): string | null;
|
|
1374
1451
|
unionRetagHelper(fromId: string, toId: string, loc: SrcLoc, trappable?: ReadonlySet<number>): string | null;
|
|
1375
1452
|
narrowedArmHelper(fromId: string, target: IrType, loc: SrcLoc): string | null;
|
|
1453
|
+
checkedNarrowCall(helper: string, value: IrExpr, type: IrType, loc: SrcLoc): IrExpr;
|
|
1376
1454
|
deferredReadHelper(fromId: string, target: IrType, loc: SrcLoc): string | null;
|
|
1377
1455
|
jsvalLiftable(t: IrType, visiting?: Set<string>): boolean;
|
|
1378
1456
|
jsvalLiftExpr(e: IrExpr, loc: SrcLoc): IrExpr;
|
|
@@ -1472,6 +1550,23 @@ export declare class Lowerer {
|
|
|
1472
1550
|
paramShapes(params: readonly ts.ParameterDeclaration[]): ParamShape[];
|
|
1473
1551
|
completeArgs(argNodes: readonly ts.Expression[], shapes: readonly ParamShape[], loc: SrcLoc, blame: ts.Node): IrExpr[];
|
|
1474
1552
|
wrappedUndefined(type: IrType, loc: SrcLoc): IrExpr | null;
|
|
1553
|
+
/** The value an OMITTED or deleted property leaves in a record field
|
|
1554
|
+
* slot of `type`: the ABSENT state for undefined-armed unions (the slot
|
|
1555
|
+
* reads as undefined but the property does not exist), the dyn
|
|
1556
|
+
* undefined for 'unknown' slots, and null when the slot cannot be
|
|
1557
|
+
* missing. Only legal as a direct field-slot write (IR fieldAbsent). */
|
|
1558
|
+
absentFieldValue(type: IrType, loc: SrcLoc): IrExpr | null;
|
|
1559
|
+
/** A field copy that keeps absence: `value` (the converted read of
|
|
1560
|
+
* `field` from record `obj`, which must be repeatable) when the source
|
|
1561
|
+
* property exists, else the target slot's ABSENT state. Fields that are
|
|
1562
|
+
* always present, and targets that cannot be absent, copy `value`
|
|
1563
|
+
* as-is. Only legal as a direct field-slot write. */
|
|
1564
|
+
presenceKeepingCopy(obj: IrExpr, shapeId: string, field: string, value: IrExpr, loc: SrcLoc): IrExpr;
|
|
1565
|
+
/** Own-property presence of declared field `field` on record `obj`
|
|
1566
|
+
* (borrowed — callers pass a repeatable receiver): a runtime test for
|
|
1567
|
+
* undefined-armed union fields, which can be absent, and `true` for
|
|
1568
|
+
* every other declared field. */
|
|
1569
|
+
recordFieldPresent(obj: IrExpr, shapeId: string, field: string, loc: SrcLoc): IrExpr;
|
|
1475
1570
|
/** The entry value of a binding JS initializes to `undefined` (an
|
|
1476
1571
|
* initializer-less declaration, a hoisted `var` before its statement):
|
|
1477
1572
|
* undefined-armed unions hold the interned undefined arm, and 'any'
|
|
@@ -1498,6 +1593,14 @@ export declare class Lowerer {
|
|
|
1498
1593
|
* may follow) — reached-but-broken declarations report the same set of
|
|
1499
1594
|
* diagnostics the eager collector historically produced. */
|
|
1500
1595
|
flushDeferred(symbol: ts.Symbol): void;
|
|
1596
|
+
/** flushDeferred without the collection-pass guard: for declarations
|
|
1597
|
+
* whose diagnostics must report eagerly (class statements with
|
|
1598
|
+
* declaration-time code, extended bases — collectClassShapeDeferring). */
|
|
1599
|
+
reportDeferred(symbol: ts.Symbol): void;
|
|
1600
|
+
/** A flushed copy of a deferred diagnostic reached `diags`: that
|
|
1601
|
+
* diagnostic is reported, so it leaves the declaration's deferred list
|
|
1602
|
+
* (the declaration counts as flushed for the coverage remainder). */
|
|
1603
|
+
private commitFlush;
|
|
1501
1604
|
flushDeferredClass(className: string): void;
|
|
1502
1605
|
collectSignature(decl: ts.FunctionDeclaration): void;
|
|
1503
1606
|
collectSignatureInner(decl: ts.FunctionDeclaration): void;
|
|
@@ -1645,6 +1748,11 @@ export declare class Lowerer {
|
|
|
1645
1748
|
lowerDefaultExport(stmt: ts.ExportAssignment): IrStmt | null;
|
|
1646
1749
|
buildMain(): IrFunction;
|
|
1647
1750
|
declareLocal(nameNode: ts.Node, name: string, type: IrType, mutable: boolean): IrLocal;
|
|
1751
|
+
/** A never-returning call in a value position of type `expected`: the
|
|
1752
|
+
* call runs for its effects (it throws or exits), and the expression ends
|
|
1753
|
+
* in an unreachable trap instead of producing a value. The result reads an
|
|
1754
|
+
* uninitialized hidden local that control never reaches. */
|
|
1755
|
+
divergentValue(call: IrExpr, expected: IrType): IrExpr;
|
|
1648
1756
|
/** A function-scope local bound to NO ts.Symbol — the hidden ABI slot of a
|
|
1649
1757
|
* defaulted parameter (the parameter's symbol binds to the separately-
|
|
1650
1758
|
* declared body local; nothing in the source can name this one). */
|
|
@@ -1820,6 +1928,11 @@ export declare class Lowerer {
|
|
|
1820
1928
|
classIteratorDrainCall(src: IrExpr, loc: SrcLoc, elemT?: IrType): IrExpr | null;
|
|
1821
1929
|
classIteratorRestDrainCall(cit: ClassIteratorInfo, itVal: IrExpr, loc: SrcLoc): IrExpr;
|
|
1822
1930
|
fieldGetExpr(target: FieldTarget, loc: SrcLoc, blame: ts.Node): IrExpr;
|
|
1931
|
+
/** The undefined-armed slot read behind a checked deferred-init field
|
|
1932
|
+
* read, or null. Consumers that observe undefined itself (equality,
|
|
1933
|
+
* typeof, truthiness, nullish defaults) test the slot instead of the
|
|
1934
|
+
* checked extraction, which throws for an unassigned field. */
|
|
1935
|
+
deferredFieldSlot(value: IrExpr): IrExpr | null;
|
|
1823
1936
|
fieldSetStmt(target: FieldTarget, value: IrExpr, loc: SrcLoc, blame: ts.Node): IrStmt;
|
|
1824
1937
|
lowerFieldCompound(access: ts.PropertyAccessExpression | ts.ElementAccessExpression, op: CompoundOp, rhsNode: ts.Expression | null, loc: SrcLoc): IrStmt;
|
|
1825
1938
|
errorConstructorArgs(args: readonly ts.Expression[], loc: SrcLoc, blame: ts.Node): IrExpr[];
|
|
@@ -1978,7 +2091,7 @@ export declare class Lowerer {
|
|
|
1978
2091
|
lowerPromiseMethodCall(call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
|
|
1979
2092
|
lowerPromiseStaticCall(call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
|
|
1980
2093
|
lowerNumberStaticProperty(expr: ts.PropertyAccessExpression): IrExpr | null;
|
|
1981
|
-
requireDynamicApi(feature: string, node: ts.Node): void;
|
|
2094
|
+
requireDynamicApi(feature: string, node: ts.Node, hint?: string): void;
|
|
1982
2095
|
lowerMathProperty(expr: ts.PropertyAccessExpression): IrExpr | null;
|
|
1983
2096
|
islandGlobalFnOf(ident: ts.Identifier): IslandFnEntry | null;
|
|
1984
2097
|
lowerIslandMethodCall(call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
|