@scriptc/compiler 0.3.0 → 0.3.2
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 +346 -17
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/literals.d.ts +7 -0
- package/dist/backend/literals.js +32 -0
- package/dist/backend/literals.js.map +1 -1
- package/dist/backend/literals.test.js +17 -1
- package/dist/backend/literals.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -4
- package/dist/backend/llvm/alloc.js +39 -15
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +15 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
- package/dist/backend/llvm/appended-array-literals.js +109 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
- package/dist/backend/llvm/appended-array-literals.test.js +90 -0
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
- package/dist/backend/llvm/bigint-wrap.d.ts +4 -0
- package/dist/backend/llvm/bigint-wrap.js +590 -0
- package/dist/backend/llvm/bigint-wrap.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +2 -0
- package/dist/backend/llvm/blocks.js +4 -0
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +4 -1
- package/dist/backend/llvm/call-lifetimes.js +66 -7
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +14 -3
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-narrows.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +67 -14
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +6 -6
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +7 -5
- package/dist/backend/llvm/common.js +7 -5
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.js +10 -28
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.js +146 -53
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +68 -3
- 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 +15 -2
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +163 -8
- package/dist/backend/llvm/emitter.js +973 -100
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +14 -7
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +242 -49
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-async.test.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +51 -36
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
- package/dist/backend/llvm/expr-callbacks.js +153 -4
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +12 -1
- package/dist/backend/llvm/expr-calls.js +279 -78
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.d.ts +1 -0
- package/dist/backend/llvm/expr-calls.test.js +132 -0
- package/dist/backend/llvm/expr-calls.test.js.map +1 -0
- package/dist/backend/llvm/expr-containers.d.ts +7 -0
- package/dist/backend/llvm/expr-containers.js +49 -5
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +4 -0
- package/dist/backend/llvm/expr-control.d.ts +8 -0
- package/dist/backend/llvm/expr-control.js +103 -69
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +3 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +28 -6
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +14 -0
- package/dist/backend/llvm/expr-primitives.js +110 -48
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +95 -5
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +9 -0
- package/dist/backend/llvm/expr-records.js +144 -16
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +9 -1
- package/dist/backend/llvm/expr-stream-bridges.js +152 -4
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +98 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/int32-abi.d.ts +47 -0
- package/dist/backend/llvm/int32-abi.js +83 -0
- package/dist/backend/llvm/int32-abi.js.map +1 -0
- package/dist/backend/llvm/int32-abi.test.d.ts +1 -0
- package/dist/backend/llvm/int32-abi.test.js +181 -0
- package/dist/backend/llvm/int32-abi.test.js.map +1 -0
- package/dist/backend/llvm/int32-locals.d.ts +30 -0
- package/dist/backend/llvm/int32-locals.js +95 -0
- package/dist/backend/llvm/int32-locals.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +4 -0
- package/dist/backend/llvm/integer-values.js +30 -1
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/integer-views.d.ts +8 -1
- package/dist/backend/llvm/integer-views.js +47 -2
- package/dist/backend/llvm/integer-views.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +16 -0
- package/dist/backend/llvm/lazy-captures.js +88 -2
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.test.js +48 -0
- package/dist/backend/llvm/lazy-captures.test.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +21 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +61 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +83 -9
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +26 -5
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +3 -2
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +24 -2
- package/dist/backend/llvm/local-union-storage.js +127 -12
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +108 -3
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +26 -0
- package/dist/backend/llvm/record-results.js +252 -0
- package/dist/backend/llvm/record-results.js.map +1 -0
- package/dist/backend/llvm/reference-effects.js +4 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +3 -0
- package/dist/backend/llvm/reference-writes.js +25 -11
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.d.ts +39 -0
- package/dist/backend/llvm/regex-matchers.js +1649 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.test.d.ts +1 -0
- package/dist/backend/llvm/regex-matchers.test.js +96 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -0
- package/dist/backend/llvm/regions.d.ts +67 -0
- package/dist/backend/llvm/regions.js +309 -0
- package/dist/backend/llvm/regions.js.map +1 -0
- package/dist/backend/llvm/regions.test.d.ts +1 -0
- package/dist/backend/llvm/regions.test.js +173 -0
- package/dist/backend/llvm/regions.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +70 -8
- package/dist/backend/llvm/shapes.js +157 -29
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +7 -6
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +1 -1
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +29 -0
- package/dist/backend/llvm/stack-objects.js +130 -0
- package/dist/backend/llvm/stack-objects.js.map +1 -0
- package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
- package/dist/backend/llvm/stack-objects.test.js +252 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -0
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-construction.test.js +2 -2
- package/dist/backend/llvm/string-construction.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +5 -5
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-literal-equality.d.ts +22 -0
- package/dist/backend/llvm/string-literal-equality.js +78 -0
- package/dist/backend/llvm/string-literal-equality.js.map +1 -0
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +89 -9
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.js +60 -13
- package/dist/backend/llvm/switch-dispatch.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +71 -6
- package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.d.ts +1 -0
- package/dist/backend/llvm/union-retype.test.js +229 -0
- package/dist/backend/llvm/union-retype.test.js.map +1 -0
- package/dist/backend/llvm/walkers.d.ts +2 -0
- package/dist/backend/llvm/walkers.js +4 -2
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +17 -0
- package/dist/backend/llvm/wrapping-sums.js +113 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -0
- package/dist/backend/loop-polls.js +1 -0
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/mangle.d.ts +9 -0
- package/dist/backend/mangle.js +15 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.js +7 -3
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -0
- package/dist/backend/native/executable.js +16 -1
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -1
- package/dist/backend/native/library.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-link-info-core.d.ts +1 -0
- package/dist/backend/native-link-info-core.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 +1 -0
- package/dist/backend/runtime-pack-core.js +1 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.js +14 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +13 -0
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/contracts/check.js +4 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +12 -0
- package/dist/frontend/experimental-import.js +63 -0
- package/dist/frontend/experimental-import.js.map +1 -0
- package/dist/frontend/lowering/array-values.d.ts +14 -0
- package/dist/frontend/lowering/array-values.js +29 -0
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
- package/dist/frontend/lowering/builtin-calls.js +36 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/console.d.ts +16 -6
- package/dist/frontend/lowering/builtins/console.js +33 -9
- package/dist/frontend/lowering/builtins/console.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +20 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.d.ts +2 -2
- package/dist/frontend/lowering/builtins/json.js +13 -4
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +16 -1
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +17 -0
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
- package/dist/frontend/lowering/builtins/operating-system.js +361 -1
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +15 -3
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +109 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
- package/dist/frontend/lowering/checked-promise-all.js +52 -6
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -3
- package/dist/frontend/lowering/class-dynamic-dispatch.js +54 -31
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +74 -4
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +8 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.d.ts +54 -0
- package/dist/frontend/lowering/containers/array-pipelines.js +1827 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -0
- package/dist/frontend/lowering/containers/exec-result-uses.d.ts +10 -0
- package/dist/frontend/lowering/containers/exec-result-uses.js +88 -0
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +106 -7
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.d.ts +2 -1
- package/dist/frontend/lowering/containers/string-replacement.js +32 -136
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
- package/dist/frontend/lowering/cycle-initialization.js +166 -12
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +33 -0
- package/dist/frontend/lowering/devirtualize.js +199 -0
- package/dist/frontend/lowering/devirtualize.js.map +1 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js +55 -7
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +5 -56
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +231 -10
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/identifier-uses.d.ts +7 -0
- package/dist/frontend/lowering/identifier-uses.js +23 -0
- package/dist/frontend/lowering/identifier-uses.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +51 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
- package/dist/frontend/lowering/lifetime-regions.js +216 -0
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +28 -2
- package/dist/frontend/lowering/lower-array-sort.js +112 -2
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +99 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +135 -131
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +4 -3
- package/dist/frontend/lowering/lower-classes.js +117 -13
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-console.d.ts +27 -0
- package/dist/frontend/lowering/lower-console.js +651 -0
- package/dist/frontend/lowering/lower-console.js.map +1 -0
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
- package/dist/frontend/lowering/lower-event-emitter.js +124 -38
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +272 -25
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +7 -3
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +25 -7
- package/dist/frontend/lowering/lower-generators.js +264 -113
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
- package/dist/frontend/lowering/lower-inspect.js +119 -18
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +24 -14
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +35 -1
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +66 -11
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +13 -10
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +47 -5
- package/dist/frontend/lowering/lowerer.js +235 -54
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +16 -0
- package/dist/frontend/lowering/nan-coded-reads.js +108 -1
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
- package/dist/frontend/lowering/regex-span-reads.js +164 -0
- package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.d.ts +4 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +2 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-bounds.test.js +27 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -1
- package/dist/frontend/lowering/split-consumers.js +2 -18
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/surfaces.js +115 -18
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +6 -1
- package/dist/frontend/lowering/union-retag.js +64 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +46 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
- package/dist/frontend/lowering/var-hoisting.js +261 -0
- package/dist/frontend/lowering/var-hoisting.js.map +1 -0
- package/dist/frontend/pipeline.js +5 -3
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -2
- package/dist/frontend/program.js +23 -5
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +13 -0
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +13 -1
- package/dist/frontend/type-mapper.js +160 -14
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +31 -2
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +157 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/function-references.d.ts +12 -0
- package/dist/ir/function-references.js +29 -0
- package/dist/ir/function-references.js.map +1 -0
- package/dist/ir/function-references.test.d.ts +1 -0
- package/dist/ir/function-references.test.js +277 -0
- package/dist/ir/function-references.test.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +7 -4
- package/dist/ir/int32-slots.js +215 -49
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +38 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +4 -4
- package/dist/ir/integer-ranges.js +89 -64
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +71 -9
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +3 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +111 -20
- package/dist/ir/ir.js +6 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +38 -3
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.js +1 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/traverse.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +201 -25
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +90 -7
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +159 -17
|
@@ -112,6 +112,10 @@ export interface ClassInfo {
|
|
|
112
112
|
* the base chain. The value names which SIDES the class carries. User
|
|
113
113
|
* `extends` of these classes is fenced at the declaration (phase 1). */
|
|
114
114
|
builtinStream?: "r" | "w" | "rw";
|
|
115
|
+
/** The synthetic LifetimeRegion class (@scriptc/experimental,
|
|
116
|
+
* lifetime-regions.ts): its constructor is synthesized with the class,
|
|
117
|
+
* and its methods lower at their call sites. */
|
|
118
|
+
lifetimeRegion?: true;
|
|
115
119
|
/** This class's own `emit` override in the FORWARDING SHAPE (the one
|
|
116
120
|
* EventEmitter member a subclass may re-declare): never in `methods` —
|
|
117
121
|
* emit calls keep routing through the emitter spoke, which lowers the
|
|
@@ -752,9 +756,6 @@ export declare function inheritsBuiltinErrorCtor(lowerer: Lowerer, info: ClassIn
|
|
|
752
756
|
/** The EventEmitter twin: a ctor-less chain into the emitter base
|
|
753
757
|
* inherits `new C()` — zero arguments (the options bag fences). */
|
|
754
758
|
export declare function inheritsBuiltinEmitterCtor(lowerer: Lowerer, info: ClassInfo): boolean;
|
|
755
|
-
/** Preserve argument evaluation order and option presence through builtin
|
|
756
|
-
* and inherited Error constructors. Checked-dynamic conversion retains
|
|
757
|
-
* Error identity and distinguishes a missing cause from undefined. */
|
|
758
759
|
export declare function errorConstructorArgs(lowerer: Lowerer, args: readonly ts.Expression[], loc: SrcLoc, blame: ts.Node): IrExpr[];
|
|
759
760
|
export declare function lowerNew(lowerer: Lowerer, expr: ts.NewExpression): IrExpr;
|
|
760
761
|
/** A getter/setter invocation over an accessor target's receiver — the
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { dynUndefinedExpr, nodeThrowExpr } from "../../ir/build.js";
|
|
1
|
+
import { dynUndefinedExpr, nodeThrowExpr, varRef } from "../../ir/build.js";
|
|
2
|
+
import { checkedIterableSpread } from "./checked-iterable-spread.js";
|
|
2
3
|
import { collectClassMethodMutations } from "./class-method-mutations.js";
|
|
3
4
|
import { InternalCompilerError } from "../../errors.js";
|
|
4
5
|
/* Class lowering: shape collection over the single-inheritance graph
|
|
@@ -30,7 +31,6 @@ import { STREAM_API_MEMBERS, STREAM_PROP_MEMBERS, UNDERSCORE_METHODS, lowerStrea
|
|
|
30
31
|
import { emitOverrideShapeReason, emitSpecSuperForward, emitterRooted, lowerEmitterSuperCall, } from "./lower-event-emitter.js";
|
|
31
32
|
import { declSymbolOf } from "./lower-modules.js";
|
|
32
33
|
import { classSymbolKeyOf, classSymbolKeyOfSymbol, symbolFieldDisplayName, } from "./symbol-fields.js";
|
|
33
|
-
import { builtinFenceHintOf } from "./surfaces.js";
|
|
34
34
|
import { lowerHttpAgentNew, lowerHttpServerNew } from "./lower-server.js";
|
|
35
35
|
import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, ambientUndefinedFnSymbolOf, fenceEarlyAliasUse, fenceEarlyNsMemberRef, nsMemberIdentOf, nsUndefRead, } from "./lower-namespaces.js";
|
|
36
36
|
import { mixinResultBindingClassOf } from "./lower-mixins.js";
|
|
@@ -1304,7 +1304,9 @@ mixin) {
|
|
|
1304
1304
|
lowerer.isStdlibGlobal(t.expression.expression, "globalThis")
|
|
1305
1305
|
? lowerer.builtinErrorInfoOf(resolved)
|
|
1306
1306
|
: null;
|
|
1307
|
-
if (globalError &&
|
|
1307
|
+
if (globalError &&
|
|
1308
|
+
globalError.def.name !== "%DOMException" &&
|
|
1309
|
+
globalError.def.name !== "%AggregateError") {
|
|
1308
1310
|
if (t.typeArguments)
|
|
1309
1311
|
lowerer.unsupported("SC1090", t, "extending generic classes");
|
|
1310
1312
|
base = globalError;
|
|
@@ -1433,6 +1435,11 @@ mixin) {
|
|
|
1433
1435
|
if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%DOMException") {
|
|
1434
1436
|
lowerer.unsupported("SC1090", t, "extending DOMException (its runtime layout carries hidden slots a subclass would overlap — extend Error and set name/code yourself)");
|
|
1435
1437
|
}
|
|
1438
|
+
// `extends AggregateError`: the errors list is the same kind of
|
|
1439
|
+
// hidden runtime slot.
|
|
1440
|
+
if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%AggregateError") {
|
|
1441
|
+
lowerer.unsupported("SC1090", t, "extending AggregateError (its runtime layout carries a hidden errors slot a subclass would overlap — extend Error and keep the list in a field)");
|
|
1442
|
+
}
|
|
1436
1443
|
const named = (symbol && lowerer.classBySymbol.get(symbol)) ??
|
|
1437
1444
|
lowerer.builtinErrorInfoOf(symbol) ??
|
|
1438
1445
|
lowerer.builtinEmitterInfoOf(symbol) ??
|
|
@@ -3066,6 +3073,10 @@ mixin) {
|
|
|
3066
3073
|
.map((f) => ({ name: f.name, type: f.type })),
|
|
3067
3074
|
],
|
|
3068
3075
|
...(methods.size > 0 ? { methods: [...methods.keys()] } : {}),
|
|
3076
|
+
...(() => {
|
|
3077
|
+
const names = classPrototypeNames(decl);
|
|
3078
|
+
return names.length > 0 ? { prototypeNames: names } : {};
|
|
3079
|
+
})(),
|
|
3069
3080
|
...(abstractClass ? { abstract: true } : {}),
|
|
3070
3081
|
...(() => {
|
|
3071
3082
|
const am = [...methods.entries()].filter(([, s]) => s.abstract === true).map(([n]) => n);
|
|
@@ -5512,6 +5523,33 @@ function lowerClassCtorInner(lowerer, info) {
|
|
|
5512
5523
|
lowerer.currentClass = prevClass;
|
|
5513
5524
|
}
|
|
5514
5525
|
}
|
|
5526
|
+
/** The string keys a class declaration puts on its prototype: concrete
|
|
5527
|
+
* instance methods and accessors with literal names. Symbol-keyed,
|
|
5528
|
+
* private, static and abstract members are not prototype string keys. */
|
|
5529
|
+
function classPrototypeNames(decl) {
|
|
5530
|
+
const names = [];
|
|
5531
|
+
for (const member of decl.members) {
|
|
5532
|
+
if (!ts.isMethodDeclaration(member) &&
|
|
5533
|
+
!ts.isGetAccessorDeclaration(member) &&
|
|
5534
|
+
!ts.isSetAccessorDeclaration(member))
|
|
5535
|
+
continue;
|
|
5536
|
+
if (ts
|
|
5537
|
+
.getModifiers(member)
|
|
5538
|
+
?.some((m) => m.kind === ts.SyntaxKind.StaticKeyword || m.kind === ts.SyntaxKind.AbstractKeyword))
|
|
5539
|
+
continue;
|
|
5540
|
+
const name = member.name;
|
|
5541
|
+
let text = null;
|
|
5542
|
+
if (ts.isIdentifier(name) || ts.isStringLiteralLike(name))
|
|
5543
|
+
text = name.text;
|
|
5544
|
+
else if (ts.isNumericLiteral(name))
|
|
5545
|
+
text = String(Number(name.text));
|
|
5546
|
+
else if (ts.isComputedPropertyName(name) && ts.isStringLiteralLike(name.expression))
|
|
5547
|
+
text = name.expression.text;
|
|
5548
|
+
if (text !== null && !names.includes(text))
|
|
5549
|
+
names.push(text);
|
|
5550
|
+
}
|
|
5551
|
+
return names;
|
|
5552
|
+
}
|
|
5515
5553
|
/** The lowered method-map name of a class member: identifier text, a
|
|
5516
5554
|
* COMPUTED name that folds to one compile-time string
|
|
5517
5555
|
* (foldedStringKeyOf — the object-literal computed-key machinery
|
|
@@ -6390,7 +6428,7 @@ export function superCallStmt(lowerer, info, thisLocal, args, loc) {
|
|
|
6390
6428
|
// lowerNew fences that). Zero options ⇒ exactly one init stmt.
|
|
6391
6429
|
return lowerStreamSuperCall(lowerer, info, base, [], thisLocal, loc, info.decl ?? info.ctor)[0];
|
|
6392
6430
|
}
|
|
6393
|
-
lowerer.
|
|
6431
|
+
lowerer.noteSuperConstructorEdge(`%${base.def.name}.constructor`);
|
|
6394
6432
|
return {
|
|
6395
6433
|
kind: "exprStmt",
|
|
6396
6434
|
expr: {
|
|
@@ -6616,6 +6654,67 @@ function inheritsBuiltinStreamCtor(lowerer, info) {
|
|
|
6616
6654
|
/** Preserve argument evaluation order and option presence through builtin
|
|
6617
6655
|
* and inherited Error constructors. Checked-dynamic conversion retains
|
|
6618
6656
|
* Error identity and distinguishes a missing cause from undefined. */
|
|
6657
|
+
/** `new AggregateError(errors, message, options)` in the spec's order:
|
|
6658
|
+
* the message and cause install first, then `errors` iterates (a
|
|
6659
|
+
* non-iterable throws out of the constructor). */
|
|
6660
|
+
function aggregateErrorConstructor(lowerer, loc) {
|
|
6661
|
+
const name = "%aggregate.new";
|
|
6662
|
+
if (lowerer.liftedFns.some((fn) => fn.name === name))
|
|
6663
|
+
return name;
|
|
6664
|
+
const type = { kind: "object", className: "%AggregateError" };
|
|
6665
|
+
const context = newFnCtx(false, null, null, type);
|
|
6666
|
+
lowerer.fnStack.push(context);
|
|
6667
|
+
try {
|
|
6668
|
+
const params = ["errors", "message", "options"].map((id) => ({
|
|
6669
|
+
localId: id,
|
|
6670
|
+
name: id,
|
|
6671
|
+
type: DYN,
|
|
6672
|
+
}));
|
|
6673
|
+
const error = varRef("error", type, loc);
|
|
6674
|
+
const list = checkedIterableSpread(lowerer, varRef("errors", DYN, loc), "", loc);
|
|
6675
|
+
lowerer.liftedFns.push({
|
|
6676
|
+
name,
|
|
6677
|
+
params,
|
|
6678
|
+
returnType: type,
|
|
6679
|
+
locals: [
|
|
6680
|
+
...params.map((p) => ({ id: p.localId, name: p.name, type: DYN, mutable: false })),
|
|
6681
|
+
{ id: "error", name: "error", type, mutable: false },
|
|
6682
|
+
...context.locals,
|
|
6683
|
+
],
|
|
6684
|
+
body: [
|
|
6685
|
+
{
|
|
6686
|
+
kind: "varDecl",
|
|
6687
|
+
localId: "error",
|
|
6688
|
+
init: {
|
|
6689
|
+
kind: "libCall",
|
|
6690
|
+
fn: "error.newAggregate",
|
|
6691
|
+
args: [varRef("message", DYN, loc), varRef("options", DYN, loc)],
|
|
6692
|
+
type,
|
|
6693
|
+
loc,
|
|
6694
|
+
},
|
|
6695
|
+
loc,
|
|
6696
|
+
},
|
|
6697
|
+
{
|
|
6698
|
+
kind: "exprStmt",
|
|
6699
|
+
expr: {
|
|
6700
|
+
kind: "libCall",
|
|
6701
|
+
fn: "error.aggregateSetErrors",
|
|
6702
|
+
args: [error, list],
|
|
6703
|
+
type: VOID,
|
|
6704
|
+
loc,
|
|
6705
|
+
},
|
|
6706
|
+
loc,
|
|
6707
|
+
},
|
|
6708
|
+
{ kind: "return", value: error, loc },
|
|
6709
|
+
],
|
|
6710
|
+
loc,
|
|
6711
|
+
});
|
|
6712
|
+
}
|
|
6713
|
+
finally {
|
|
6714
|
+
lowerer.fnStack.pop();
|
|
6715
|
+
}
|
|
6716
|
+
return name;
|
|
6717
|
+
}
|
|
6619
6718
|
export function errorConstructorArgs(lowerer, args, loc, blame) {
|
|
6620
6719
|
if (args.length > 2)
|
|
6621
6720
|
lowerer.unsupported("SC1090", blame, "Error constructors with more than two arguments");
|
|
@@ -6799,15 +6898,6 @@ export function lowerNew(lowerer, expr) {
|
|
|
6799
6898
|
const result = { kind: "libCall", fn: "intl.segmenterNew", args: [], type: DYN, loc };
|
|
6800
6899
|
return stmts.length ? { kind: "seqExpr", stmts, result, type: DYN, loc } : result;
|
|
6801
6900
|
}
|
|
6802
|
-
const consoleCtor = ts.isIdentifier(expr.expression)
|
|
6803
|
-
? lowerer.builtinImportOf(expr.expression)
|
|
6804
|
-
: ts.isPropertyAccessExpression(expr.expression) &&
|
|
6805
|
-
lowerer.builtinNamespaceModuleOf(expr.expression.expression) === "console"
|
|
6806
|
-
? { module: "console", member: expr.expression.name.text }
|
|
6807
|
-
: null;
|
|
6808
|
-
if (consoleCtor?.module === "console" && consoleCtor.member === "Console") {
|
|
6809
|
-
lowerer.noLowering("new console.Console", expr, builtinFenceHintOf("console", "Console"));
|
|
6810
|
-
}
|
|
6811
6901
|
// A package declaration without a compiled constructor cannot provide
|
|
6812
6902
|
// a runtime value. Report the package at the construction site.
|
|
6813
6903
|
{
|
|
@@ -7005,6 +7095,20 @@ export function lowerNew(lowerer, expr) {
|
|
|
7005
7095
|
loc,
|
|
7006
7096
|
};
|
|
7007
7097
|
}
|
|
7098
|
+
if (errInfo && errInfo.def.name === "%AggregateError") {
|
|
7099
|
+
const args = expr.arguments ?? [];
|
|
7100
|
+
if (args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
7101
|
+
lowerer.noLowering(`new AggregateError with this argument list`, expr);
|
|
7102
|
+
}
|
|
7103
|
+
const errors = args[0] ? lowerer.lowerExprExpecting(args[0], DYN) : dynUndefinedExpr(loc);
|
|
7104
|
+
return {
|
|
7105
|
+
kind: "call",
|
|
7106
|
+
callee: aggregateErrorConstructor(lowerer, loc),
|
|
7107
|
+
args: [errors, ...lowerer.errorConstructorArgs(args.slice(1), loc, expr)],
|
|
7108
|
+
type: { kind: "object", className: "%AggregateError" },
|
|
7109
|
+
loc,
|
|
7110
|
+
};
|
|
7111
|
+
}
|
|
7008
7112
|
if (errInfo) {
|
|
7009
7113
|
const args = lowerer.errorConstructorArgs(expr.arguments ?? [], loc, expr);
|
|
7010
7114
|
return {
|