@scriptc/compiler 0.2.7 → 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 +2 -0
- package/dist/backend/llvm/alloc.d.ts +3 -0
- package/dist/backend/llvm/alloc.js +54 -13
- package/dist/backend/llvm/alloc.js.map +1 -1
- 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 +4 -1
- package/dist/backend/llvm/call-lifetimes.js +14 -3
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +8 -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 +13 -1
- package/dist/backend/llvm/classes.js +26 -18
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +32 -3
- package/dist/backend/llvm/classes.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.test.js +89 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +31 -20
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +184 -11
- package/dist/backend/llvm/emitter.js +1189 -125
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +21 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +4 -4
- package/dist/backend/llvm/expr-async.js.map +1 -1
- 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 +55 -10
- 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 +230 -27
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +25 -10
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +72 -21
- 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.js +41 -12
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +50 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +28 -14
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +41 -31
- package/dist/backend/llvm/expr-stream-bridges.js.map +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/layouts.d.ts +2 -1
- package/dist/backend/llvm/layouts.js +2 -2
- package/dist/backend/llvm/layouts.js.map +1 -1
- 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 +7 -11
- 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.js +73 -13
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +7 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.js +10 -6
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +3 -2
- 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 +38 -19
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- 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/shapes.d.ts +45 -17
- package/dist/backend/llvm/shapes.js +131 -53
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +33 -8
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +5 -2
- 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-key-hash.d.ts +9 -2
- package/dist/backend/llvm/string-key-hash.js +20 -3
- package/dist/backend/llvm/string-key-hash.js.map +1 -1
- package/dist/backend/llvm/string-key-hash.test.js +14 -3
- package/dist/backend/llvm/string-key-hash.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +24 -11
- 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.test.js +1 -1
- 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 +346 -3
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +113 -1
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +7 -5
- 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 +4 -0
- package/dist/backend/native-codegen.js +49 -2
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +41 -10
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +2 -0
- package/dist/backend/native-tools.js +3 -0
- package/dist/backend/native-tools.js.map +1 -1
- 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-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/cli/command.js +70 -7
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +4 -1
- package/dist/cli/usage.js +8 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +12 -3
- 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 +74 -4
- 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/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/array-values.d.ts +7 -0
- package/dist/frontend/lowering/array-values.js +120 -4
- package/dist/frontend/lowering/array-values.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 +4 -0
- package/dist/frontend/lowering/builtins/process.js +10 -0
- 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/class-assertions.d.ts +8 -0
- package/dist/frontend/lowering/class-assertions.js +217 -1
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +8 -5
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- 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/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/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-callbacks.js +81 -44
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +15 -2
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +231 -12
- 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/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 +6 -1
- package/dist/frontend/lowering/cycle-initialization.js +59 -33
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- 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/object-literals.js +40 -2
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +5 -0
- package/dist/frontend/lowering/lower-calls.js +226 -157
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +4 -0
- package/dist/frontend/lowering/lower-classes.js +72 -22
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +13 -0
- package/dist/frontend/lowering/lower-exprs.js +431 -107
- package/dist/frontend/lowering/lower-exprs.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 +3 -2
- 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 +90 -1
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +36 -6
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +78 -2
- package/dist/frontend/lowering/lowerer.js +986 -73
- package/dist/frontend/lowering/lowerer.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 +2 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- 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/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 +25 -0
- package/dist/frontend/program.js +613 -17
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +64 -1
- 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 +3 -0
- package/dist/frontend/type-mapper.js +72 -6
- package/dist/frontend/type-mapper.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 +47 -9
- package/dist/index.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 +3 -0
- package/dist/ir/builtin-signatures.js.map +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 +24 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/validate.js +21 -2
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +39 -0
- package/dist/ir/validate.test.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/prepare.d.ts +4 -0
- package/dist/native/prepare.js +2 -1
- package/dist/native/prepare.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 +1 -1
|
@@ -89,6 +89,10 @@ export interface ClassInfo {
|
|
|
89
89
|
* unassigned read throws the catchable TypeError instead of yielding
|
|
90
90
|
* an undefined the declared type cannot hold (SEMANTICS.md). */
|
|
91
91
|
deferredInitFields?: Set<string>;
|
|
92
|
+
/** True when construction may hand the instance to other code (a method
|
|
93
|
+
* call, an argument, a callback, or a base constructor that does) — a
|
|
94
|
+
* subclass's own fields can then be read before their assignment. */
|
|
95
|
+
constructionEscapes?: true;
|
|
92
96
|
/** null for the builtin error classes (runtime-provided; no source).
|
|
93
97
|
* Class EXPRESSIONS carry their ts.ClassExpression here — members,
|
|
94
98
|
* accessors, and locs read identically off either form. */
|
|
@@ -42,6 +42,7 @@ import { lowerObjectFactoryNew } from "./object-factory-new.js";
|
|
|
42
42
|
import { tryLowerExpression } from "./expressions/try-lower-expression.js";
|
|
43
43
|
import { lowerInstanceConstructorNew } from "./class-instance-constructor.js";
|
|
44
44
|
import { classPrototypeData } from "./class-prototypes.js";
|
|
45
|
+
import { constructionEscape } from "./construction-escapes.js";
|
|
45
46
|
import { checkedClassConstruction, checkedClassConstructionPacked } from "./class-construction.js";
|
|
46
47
|
import { initializeRuntimeStatics, hasRuntimeStatics } from "./class-runtime-statics.js";
|
|
47
48
|
import { reflectedClassStaticMethodValue } from "./class-method-values.js";
|
|
@@ -999,15 +1000,7 @@ function collectClassShapeDeferring(lowerer, decl) {
|
|
|
999
1000
|
const hasDeclTimeCode = (n) => ts.isClassStaticBlockDeclaration(n) ||
|
|
1000
1001
|
(n.modifiers ?? []).some((m) => m.kind === ts.SyntaxKind.Decorator);
|
|
1001
1002
|
if (symbol && (hasDeclTimeCode(decl) || decl.members.some(hasDeclTimeCode))) {
|
|
1002
|
-
|
|
1003
|
-
if (diags) {
|
|
1004
|
-
lowerer.deferredDiags.delete(symbol);
|
|
1005
|
-
if (!lowerer.alreadyFlushed.has(symbol)) {
|
|
1006
|
-
lowerer.flushedSymbols.add(symbol);
|
|
1007
|
-
for (const d of diags)
|
|
1008
|
-
lowerer.pushDiag(d);
|
|
1009
|
-
}
|
|
1010
|
-
}
|
|
1003
|
+
lowerer.reportDeferred(symbol);
|
|
1011
1004
|
}
|
|
1012
1005
|
// A poisoned BASE this class EXTENDS must report EAGERLY for the same
|
|
1013
1006
|
// reason: the derived statement evaluates its heritage when module
|
|
@@ -1025,15 +1018,8 @@ function collectClassShapeDeferring(lowerer, decl) {
|
|
|
1025
1018
|
?.types.map((t) => t.expression)
|
|
1026
1019
|
.filter(ts.isIdentifier)[0];
|
|
1027
1020
|
const baseSym = baseIdent ? lowerer.resolveValueSymbol(baseIdent) : null;
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
lowerer.deferredDiags.delete(baseSym);
|
|
1031
|
-
if (!lowerer.alreadyFlushed.has(baseSym)) {
|
|
1032
|
-
lowerer.flushedSymbols.add(baseSym);
|
|
1033
|
-
for (const d of baseDiags)
|
|
1034
|
-
lowerer.pushDiag(d);
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1021
|
+
if (baseSym)
|
|
1022
|
+
lowerer.reportDeferred(baseSym);
|
|
1037
1023
|
}
|
|
1038
1024
|
}
|
|
1039
1025
|
function inferredEmptyCollectionFieldType(lowerer, decl, field, initializer) {
|
|
@@ -1696,7 +1682,7 @@ mixin) {
|
|
|
1696
1682
|
lowerer.badType(member.name, lowerer.typeOf(member.name));
|
|
1697
1683
|
if (type.kind === "dyn" &&
|
|
1698
1684
|
!isJsSourceFile(member.getSourceFile()) &&
|
|
1699
|
-
!lowerer.
|
|
1685
|
+
!lowerer.classFieldStoresDyn(lowerer.typeOf(member.name)) &&
|
|
1700
1686
|
(member.type !== undefined ||
|
|
1701
1687
|
(lowerer.typeOf(member.name).flags & ts.TypeFlags.Any) === 0)) {
|
|
1702
1688
|
lowerer.unsupported("SC1090", member.name, "'unknown'-typed static fields");
|
|
@@ -2059,7 +2045,7 @@ mixin) {
|
|
|
2059
2045
|
// storage as implicit constructor-assigned JS fields.
|
|
2060
2046
|
if (type.kind === "dyn" &&
|
|
2061
2047
|
!isJsSourceFile(member.getSourceFile()) &&
|
|
2062
|
-
!lowerer.
|
|
2048
|
+
!lowerer.classFieldStoresDyn(lowerer.typeOf(member.name))) {
|
|
2063
2049
|
lowerer.unsupported("SC1090", member.name, "'unknown'-typed class fields");
|
|
2064
2050
|
}
|
|
2065
2051
|
const undefinedInitializer = type.kind === "dyn" && !member.initializer ? locOf(member) : undefined;
|
|
@@ -2187,7 +2173,7 @@ mixin) {
|
|
|
2187
2173
|
if (type.kind === "void")
|
|
2188
2174
|
lowerer.badType(p.name, lowerer.typeOf(p.name));
|
|
2189
2175
|
// The class-field dyn rule verbatim (KEEP NARROW).
|
|
2190
|
-
if (type.kind === "dyn" && !lowerer.
|
|
2176
|
+
if (type.kind === "dyn" && !lowerer.classFieldStoresDyn(lowerer.typeOf(p))) {
|
|
2191
2177
|
lowerer.unsupported("SC1090", p.name, "'unknown'-typed class fields");
|
|
2192
2178
|
}
|
|
2193
2179
|
// `override x` (and any same-named inherited member) would
|
|
@@ -2625,6 +2611,52 @@ mixin) {
|
|
|
2625
2611
|
initializer: undefined,
|
|
2626
2612
|
})));
|
|
2627
2613
|
}
|
|
2614
|
+
// Fields read before their first assignment. Construction that hands
|
|
2615
|
+
// the instance to other code (a method call, an argument, a callback,
|
|
2616
|
+
// a base constructor that does either) before assigning a class-typed
|
|
2617
|
+
// field lets that code read the field while Node still holds
|
|
2618
|
+
// undefined. Such fields take the deferred-init representation, whose
|
|
2619
|
+
// slot (a nullable instance pointer) starts empty and whose reads check
|
|
2620
|
+
// it. Fields assigned before any exposure keep their plain reads.
|
|
2621
|
+
const derived = decl.heritageClauses?.some((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword) ??
|
|
2622
|
+
false;
|
|
2623
|
+
// Generic instances and mixins share layouts across declarations, so
|
|
2624
|
+
// they only report whether construction exposes the instance.
|
|
2625
|
+
const escape = familyMode || mixin
|
|
2626
|
+
? { escapes: derived, assigned: null }
|
|
2627
|
+
: constructionEscape({
|
|
2628
|
+
ctor,
|
|
2629
|
+
fields: fieldOrder.flatMap((f) => paramProps.some((pp) => pp.name === f.name)
|
|
2630
|
+
? []
|
|
2631
|
+
: [{ name: f.name, initializer: f.initializer }]),
|
|
2632
|
+
paramProps: paramProps.map((pp) => pp.name),
|
|
2633
|
+
derived,
|
|
2634
|
+
baseEscapes: base === null ||
|
|
2635
|
+
callableBase !== undefined ||
|
|
2636
|
+
factoryBaseExpression !== undefined ||
|
|
2637
|
+
base.constructionEscapes === true,
|
|
2638
|
+
isField: (name) => fields.has(name) &&
|
|
2639
|
+
!methods.has(`set:${name}`) &&
|
|
2640
|
+
!lowerer.findMethodOn(base, `set:${name}`),
|
|
2641
|
+
privateMethodBody: (call) => {
|
|
2642
|
+
const callee = call.expression;
|
|
2643
|
+
if (!ts.isPropertyAccessExpression(callee))
|
|
2644
|
+
return null;
|
|
2645
|
+
const name = callee.name.text;
|
|
2646
|
+
const declaration = decl.members.find((member) => ts.isMethodDeclaration(member) &&
|
|
2647
|
+
member.body !== undefined &&
|
|
2648
|
+
(ts.isIdentifier(member.name) || ts.isPrivateIdentifier(member.name)) &&
|
|
2649
|
+
member.name.text === name);
|
|
2650
|
+
if (!declaration?.body || declaration.asteriskToken)
|
|
2651
|
+
return null;
|
|
2652
|
+
const modifiers = ts.getModifiers(declaration) ?? [];
|
|
2653
|
+
if (modifiers.some((m) => m.kind === ts.SyntaxKind.StaticKeyword || m.kind === ts.SyntaxKind.AsyncKeyword))
|
|
2654
|
+
return null;
|
|
2655
|
+
const isPrivate = ts.isPrivateIdentifier(declaration.name) ||
|
|
2656
|
+
modifiers.some((m) => m.kind === ts.SyntaxKind.PrivateKeyword);
|
|
2657
|
+
return isPrivate ? declaration.body : null;
|
|
2658
|
+
},
|
|
2659
|
+
});
|
|
2628
2660
|
// The deferred definite-assignment check: a field on the unguarded
|
|
2629
2661
|
// list passes only with an unconditional `this.x = ...` at the
|
|
2630
2662
|
// constructor's TOP LEVEL — the same standard the JS-class path
|
|
@@ -2645,7 +2677,7 @@ mixin) {
|
|
|
2645
2677
|
}
|
|
2646
2678
|
}
|
|
2647
2679
|
for (const f of unguardedFields) {
|
|
2648
|
-
if (topAssigned.has(f.name))
|
|
2680
|
+
if (topAssigned.has(f.name) || escape.assigned?.has(f.name))
|
|
2649
2681
|
continue;
|
|
2650
2682
|
// DEFERRED INITIALIZATION (the Output.initialize idiom —
|
|
2651
2683
|
// `stream!: T` assigned inside a method the constructor calls):
|
|
@@ -2679,6 +2711,23 @@ mixin) {
|
|
|
2679
2711
|
lowerer.unsupported("SC1090", f.node, f.why);
|
|
2680
2712
|
}
|
|
2681
2713
|
}
|
|
2714
|
+
if (escape.assigned && !inst) {
|
|
2715
|
+
for (const f of fieldOrder) {
|
|
2716
|
+
if (f.redeclared || escape.assigned.has(f.name) || deferredInitFields.has(f.name))
|
|
2717
|
+
continue;
|
|
2718
|
+
if (paramProps.some((pp) => pp.name === f.name))
|
|
2719
|
+
continue;
|
|
2720
|
+
const declared = fields.get(f.name);
|
|
2721
|
+
if (declared?.kind !== "object" || lowerer.classes.get(declared.className)?.def.runtime)
|
|
2722
|
+
continue;
|
|
2723
|
+
const armed = lowerer.withUndefinedArm(declared);
|
|
2724
|
+
if (armed === null || armed.kind !== "union")
|
|
2725
|
+
continue;
|
|
2726
|
+
fields.set(f.name, armed);
|
|
2727
|
+
f.type = armed;
|
|
2728
|
+
deferredInitFields.add(f.name);
|
|
2729
|
+
}
|
|
2730
|
+
}
|
|
2682
2731
|
// Partial overrides of an inherited accessor pair. JS gives the
|
|
2683
2732
|
// derived class ONE own accessor property that SHADOWS the whole
|
|
2684
2733
|
// inherited pair — the missing half does NOT resolve to the base's
|
|
@@ -3059,6 +3108,7 @@ mixin) {
|
|
|
3059
3108
|
? { classDecorators: { nodes: classDecoratorNodes } }
|
|
3060
3109
|
: {}),
|
|
3061
3110
|
...(deferredInitFields.size > 0 ? { deferredInitFields } : {}),
|
|
3111
|
+
...(escape.escapes ? { constructionEscapes: true } : {}),
|
|
3062
3112
|
};
|
|
3063
3113
|
// GENERIC members get their declaring-class backlink now that the
|
|
3064
3114
|
// info exists (instance lowering reads it for `this` typing and the
|