@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
|
@@ -1,11 +1,51 @@
|
|
|
1
|
-
import { CAUGHT, DYN } from "../../ir/ir.js";
|
|
1
|
+
import { CAUGHT, DYN, funcOf } from "../../ir/ir.js";
|
|
2
2
|
import { varRef } from "../../ir/build.js";
|
|
3
3
|
import { newFnCtx } from "./lowerer.js";
|
|
4
4
|
import { checkedIterableSpread } from "./checked-iterable-spread.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const COMBINATOR_LIB_CALLS = {
|
|
6
|
+
all: "dyn.promiseAll",
|
|
7
|
+
allSettled: "dyn.promiseAllSettled",
|
|
8
|
+
any: "dyn.promiseAny",
|
|
9
|
+
};
|
|
10
|
+
/** `value.then` through the program's own property dispatch, so a class
|
|
11
|
+
* instance's `then` method is visible to the runtime's thenable check. */
|
|
12
|
+
function thenReader(lowerer, loc) {
|
|
13
|
+
const name = "%promise.thenOf";
|
|
14
|
+
const type = funcOf([DYN], DYN);
|
|
15
|
+
if (!lowerer.liftedFns.some((fn) => fn.name === name)) {
|
|
16
|
+
lowerer.liftedFns.push({
|
|
17
|
+
name,
|
|
18
|
+
params: [{ localId: "value", name: "value", type: DYN }],
|
|
19
|
+
returnType: DYN,
|
|
20
|
+
locals: [{ id: "value", name: "value", type: DYN, mutable: false }],
|
|
21
|
+
body: [
|
|
22
|
+
{
|
|
23
|
+
kind: "return",
|
|
24
|
+
value: {
|
|
25
|
+
kind: "dynKeyGet",
|
|
26
|
+
value: varRef("value", DYN, loc),
|
|
27
|
+
key: { kind: "strLit", value: "then", type: { kind: "string" }, loc },
|
|
28
|
+
type: DYN,
|
|
29
|
+
loc,
|
|
30
|
+
},
|
|
31
|
+
loc,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
loc,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
kind: "dynFrom",
|
|
39
|
+
value: { kind: "closure", fnName: name, captures: [], type, loc },
|
|
40
|
+
type: DYN,
|
|
41
|
+
loc,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** JavaScript builds Promise.all, Promise.allSettled and Promise.any
|
|
45
|
+
* inputs at runtime. Iterator failures reject the result instead of
|
|
46
|
+
* escaping the synchronous call. */
|
|
47
|
+
export function checkedPromiseAll(lowerer, source, loc, member = "all") {
|
|
48
|
+
const name = `%promise.${member}.checked`;
|
|
9
49
|
const type = { kind: "promise", inner: DYN };
|
|
10
50
|
if (!lowerer.liftedFns.some((fn) => fn.name === name)) {
|
|
11
51
|
const context = newFnCtx(false, null, null, type);
|
|
@@ -27,7 +67,13 @@ export function checkedPromiseAll(lowerer, source, loc) {
|
|
|
27
67
|
tryBody: [
|
|
28
68
|
{
|
|
29
69
|
kind: "return",
|
|
30
|
-
value: {
|
|
70
|
+
value: {
|
|
71
|
+
kind: "libCall",
|
|
72
|
+
fn: COMBINATOR_LIB_CALLS[member],
|
|
73
|
+
args: [entries, thenReader(lowerer, loc)],
|
|
74
|
+
type,
|
|
75
|
+
loc,
|
|
76
|
+
},
|
|
31
77
|
loc,
|
|
32
78
|
},
|
|
33
79
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checked-promise-all.js","sourceRoot":"","sources":["../../../src/frontend/lowering/checked-promise-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAyC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"checked-promise-all.js","sourceRoot":"","sources":["../../../src/frontend/lowering/checked-promise-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,10 @@ import { type Lowerer } from "./lowerer.js";
|
|
|
3
3
|
import { type ClassInfo } from "./lower-classes.js";
|
|
4
4
|
export declare function classInstanceOf(lowerer: Lowerer, value: IrExpr, info: ClassInfo, loc: SrcLoc, classValue?: IrExpr): IrExpr;
|
|
5
5
|
export declare function classPropertiesHelper(lowerer: Lowerer, loc: SrcLoc, readOnly?: boolean): IrFunction;
|
|
6
|
-
/** A for-in presence recheck
|
|
7
|
-
* value conversion or a dispatch branch for every possible member name.
|
|
6
|
+
/** A for-in presence recheck asks the live property table first, avoiding
|
|
7
|
+
* value conversion or a dispatch branch for every possible member name.
|
|
8
|
+
* Declared fields of a compiled class live in its native layout rather
|
|
9
|
+
* than that table, so a miss rechecks the instance itself. */
|
|
8
10
|
export declare function classForInHasKey(lowerer: Lowerer, value: IrExpr, key: IrExpr, loc: SrcLoc): IrExpr;
|
|
9
11
|
/** Record field creation after the dispatch worklist closes, including writes
|
|
10
12
|
* in generated member tables. Native values stay in their slots; the bag
|
|
@@ -50,7 +52,8 @@ export declare class ClassDynamicDispatch {
|
|
|
50
52
|
private readonly prototypeIdentityClasses;
|
|
51
53
|
private readonly instancePrototypes;
|
|
52
54
|
private readonly checkedCasts;
|
|
53
|
-
|
|
55
|
+
/** The for-in key helpers, by libCall (dyn and native string[] keys). */
|
|
56
|
+
private readonly enumerations;
|
|
54
57
|
private readonly enumerationClasses;
|
|
55
58
|
process(lowerer: Lowerer, functions: readonly IrFunction[]): boolean;
|
|
56
59
|
/** The receiver's own dynamic properties for a read: undefined while it has
|
|
@@ -222,8 +222,10 @@ export function classPropertiesHelper(lowerer, loc, readOnly = false) {
|
|
|
222
222
|
lowerer.liftedFns.push(helper);
|
|
223
223
|
return helper;
|
|
224
224
|
}
|
|
225
|
-
/** A for-in presence recheck
|
|
226
|
-
* value conversion or a dispatch branch for every possible member name.
|
|
225
|
+
/** A for-in presence recheck asks the live property table first, avoiding
|
|
226
|
+
* value conversion or a dispatch branch for every possible member name.
|
|
227
|
+
* Declared fields of a compiled class live in its native layout rather
|
|
228
|
+
* than that table, so a miss rechecks the instance itself. */
|
|
227
229
|
export function classForInHasKey(lowerer, value, key, loc) {
|
|
228
230
|
const name = "%dyn.class.forInHasKey";
|
|
229
231
|
if (!lowerer.liftedFns.some((fn) => fn.name === name)) {
|
|
@@ -242,18 +244,31 @@ export function classForInHasKey(lowerer, value, key, loc) {
|
|
|
242
244
|
{
|
|
243
245
|
kind: "return",
|
|
244
246
|
value: {
|
|
245
|
-
kind: "
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
247
|
+
kind: "logical",
|
|
248
|
+
op: "||",
|
|
249
|
+
left: {
|
|
250
|
+
kind: "libCall",
|
|
251
|
+
fn: "dyn.hasKey",
|
|
252
|
+
args: [
|
|
253
|
+
{
|
|
254
|
+
kind: "call",
|
|
255
|
+
callee: classPropertiesHelper(lowerer, loc).name,
|
|
256
|
+
args: [varRef("value", DYN, loc)],
|
|
257
|
+
type: DYN,
|
|
258
|
+
loc,
|
|
259
|
+
},
|
|
260
|
+
varRef("key", STRING, loc),
|
|
261
|
+
],
|
|
262
|
+
type: BOOL,
|
|
263
|
+
loc,
|
|
264
|
+
},
|
|
265
|
+
right: {
|
|
266
|
+
kind: "libCall",
|
|
267
|
+
fn: "dyn.hasKey",
|
|
268
|
+
args: [varRef("value", DYN, loc), varRef("key", STRING, loc)],
|
|
269
|
+
type: BOOL,
|
|
270
|
+
loc,
|
|
271
|
+
},
|
|
257
272
|
type: BOOL,
|
|
258
273
|
loc,
|
|
259
274
|
},
|
|
@@ -463,7 +478,8 @@ export class ClassDynamicDispatch {
|
|
|
463
478
|
prototypeIdentityClasses = new Set();
|
|
464
479
|
instancePrototypes = new Map();
|
|
465
480
|
checkedCasts = new Map();
|
|
466
|
-
|
|
481
|
+
/** The for-in key helpers, by libCall (dyn and native string[] keys). */
|
|
482
|
+
enumerations = new Map();
|
|
467
483
|
enumerationClasses = new Set();
|
|
468
484
|
process(lowerer, functions) {
|
|
469
485
|
// Dispatch tables grow between worklist waves. Keep their normalization
|
|
@@ -559,6 +575,7 @@ export class ClassDynamicDispatch {
|
|
|
559
575
|
expr.fn === "dyn.toString" ||
|
|
560
576
|
expr.fn === "dyn.stringConstructor" ||
|
|
561
577
|
expr.fn === "dyn.forInKeys" ||
|
|
578
|
+
expr.fn === "dyn.forInKeyStrings" ||
|
|
562
579
|
expr.fn === "dyn.hasKeyComputed" ||
|
|
563
580
|
expr.fn === "dyn.hasOwnComputed" ||
|
|
564
581
|
expr.fn === "dyn.propertyIsEnumerableComputed" ||
|
|
@@ -1198,27 +1215,32 @@ export class ClassDynamicDispatch {
|
|
|
1198
1215
|
loc: expr.loc,
|
|
1199
1216
|
};
|
|
1200
1217
|
}
|
|
1201
|
-
if (expr.kind === "libCall" &&
|
|
1202
|
-
|
|
1218
|
+
if (expr.kind === "libCall" &&
|
|
1219
|
+
(expr.fn === "dyn.forInKeys" || expr.fn === "dyn.forInKeyStrings")) {
|
|
1220
|
+
let enumeration = this.enumerations.get(expr.fn);
|
|
1221
|
+
if (!enumeration) {
|
|
1203
1222
|
const loc = expr.loc;
|
|
1204
1223
|
const value = varRef("p.0", DYN, loc);
|
|
1205
|
-
|
|
1206
|
-
name: "
|
|
1224
|
+
enumeration = {
|
|
1225
|
+
name: expr.fn === "dyn.forInKeys"
|
|
1226
|
+
? "%dyn.class.forInKeys"
|
|
1227
|
+
: "%dyn.class.forInKeyStrings",
|
|
1207
1228
|
params: [{ localId: "p.0", name: "value", type: DYN }],
|
|
1208
|
-
returnType:
|
|
1229
|
+
returnType: expr.type,
|
|
1209
1230
|
locals: [{ id: "p.0", name: "value", type: DYN, mutable: false }],
|
|
1210
1231
|
body: [{ kind: "return", value: { ...expr, args: [value] }, loc }],
|
|
1211
1232
|
loc,
|
|
1212
1233
|
};
|
|
1213
|
-
this.
|
|
1214
|
-
|
|
1234
|
+
this.enumerations.set(expr.fn, enumeration);
|
|
1235
|
+
this.generated.add(enumeration);
|
|
1236
|
+
lowerer.liftedFns.push(enumeration);
|
|
1215
1237
|
changed = true;
|
|
1216
1238
|
}
|
|
1217
1239
|
return {
|
|
1218
1240
|
kind: "call",
|
|
1219
|
-
callee:
|
|
1241
|
+
callee: enumeration.name,
|
|
1220
1242
|
args: expr.args,
|
|
1221
|
-
type:
|
|
1243
|
+
type: expr.type,
|
|
1222
1244
|
loc: expr.loc,
|
|
1223
1245
|
};
|
|
1224
1246
|
}
|
|
@@ -1384,7 +1406,7 @@ export class ClassDynamicDispatch {
|
|
|
1384
1406
|
? {
|
|
1385
1407
|
...computedProbe,
|
|
1386
1408
|
fn: probe === "in"
|
|
1387
|
-
? "dyn.
|
|
1409
|
+
? "dyn.in"
|
|
1388
1410
|
: probe === "own"
|
|
1389
1411
|
? "dyn.hasOwn"
|
|
1390
1412
|
: "dyn.propertyIsEnumerable",
|
|
@@ -2508,21 +2530,22 @@ export class ClassDynamicDispatch {
|
|
|
2508
2530
|
changed = true;
|
|
2509
2531
|
}
|
|
2510
2532
|
}
|
|
2511
|
-
|
|
2533
|
+
for (const [fn, enumeration] of this.enumerations)
|
|
2512
2534
|
for (const plan of this.propertyReceivers(lowerer, false, false)) {
|
|
2513
|
-
|
|
2535
|
+
const classKey = `${fn}:${plan.key}`;
|
|
2536
|
+
if (!plan.info.def.tracksOwnFields || this.enumerationClasses.has(classKey))
|
|
2514
2537
|
continue;
|
|
2515
|
-
this.enumerationClasses.add(
|
|
2516
|
-
const loc =
|
|
2538
|
+
this.enumerationClasses.add(classKey);
|
|
2539
|
+
const loc = enumeration.loc;
|
|
2517
2540
|
const { condition } = this.propertyReceiver(plan, loc);
|
|
2518
2541
|
const bag = this.readPropertyBagOrEmpty(lowerer, varRef("p.0", DYN, loc), loc);
|
|
2519
|
-
|
|
2542
|
+
enumeration.body.unshift({
|
|
2520
2543
|
kind: "if",
|
|
2521
2544
|
cond: condition,
|
|
2522
2545
|
then: [
|
|
2523
2546
|
{
|
|
2524
2547
|
kind: "return",
|
|
2525
|
-
value: { kind: "libCall", fn
|
|
2548
|
+
value: { kind: "libCall", fn, args: [bag], type: enumeration.returnType, loc },
|
|
2526
2549
|
loc,
|
|
2527
2550
|
},
|
|
2528
2551
|
],
|