@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lower-array-sort.test.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-array-sort.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"lower-array-sort.test.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-array-sort.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,7 @@ import { httpClientFnBindingOf, lowerCompatReqStreamOptionalCall, lowerHttpClien
|
|
|
45
45
|
import { EMITTER_API_MEMBERS, exactClassOfReceiver, exactInstanceClassOf, findGenericMethodOn, lowerClassGenericMethodCall, lowerStaticMethodCall, lowerStaticFieldRead, returnsOnlyThis, storedClassValueType, } from "./lower-classes.js";
|
|
46
46
|
import { classCallbackCall, isClassCallback } from "./class-callbacks.js";
|
|
47
47
|
import { emitterRooted, lowerEmitterMethodCall } from "./lower-event-emitter.js";
|
|
48
|
-
import {
|
|
48
|
+
import { lowerConsoleInstanceCall, lowerConsoleMethodCall, lowerConsoleOutput, } from "./lower-console.js";
|
|
49
49
|
import { STREAM_API_MEMBERS, lowerStreamMethodCall, lowerStreamStaticCall, streamSidesOf, } from "./lower-stream.js";
|
|
50
50
|
import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, ambientUndefinedFnSymbolOf, contextualUndefReadType, fenceEarlyAliasUse, fenceEarlyNsMemberRef, nsMemberIdentOf, nsUndefRead, } from "./lower-namespaces.js";
|
|
51
51
|
import { expandoMemberRead } from "./lower-expando.js";
|
|
@@ -205,7 +205,8 @@ export function lowerCall(lowerer, expr) {
|
|
|
205
205
|
return lowerer.lowerSuperMethodCall(expr, expr.expression);
|
|
206
206
|
}
|
|
207
207
|
const consoleMember = lowerer.consoleCallMember(expr);
|
|
208
|
-
|
|
208
|
+
const consoleMethod = consoleMember === null ? lowerer.consoleMethodMember(expr) : null;
|
|
209
|
+
if (consoleMember !== null || consoleMethod !== null) {
|
|
209
210
|
// A namespace returned by user code must evaluate before the log
|
|
210
211
|
// arguments. Only the global and literal builtin require plumbing
|
|
211
212
|
// have no receiver evaluation to preserve.
|
|
@@ -220,7 +221,10 @@ export function lowerCall(lowerer, expr) {
|
|
|
220
221
|
created?.spec !== "console"
|
|
221
222
|
? lowerer.lowerExpr(access.expression)
|
|
222
223
|
: null;
|
|
223
|
-
const
|
|
224
|
+
const result = consoleMember !== null
|
|
225
|
+
? lowerConsoleOutput(lowerer, expr, consoleMember === "log" || consoleMember === "info" || consoleMember === "debug", `console.${consoleMember}`, loc)
|
|
226
|
+
: lowerConsoleMethodCall(lowerer, expr, consoleMethod, loc);
|
|
227
|
+
return receiver === null
|
|
224
228
|
? result
|
|
225
229
|
: {
|
|
226
230
|
kind: "seqExpr",
|
|
@@ -229,99 +233,10 @@ export function lowerCall(lowerer, expr) {
|
|
|
229
233
|
type: result.type,
|
|
230
234
|
loc,
|
|
231
235
|
};
|
|
232
|
-
// console.log/info/debug write stdout; console.error and console.warn
|
|
233
|
-
// are one stream in Node (warn IS error, info and debug ARE log) and
|
|
234
|
-
// write stderr with the exact same formatting. Node's formatter is
|
|
235
|
-
// formatWithOptions: string arguments print verbatim, numbers and
|
|
236
|
-
// booleans directly, and EVERYTHING else through util.inspect at the
|
|
237
|
-
// rest-args depth 2 — which the static inspect machinery renders
|
|
238
|
-
// here (arrays, records, unions, Maps/Sets, undefined/null, ...);
|
|
239
|
-
// shapes inspect cannot render keep honest per-argument fences.
|
|
240
|
-
const surface = `console.${consoleMember}`;
|
|
241
|
-
const stdoutMember = consoleMember === "log" || consoleMember === "info" || consoleMember === "debug";
|
|
242
|
-
// A LITERAL format string with %-specifiers and further arguments
|
|
243
|
-
// (`console.log('Mismatched %s function calls. Expected %s, actual
|
|
244
|
-
// %d.', name, seg, n)` — test/common's exit report): Node's console
|
|
245
|
-
// formatter IS util.format — route through the format lowering and
|
|
246
|
-
// print its one string. Specifier-free first strings keep the
|
|
247
|
-
// plain space-joined path below (identical output, cheaper).
|
|
248
|
-
if (expr.arguments.length > 1 &&
|
|
249
|
-
expr.arguments[0] !== undefined &&
|
|
250
|
-
(ts.isStringLiteral(expr.arguments[0]) ||
|
|
251
|
-
ts.isNoSubstitutionTemplateLiteral(expr.arguments[0])) &&
|
|
252
|
-
/%[sdifjoOc%]/.test(expr.arguments[0].text)) {
|
|
253
|
-
const formatted = lowerFormatCall(lowerer, expr, loc, false);
|
|
254
|
-
return withReceiver({
|
|
255
|
-
kind: "intrinsic",
|
|
256
|
-
name: stdoutMember ? "console.log" : "console.error",
|
|
257
|
-
args: [formatted],
|
|
258
|
-
type: VOID,
|
|
259
|
-
loc,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
const args = expr.arguments.map((a) => {
|
|
263
|
-
const lowered = lowerer.lowerExpr(a);
|
|
264
|
-
// Checked-dynamic values carry their own shape, so the runtime
|
|
265
|
-
// renders them exactly like Node's console formatter renders a
|
|
266
|
-
// non-format argument: strings VERBATIM, everything else through
|
|
267
|
-
// inspect at the rest-args depth 2 (formatWithOptions) — scalar
|
|
268
|
-
// kinds byte-exactly, boxed functions as [Function: name] /
|
|
269
|
-
// [Function (anonymous)], composites through the dyn walk
|
|
270
|
-
// (insp.dyn). Never throws — Node's console.log never does.
|
|
271
|
-
if (lowered.type.kind === "dyn") {
|
|
272
|
-
return {
|
|
273
|
-
kind: "libCall",
|
|
274
|
-
fn: "insp.dynS",
|
|
275
|
-
args: [lowered, { kind: "numLit", value: 2, type: F64, loc }],
|
|
276
|
-
type: STRING,
|
|
277
|
-
loc,
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
// A function VALUE prints Node's [Function: name] form by boxing
|
|
281
|
-
// across the checked-dynamic boundary (the box carries the
|
|
282
|
-
// best-effort reference-site name — the documented naming stance)
|
|
283
|
-
// and rendering through the same dyn arm.
|
|
284
|
-
if (lowered.type.kind === "func" &&
|
|
285
|
-
canBoxFuncIntoDyn(lowered.type, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))) {
|
|
286
|
-
const name = jsFuncNameOf(a);
|
|
287
|
-
const boxed = {
|
|
288
|
-
kind: "dynFrom",
|
|
289
|
-
value: lowered,
|
|
290
|
-
type: DYN,
|
|
291
|
-
...(name !== null ? { fnName: name } : {}),
|
|
292
|
-
loc,
|
|
293
|
-
};
|
|
294
|
-
return {
|
|
295
|
-
kind: "libCall",
|
|
296
|
-
fn: "insp.dynS",
|
|
297
|
-
args: [boxed, { kind: "numLit", value: 2, type: F64, loc }],
|
|
298
|
-
type: STRING,
|
|
299
|
-
loc,
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
// number/string/boolean ride the ScrLogArg protocol directly (the
|
|
303
|
-
// runtime formats them Node-exactly — including -0).
|
|
304
|
-
if (lowered.type.kind === "f64" ||
|
|
305
|
-
lowered.type.kind === "string" ||
|
|
306
|
-
lowered.type.kind === "bool") {
|
|
307
|
-
return lowered;
|
|
308
|
-
}
|
|
309
|
-
// Everything else renders through the static inspect machinery at
|
|
310
|
-
// the rest-args depth 2 (formatWithOptions): arrays, records,
|
|
311
|
-
// unions (a string arm prints VERBATIM — the console.log vs
|
|
312
|
-
// inspect distinction, per arm), Maps/Sets, plain undefined/null,
|
|
313
|
-
// regexes, symbols, error values, Buffers. Shapes inspect cannot
|
|
314
|
-
// render fence honestly with the reason.
|
|
315
|
-
return lowerConsoleInspectArg(lowerer, a, lowerer.deferredFieldSlot(lowered) ?? lowered, surface, loc);
|
|
316
|
-
});
|
|
317
|
-
return withReceiver({
|
|
318
|
-
kind: "intrinsic",
|
|
319
|
-
name: stdoutMember ? "console.log" : "console.error",
|
|
320
|
-
args,
|
|
321
|
-
type: VOID,
|
|
322
|
-
loc,
|
|
323
|
-
});
|
|
324
236
|
}
|
|
237
|
+
const consoleInstanceCall = lowerConsoleInstanceCall(lowerer, expr, loc);
|
|
238
|
+
if (consoleInstanceCall)
|
|
239
|
+
return consoleInstanceCall;
|
|
325
240
|
if (ts.isPropertyAccessExpression(expr.expression) &&
|
|
326
241
|
TIMER_MODULE_MEMBERS.has(expr.expression.name.text) &&
|
|
327
242
|
lowerer.stdlibGlobalMember(expr.expression, "globalThis") === expr.expression.name.text) {
|
|
@@ -713,10 +628,9 @@ export function lowerCall(lowerer, expr) {
|
|
|
713
628
|
// shadowing the name has a different, non-stdlib symbol. The
|
|
714
629
|
// ENCODERS accept string | number | boolean — the spec ToStrings
|
|
715
630
|
// first, which ensureString reproduces exactly for these types;
|
|
716
|
-
// they
|
|
717
|
-
//
|
|
718
|
-
//
|
|
719
|
-
// string-only argument rule.
|
|
631
|
+
// they THROW the spec's URIError on an unpaired surrogate. decode
|
|
632
|
+
// THROWS the spec's URIError ("URI malformed") catchably and keeps
|
|
633
|
+
// the string-only argument rule.
|
|
720
634
|
if ((expr.expression.text === "encodeURIComponent" ||
|
|
721
635
|
expr.expression.text === "encodeURI" ||
|
|
722
636
|
expr.expression.text === "decodeURI" ||
|
|
@@ -3895,6 +3809,21 @@ function implicitReceiverOverloadReturn(lowerer, expr) {
|
|
|
3895
3809
|
* with no honest bridge keep coerceInto's exactness fences. Calls that
|
|
3896
3810
|
* resolved to the implementation itself (non-overloaded callees) pass
|
|
3897
3811
|
* through untouched. */
|
|
3812
|
+
/** A body-less abstract method that is its name's only declaration is the
|
|
3813
|
+
* virtual slot itself, not an overload signature: its lowered return is the
|
|
3814
|
+
* family ABI every override shares, so the call keeps that result instead
|
|
3815
|
+
* of narrowing it to the declared type. */
|
|
3816
|
+
function isSoleAbstractMethod(decl) {
|
|
3817
|
+
if (!ts.isMethodDeclaration(decl))
|
|
3818
|
+
return false;
|
|
3819
|
+
if (!ts.getModifiers(decl)?.some((m) => m.kind === ts.SyntaxKind.AbstractKeyword))
|
|
3820
|
+
return false;
|
|
3821
|
+
const owner = decl.parent;
|
|
3822
|
+
if (!ts.isClassDeclaration(owner) && !ts.isClassExpression(owner))
|
|
3823
|
+
return false;
|
|
3824
|
+
const name = decl.name.getText();
|
|
3825
|
+
return !owner.members.some((member) => member !== decl && ts.isMethodDeclaration(member) && member.name.getText() === name);
|
|
3826
|
+
}
|
|
3898
3827
|
function reconcileOverloadReturn(lowerer, expr, call) {
|
|
3899
3828
|
const rsig = lowerer.checker.getResolvedSignature(expr);
|
|
3900
3829
|
const rdecl = rsig ? lowerer.checker.signatureDeclaration(rsig) : undefined;
|
|
@@ -3910,7 +3839,8 @@ function reconcileOverloadReturn(lowerer, expr, call) {
|
|
|
3910
3839
|
const resolvedOverload = rsig &&
|
|
3911
3840
|
rdecl &&
|
|
3912
3841
|
(ts.isFunctionDeclaration(rdecl) || ts.isMethodDeclaration(rdecl)) &&
|
|
3913
|
-
!rdecl.body
|
|
3842
|
+
!rdecl.body &&
|
|
3843
|
+
!isSoleAbstractMethod(rdecl)
|
|
3914
3844
|
? lowerer.mapTypeOf(lowerer.checker.getReturnTypeOfSignature(rsig))
|
|
3915
3845
|
: null;
|
|
3916
3846
|
const rt = resolvedOverload ?? implicitReceiverOverloadReturn(lowerer, expr);
|
|
@@ -4395,17 +4325,46 @@ export function lowerPromiseMethodCall(lowerer, call, access) {
|
|
|
4395
4325
|
? [{ kind: "varDecl", localId: vLocal.id, init: awaitE, loc }]
|
|
4396
4326
|
: [{ kind: "exprStmt", expr: awaitE, loc }];
|
|
4397
4327
|
const resultOf = (value, returnsPromise = false) => {
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4328
|
+
if (value.type.kind === "promise")
|
|
4329
|
+
return [lowerer.adoptingReturn(value, R, (e) => lowerer.coerceInto(call, e, R))];
|
|
4330
|
+
if (returnsPromise) {
|
|
4331
|
+
// A boxed handler's promise result adopts too: the then job's
|
|
4332
|
+
// turn after the call, then the await of the returned value.
|
|
4333
|
+
const hLocal = lowerer.declareHiddenLocal("h", DYN);
|
|
4334
|
+
const settledDyn = {
|
|
4335
|
+
kind: "libCall",
|
|
4336
|
+
fn: "async.awaitDyn",
|
|
4337
|
+
args: [{ kind: "varRef", localId: hLocal.id, type: DYN, loc }],
|
|
4338
|
+
type: DYN,
|
|
4339
|
+
loc,
|
|
4340
|
+
};
|
|
4341
|
+
return [
|
|
4342
|
+
{ kind: "varDecl", localId: hLocal.id, init: value, loc },
|
|
4343
|
+
{
|
|
4344
|
+
kind: "exprStmt",
|
|
4345
|
+
expr: { kind: "libCall", fn: "async.hop", args: [], type: VOID, loc },
|
|
4346
|
+
loc,
|
|
4347
|
+
},
|
|
4348
|
+
...(R.kind === "void"
|
|
4349
|
+
? [
|
|
4350
|
+
{ kind: "exprStmt", expr: settledDyn, loc },
|
|
4351
|
+
{ kind: "return", value: null, loc },
|
|
4352
|
+
]
|
|
4353
|
+
: [
|
|
4354
|
+
{
|
|
4355
|
+
kind: "return",
|
|
4356
|
+
value: lowerer.coerceInto(call, settledDyn, R),
|
|
4357
|
+
loc,
|
|
4358
|
+
},
|
|
4359
|
+
]),
|
|
4360
|
+
];
|
|
4361
|
+
}
|
|
4403
4362
|
return R.kind === "void"
|
|
4404
4363
|
? [
|
|
4405
|
-
{ kind: "exprStmt", expr:
|
|
4364
|
+
{ kind: "exprStmt", expr: value, loc },
|
|
4406
4365
|
{ kind: "return", value: null, loc },
|
|
4407
4366
|
]
|
|
4408
|
-
: [{ kind: "return", value: lowerer.coerceInto(call,
|
|
4367
|
+
: [{ kind: "return", value: lowerer.coerceInto(call, value, R), loc }];
|
|
4409
4368
|
};
|
|
4410
4369
|
const rejectedCall = rLocal
|
|
4411
4370
|
? {
|
|
@@ -4677,29 +4636,14 @@ export function lowerPromiseMethodCall(lowerer, call, access) {
|
|
|
4677
4636
|
loc,
|
|
4678
4637
|
};
|
|
4679
4638
|
// The handler's result: promise returns flatten exactly like
|
|
4680
|
-
// `return p` in any async body (
|
|
4681
|
-
//
|
|
4682
|
-
if (
|
|
4683
|
-
|
|
4684
|
-
body.push({
|
|
4685
|
-
kind: "exprStmt",
|
|
4686
|
-
expr: { kind: "awaitExpr", value: handlerCall, type: handlerCall.type.inner, loc },
|
|
4687
|
-
loc,
|
|
4688
|
-
});
|
|
4689
|
-
}
|
|
4690
|
-
else {
|
|
4691
|
-
body.push({ kind: "exprStmt", expr: handlerCall, loc });
|
|
4692
|
-
}
|
|
4693
|
-
body.push({ kind: "return", value: null, loc });
|
|
4639
|
+
// `return p` in any async body (the spec's thenable adoption);
|
|
4640
|
+
// everything else coerces into R.
|
|
4641
|
+
if (handlerCall.type.kind === "promise" && R.kind !== "promise") {
|
|
4642
|
+
body.push(lowerer.adoptingReturn(handlerCall, R, (e) => lowerer.coerceInto(call, e, R)));
|
|
4694
4643
|
}
|
|
4695
|
-
else if (
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
value: handlerCall,
|
|
4699
|
-
type: handlerCall.type.inner,
|
|
4700
|
-
loc,
|
|
4701
|
-
};
|
|
4702
|
-
body.push({ kind: "return", value: lowerer.coerceInto(call, awaited, R), loc });
|
|
4644
|
+
else if (R.kind === "void") {
|
|
4645
|
+
body.push({ kind: "exprStmt", expr: handlerCall, loc });
|
|
4646
|
+
body.push({ kind: "return", value: null, loc });
|
|
4703
4647
|
}
|
|
4704
4648
|
else {
|
|
4705
4649
|
body.push({ kind: "return", value: lowerer.coerceInto(call, handlerCall, R), loc });
|
|
@@ -5681,6 +5625,17 @@ function objectIsDisjointFalse(left, right, loc) {
|
|
|
5681
5625
|
return answer;
|
|
5682
5626
|
return { kind: "seqExpr", stmts, result: answer, type: BOOL, loc };
|
|
5683
5627
|
}
|
|
5628
|
+
/** A native [string, any][]: the result Object.entries builds directly
|
|
5629
|
+
* from a checked-dynamic value's pairs (dyn.objEntryPairs). */
|
|
5630
|
+
function isDynEntryPairsType(lowerer, t) {
|
|
5631
|
+
if (t.kind !== "array" || t.elem.kind !== "record")
|
|
5632
|
+
return false;
|
|
5633
|
+
const shape = lowerer.shapes.get(t.elem.shapeId);
|
|
5634
|
+
if (!shape?.tuple || shape.indexValue || shape.fields.length !== 2)
|
|
5635
|
+
return false;
|
|
5636
|
+
const field = (name) => shape.fields.find((f) => f.name === name)?.type;
|
|
5637
|
+
return field("0")?.kind === "string" && field("1")?.kind === "dyn";
|
|
5638
|
+
}
|
|
5684
5639
|
function lowerObjectStaticCall(lowerer, call, access) {
|
|
5685
5640
|
if (call.questionDotToken || access.questionDotToken)
|
|
5686
5641
|
return null;
|
|
@@ -5934,6 +5889,12 @@ function lowerObjectStaticCall(lowerer, call, access) {
|
|
|
5934
5889
|
proto.type.kind === "bool" ||
|
|
5935
5890
|
proto.type.kind === "string")
|
|
5936
5891
|
proto = { kind: "dynFrom", value: proto, type: DYN, loc };
|
|
5892
|
+
// Typed records, arrays and class instances stay live prototypes.
|
|
5893
|
+
if ((proto.type.kind === "record" ||
|
|
5894
|
+
proto.type.kind === "array" ||
|
|
5895
|
+
proto.type.kind === "object") &&
|
|
5896
|
+
canConvertToDyn(proto.type, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id)))
|
|
5897
|
+
proto = lowerer.coerceInto(protoNode, proto, DYN);
|
|
5937
5898
|
if (proto.type.kind === "dyn") {
|
|
5938
5899
|
if (call.arguments.length === 1)
|
|
5939
5900
|
return { kind: "libCall", fn: "dyn.objCreate", args: [proto], type: DYN, loc };
|
|
@@ -6543,6 +6504,29 @@ function lowerObjectStaticCall(lowerer, call, access) {
|
|
|
6543
6504
|
let v = lowerer.lowerExpr(argNode);
|
|
6544
6505
|
if (v.type.kind !== "dyn")
|
|
6545
6506
|
v = { kind: "dynFrom", value: v, type: DYN, loc: locOf(call) };
|
|
6507
|
+
// In TypeScript the keys come back as a native string[] and the
|
|
6508
|
+
// entries as a native [string, any][]: the checker keeps every later
|
|
6509
|
+
// write to the arrays well typed. JavaScript may store anything into
|
|
6510
|
+
// them, so it keeps the checked-dynamic arrays.
|
|
6511
|
+
const resultT = member !== "values" && !isJsSourceFile(call.getSourceFile())
|
|
6512
|
+
? lowerer.mapTypeOf(lowerer.typeOf(call))
|
|
6513
|
+
: null;
|
|
6514
|
+
if (member === "keys" && resultT?.kind === "array" && resultT.elem.kind === "string")
|
|
6515
|
+
return {
|
|
6516
|
+
kind: "libCall",
|
|
6517
|
+
fn: "dyn.objKeyStrings",
|
|
6518
|
+
args: [v],
|
|
6519
|
+
type: resultT,
|
|
6520
|
+
loc: locOf(call),
|
|
6521
|
+
};
|
|
6522
|
+
if (member === "entries" && resultT && isDynEntryPairsType(lowerer, resultT))
|
|
6523
|
+
return {
|
|
6524
|
+
kind: "libCall",
|
|
6525
|
+
fn: "dyn.objEntryPairs",
|
|
6526
|
+
args: [v],
|
|
6527
|
+
type: resultT,
|
|
6528
|
+
loc: locOf(call),
|
|
6529
|
+
};
|
|
6546
6530
|
return { kind: "libCall", fn, args: [v], type: DYN, loc: locOf(call) };
|
|
6547
6531
|
}
|
|
6548
6532
|
}
|
|
@@ -6977,7 +6961,11 @@ export function lowerRecordFieldCall(lowerer, call, access) {
|
|
|
6977
6961
|
callee = lowerer.hybridCallUnwrap(callee);
|
|
6978
6962
|
// Inferred JavaScript option records can retain checked callables in
|
|
6979
6963
|
// fields even when the checker only describes those members as any.
|
|
6980
|
-
|
|
6964
|
+
// TypeScript reaches here for callable library types that are checked
|
|
6965
|
+
// values (util.DebugLogger).
|
|
6966
|
+
if (callee.type.kind === "dyn" &&
|
|
6967
|
+
(isJsSourceFile(call.getSourceFile()) ||
|
|
6968
|
+
lowerer.checker.getCallSignatures(lowerer.typeOf(access)).length > 0)) {
|
|
6981
6969
|
const receiver = target && receiverLocal ? lowerer.coerceToExpected(target.obj, DYN) : undefined;
|
|
6982
6970
|
const spread = call.arguments.some(ts.isSpreadElement)
|
|
6983
6971
|
? lowerSpreadArgsCall(lowerer, call, callee, loc)
|
|
@@ -8025,10 +8013,26 @@ export function lowerStaticNumberGlobal(lowerer, name, call, args, loc) {
|
|
|
8025
8013
|
type: BOOL,
|
|
8026
8014
|
loc,
|
|
8027
8015
|
},
|
|
8016
|
+
// parseInt(undefined, radix) parses the text
|
|
8017
|
+
// "undefined" (a number from radix 31 up).
|
|
8028
8018
|
then: [
|
|
8029
8019
|
{
|
|
8030
8020
|
kind: "return",
|
|
8031
|
-
value: {
|
|
8021
|
+
value: {
|
|
8022
|
+
kind: "libCall",
|
|
8023
|
+
fn: "num.parseInt",
|
|
8024
|
+
args: [
|
|
8025
|
+
{
|
|
8026
|
+
kind: "strLit",
|
|
8027
|
+
value: arm.kind === "nullT" ? "null" : "undefined",
|
|
8028
|
+
type: STRING,
|
|
8029
|
+
loc,
|
|
8030
|
+
},
|
|
8031
|
+
radixRef,
|
|
8032
|
+
],
|
|
8033
|
+
type: F64,
|
|
8034
|
+
loc,
|
|
8035
|
+
},
|
|
8032
8036
|
loc,
|
|
8033
8037
|
},
|
|
8034
8038
|
],
|