@scriptc/compiler 0.4.7 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/node-fallback/child_process.d.ts +71 -22
- package/ambient/node-fallback/crypto.d.ts +15 -7
- package/ambient/node-fallback/events.d.ts +23 -5
- package/ambient/node-fallback/fs.d.ts +3 -2
- package/ambient/node-fallback/http.d.ts +23 -17
- package/ambient/node-fallback/https.d.ts +5 -2
- package/ambient/node-fallback/net.d.ts +6 -0
- package/ambient/node-fallback/os.d.ts +11 -1
- package/ambient/node-fallback/path-posix.d.ts +6 -0
- package/ambient/node-fallback/path-win32.d.ts +5 -0
- package/ambient/node-fallback/path.d.ts +2 -0
- package/ambient/node-fallback/zlib.d.ts +31 -2
- package/ambient/scriptc-node-fallback.d.ts +37 -7
- package/ambient/scriptc.d.ts +7 -2
- package/dist/backend/executable-features.js +11 -3
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.d.ts +6 -0
- package/dist/backend/library-pack.js +17 -6
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/library-pack.test.d.ts +1 -0
- package/dist/backend/library-pack.test.js +28 -0
- package/dist/backend/library-pack.test.js.map +1 -0
- package/dist/backend/linker.d.ts +9 -2
- package/dist/backend/linker.js +190 -32
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +8 -4
- package/dist/backend/lld.js +19 -13
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +3 -1
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -2
- package/dist/backend/llvm/alloc.js +172 -36
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +69 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +17 -4
- package/dist/backend/llvm/arenas.js +105 -10
- package/dist/backend/llvm/arenas.js.map +1 -1
- package/dist/backend/llvm/arenas.test.js +229 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.js +10 -1
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.js +6 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.js +10 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +16 -9
- package/dist/backend/llvm/classes.js +142 -37
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +42 -0
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
- package/dist/backend/llvm/cpu-dispatch.js +31 -7
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +12 -3
- package/dist/backend/llvm/dyn.js +31 -7
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +67 -4
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +90 -39
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-module.test.d.ts +1 -0
- package/dist/backend/llvm/emit-module.test.js +52 -0
- package/dist/backend/llvm/emit-module.test.js.map +1 -0
- package/dist/backend/llvm/emit-statements.js +99 -15
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +113 -8
- package/dist/backend/llvm/emitter.js +438 -67
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +31 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +16 -1
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +18 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +31 -10
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +31 -3
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +124 -56
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +17 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/js-groups.d.ts +21 -0
- package/dist/backend/llvm/js-groups.js +277 -0
- package/dist/backend/llvm/js-groups.js.map +1 -0
- package/dist/backend/llvm/js-ic.d.ts +19 -1
- package/dist/backend/llvm/js-ic.js +96 -23
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +132 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +33 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +44 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +69 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +32 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.js +7 -2
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
- package/dist/backend/llvm/map-entry-fusion.js +3 -3
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +6 -6
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.js +7 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +4 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +3 -0
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
- package/dist/backend/llvm/record-entry-fusion.js +217 -0
- package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +5 -2
- package/dist/backend/llvm/record-results.js +13 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-views.js +12 -6
- package/dist/backend/llvm/record-views.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +1 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +3 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/region-ir.js +1 -0
- package/dist/backend/llvm/region-ir.js.map +1 -1
- package/dist/backend/llvm/region-sites.d.ts +18 -0
- package/dist/backend/llvm/region-sites.js +79 -1
- package/dist/backend/llvm/region-sites.js.map +1 -1
- package/dist/backend/llvm/runtime-registries.test.js +53 -6
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +33 -3
- package/dist/backend/llvm/shapes.js +183 -13
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +1 -2
- package/dist/backend/llvm/stack-objects.js +8 -5
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +12 -0
- package/dist/backend/llvm/walkers.js +46 -2
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +12 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +13 -0
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +48 -8
- package/dist/backend/native/executable.js +55 -13
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/helper-identity-record.d.ts +11 -0
- package/dist/backend/native/helper-identity-record.js +76 -0
- package/dist/backend/native/helper-identity-record.js.map +1 -0
- package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
- package/dist/backend/native/helper-identity-record.test.js +101 -0
- package/dist/backend/native/helper-identity-record.test.js.map +1 -0
- package/dist/backend/native/library.js +9 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +13 -10
- package/dist/backend/native-codegen-core.js +26 -13
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +27 -8
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +110 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +37 -8
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/runtime-pack-core.d.ts +17 -2
- package/dist/backend/runtime-pack-core.js +18 -3
- 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-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +211 -2
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/tree-classes.d.ts +42 -0
- package/dist/backend/tree-classes.js +723 -0
- package/dist/backend/tree-classes.js.map +1 -0
- package/dist/backend/tree-classes.test.d.ts +1 -0
- package/dist/backend/tree-classes.test.js +338 -0
- package/dist/backend/tree-classes.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +5 -1
- package/dist/backend/vendor-archives.js +51 -7
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +25 -4
- package/dist/backend/vendor-inputs.js +68 -4
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +35 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -1
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.js +2 -2
- package/dist/coverage/report.js +47 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -1
- package/dist/diagnostics/codes.d.ts +8 -0
- package/dist/diagnostics/codes.js +8 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +27 -9
- package/dist/diagnostics/diagnostic.js +60 -19
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +18 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +21 -2
- package/dist/executable/executable-cache.js +21 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +123 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +199 -248
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +200 -18
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +4 -0
- package/dist/frontend/builtin-modules.js +10 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +12 -2
- package/dist/frontend/early-errors.js +535 -4
- package/dist/frontend/early-errors.js.map +1 -1
- package/dist/frontend/early-errors.test.js +165 -0
- package/dist/frontend/early-errors.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.test.js +65 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
- package/dist/frontend/jsx-opinion-sites.test.js +86 -0
- package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
- package/dist/frontend/lib-exports.d.ts +23 -4
- package/dist/frontend/lib-exports.js +98 -26
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.js +21 -3
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/buffers.d.ts +8 -0
- package/dist/frontend/lowering/buffers.js +43 -0
- package/dist/frontend/lowering/buffers.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +4 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
- package/dist/frontend/lowering/builtin-namespaces.js +24 -3
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
- package/dist/frontend/lowering/builtin-statics.js +407 -0
- package/dist/frontend/lowering/builtin-statics.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +12 -0
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
- package/dist/frontend/lowering/builtins/atomics.js +87 -1
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
- package/dist/frontend/lowering/builtins/child-process.js +560 -27
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
- package/dist/frontend/lowering/builtins/compression.js +41 -21
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +28 -2
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +4 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +3 -1
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
- package/dist/frontend/lowering/builtins/numbers.js +10 -2
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +6 -3
- package/dist/frontend/lowering/builtins/operating-system.js +96 -16
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +103 -8
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +169 -8
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +6 -2
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
- package/dist/frontend/lowering/builtins/readline.js +180 -36
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +35 -12
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +2 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +10 -0
- package/dist/frontend/lowering/call-arguments.js +37 -2
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +10 -0
- package/dist/frontend/lowering/call-signatures.js +103 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +14 -2
- package/dist/frontend/lowering/class-construction.js +99 -5
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +9 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1283 -1030
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +20 -15
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +20 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +21 -4
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +9 -0
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +8 -0
- package/dist/frontend/lowering/coercions/state.js +17 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +20 -5
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +10 -1
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
- package/dist/frontend/lowering/coercions/unions.js +54 -10
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
- package/dist/frontend/lowering/constructor-returns.js +284 -58
- package/dist/frontend/lowering/constructor-returns.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +156 -62
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +21 -3
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.js +139 -3
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
- package/dist/frontend/lowering/containers/array-iteration.js +24 -7
- package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +14 -11
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
- package/dist/frontend/lowering/containers/bytes.js +446 -86
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +5 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +21 -12
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +52 -17
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +5 -5
- package/dist/frontend/lowering/dispatch-sites.js +3 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +40 -0
- package/dist/frontend/lowering/divergences.js +239 -20
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/effect-free.d.ts +12 -0
- package/dist/frontend/lowering/effect-free.js +44 -0
- package/dist/frontend/lowering/effect-free.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/array-literals.js +62 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +115 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +151 -7
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +31 -2
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
- package/dist/frontend/lowering/expressions/narrowing.js +175 -22
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +173 -11
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +5 -1
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +8 -0
- package/dist/frontend/lowering/expressions/property-access.js +379 -109
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +237 -7
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +8 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
- package/dist/frontend/lowering/expressions/union-fields.js +103 -13
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +74 -55
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +37 -10
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.js +5 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
- package/dist/frontend/lowering/generator-delegation.js +301 -118
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +27 -1
- package/dist/frontend/lowering/generic-functions.js +432 -18
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-function-values.d.ts +25 -0
- package/dist/frontend/lowering/global-function-values.js +193 -0
- package/dist/frontend/lowering/global-function-values.js.map +1 -0
- package/dist/frontend/lowering/global-values.d.ts +6 -4
- package/dist/frontend/lowering/global-values.js +24 -10
- package/dist/frontend/lowering/global-values.js.map +1 -1
- package/dist/frontend/lowering/host-global-values.d.ts +31 -0
- package/dist/frontend/lowering/host-global-values.js +121 -0
- package/dist/frontend/lowering/host-global-values.js.map +1 -0
- package/dist/frontend/lowering/host-globals.d.ts +74 -0
- package/dist/frontend/lowering/host-globals.js +344 -0
- package/dist/frontend/lowering/host-globals.js.map +1 -0
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +46 -17
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
- package/dist/frontend/lowering/iterator-prototype.js +160 -0
- package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.js +43 -22
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +11 -3
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +30 -15
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
- package/dist/frontend/lowering/lower-async-iteration.js +15 -0
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +11 -1
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +25 -0
- package/dist/frontend/lowering/lower-calls.js +929 -227
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.js +59 -16
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +20 -0
- package/dist/frontend/lowering/lower-classes.js +468 -44
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -2
- package/dist/frontend/lowering/lower-event-emitter.js +253 -83
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +1 -1
- package/dist/frontend/lowering/lower-exprs.js +71 -20
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +25 -6
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +57 -10
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
- package/dist/frontend/lowering/lower-global-value.js +14 -5
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +638 -64
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +48 -2
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +18 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.js +16 -6
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +303 -87
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +45 -0
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +14 -11
- package/dist/frontend/lowering/lower-stmts.js +270 -52
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +110 -27
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +6 -3
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +227 -21
- package/dist/frontend/lowering/lowerer.js +651 -92
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +18 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
- package/dist/frontend/lowering/lowering-facts.js +323 -0
- package/dist/frontend/lowering/lowering-facts.js.map +1 -0
- package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
- package/dist/frontend/lowering/lowering-facts.test.js +100 -0
- package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
- package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
- package/dist/frontend/lowering/nan-coded-reads.js +112 -9
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
- package/dist/frontend/lowering/optional-arguments.js +26 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/partial-assertions.d.ts +0 -3
- package/dist/frontend/lowering/partial-assertions.js +9 -15
- package/dist/frontend/lowering/partial-assertions.js.map +1 -1
- package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
- package/dist/frontend/lowering/primitive-throws.js +241 -0
- package/dist/frontend/lowering/primitive-throws.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.js +1 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
- package/dist/frontend/lowering/record-inherited.d.ts +17 -1
- package/dist/frontend/lowering/record-inherited.js +16 -2
- package/dist/frontend/lowering/record-inherited.js.map +1 -1
- package/dist/frontend/lowering/record-links.d.ts +73 -0
- package/dist/frontend/lowering/record-links.js +797 -0
- package/dist/frontend/lowering/record-links.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
- package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
- package/dist/frontend/lowering/runtime-optional-report.js +300 -0
- package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +3 -1
- package/dist/frontend/lowering/static-typeof.js +6 -1
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +1 -5
- package/dist/frontend/lowering/strict-mode.js +4 -30
- package/dist/frontend/lowering/strict-mode.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +7 -0
- package/dist/frontend/lowering/structural-instances.js +23 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +15 -1
- package/dist/frontend/lowering/surfaces.js +78 -10
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +13 -1
- package/dist/frontend/lowering/union-retag.js +55 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +51 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +8 -0
- package/dist/frontend/lowering/unit-journal.js +14 -0
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +36 -1
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.js +3 -2
- package/dist/frontend/lowering/zlib-constants.js.map +1 -1
- package/dist/frontend/npm-static.js +78 -9
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +95 -2
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +5 -4
- package/dist/frontend/pipeline.js +94 -31
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +68 -11
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program.d.ts +62 -2
- package/dist/frontend/program.js +695 -422
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +37 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/services-node.d.ts +7 -0
- package/dist/frontend/services-node.js +32 -1
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services-node.test.js +51 -0
- package/dist/frontend/services-node.test.js.map +1 -1
- package/dist/frontend/shape-inference/overlay.js +68 -2
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +9 -0
- package/dist/frontend/tier-analysis.js +1 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +57 -3
- package/dist/frontend/tsc-codes.js +935 -150
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/tsc-codes.test.js +221 -12
- package/dist/frontend/tsc-codes.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +91 -9
- package/dist/frontend/type-mapper.js +622 -181
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +80 -15
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +60 -0
- package/dist/index.test.js.map +1 -0
- package/dist/ir/builtin-effects.js +43 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +242 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +3 -2
- package/dist/ir/callback-specialization.js +35 -25
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +8 -4
- package/dist/ir/capture-values.js +9 -6
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +6 -2
- package/dist/ir/char-unit-locals.js +11 -2
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/class-key-index.d.ts +18 -0
- package/dist/ir/class-key-index.js +29 -0
- package/dist/ir/class-key-index.js.map +1 -0
- package/dist/ir/class-key-index.test.d.ts +1 -0
- package/dist/ir/class-key-index.test.js +25 -0
- package/dist/ir/class-key-index.test.js.map +1 -0
- package/dist/ir/codec.generated.d.ts +1 -1
- package/dist/ir/codec.generated.js +724 -648
- package/dist/ir/codec.generated.js.map +1 -1
- package/dist/ir/constant-globals.d.ts +5 -2
- package/dist/ir/constant-globals.js +25 -27
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +4 -2
- package/dist/ir/expression-inlining.js +8 -2
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/field-values.d.ts +5 -2
- package/dist/ir/field-values.js +32 -21
- package/dist/ir/field-values.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +11 -2
- package/dist/ir/fields.generated.js +8 -0
- package/dist/ir/fields.generated.js.map +1 -1
- package/dist/ir/final-fields.js +1 -1
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +5 -4
- package/dist/ir/function-references.js +7 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +7 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +4 -2
- package/dist/ir/init-only-globals.js +17 -18
- package/dist/ir/init-only-globals.js.map +1 -1
- package/dist/ir/inline-array-views.js +1 -0
- package/dist/ir/inline-array-views.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +59 -4
- package/dist/ir/ir.js +7 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-groups.d.ts +51 -0
- package/dist/ir/js-groups.js +394 -0
- package/dist/ir/js-groups.js.map +1 -0
- package/dist/ir/js-groups.test.d.ts +1 -0
- package/dist/ir/js-groups.test.js +555 -0
- package/dist/ir/js-groups.test.js.map +1 -0
- package/dist/ir/js-ic.js +30 -5
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +27 -1
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +23 -6
- package/dist/ir/node-index.js +126 -49
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +4 -2
- package/dist/ir/numeric-call-specialization.js +40 -26
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.d.ts +4 -2
- package/dist/ir/paired-while-loops.js +8 -2
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +13 -4
- package/dist/ir/parameter-versions.js +63 -42
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/property-bags.d.ts +4 -2
- package/dist/ir/property-bags.js +22 -17
- package/dist/ir/property-bags.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +4 -2
- package/dist/ir/row-pairs.js +12 -11
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +87 -12
- package/dist/ir/runtime-features.js +263 -160
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +109 -139
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/runtime-jam-loops.d.ts +35 -0
- package/dist/ir/runtime-jam-loops.js +604 -0
- package/dist/ir/runtime-jam-loops.js.map +1 -0
- package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
- package/dist/ir/runtime-jam-loops.test.js +565 -0
- package/dist/ir/runtime-jam-loops.test.js.map +1 -0
- package/dist/ir/saturating-loop-jams.d.ts +4 -2
- package/dist/ir/saturating-loop-jams.js +11 -10
- package/dist/ir/saturating-loop-jams.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +5 -2
- package/dist/ir/scalar-records.js +12 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.d.ts +4 -2
- package/dist/ir/self-captures.js +32 -27
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/serialize.d.ts +6 -1
- package/dist/ir/serialize.js +87 -23
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/typed-argument-clones.d.ts +30 -0
- package/dist/ir/typed-argument-clones.js +789 -0
- package/dist/ir/typed-argument-clones.js.map +1 -0
- package/dist/ir/union-arm-loops.d.ts +3 -0
- package/dist/ir/union-arm-loops.js +373 -0
- package/dist/ir/union-arm-loops.js.map +1 -0
- package/dist/ir/union-arm-loops.test.d.ts +1 -0
- package/dist/ir/union-arm-loops.test.js +230 -0
- package/dist/ir/union-arm-loops.test.js.map +1 -0
- package/dist/ir/validate.js +88 -18
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/compiler-self-identity.d.ts +8 -2
- package/dist/library/compiler-self-identity.js +92 -18
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.js +150 -3
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +5 -0
- package/dist/library/int-infer.js +15 -3
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +4 -0
- package/dist/library/library-cache.js +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +26 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/prepare.js +99 -31
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +7 -0
- package/dist/native/cache.js +47 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +13 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +1 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +18 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache-open.test.js +31 -5
- package/dist/native/executable-cache-open.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +6 -1
- package/dist/native/executable-cache.js +7 -1
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -0
- package/dist/native/prepare.js +43 -26
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +25 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.js +10 -1
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +7 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +12 -0
- package/dist/node-islands/boundary.js +38 -6
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/boundary.test.d.ts +1 -0
- package/dist/node-islands/boundary.test.js +76 -0
- package/dist/node-islands/boundary.test.js.map +1 -0
- package/dist/node-islands/detect.d.ts +9 -0
- package/dist/node-islands/detect.js +110 -0
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +24 -0
- package/dist/node-islands/detect.test.js.map +1 -1
- package/dist/node-islands/graph-islands.d.ts +40 -0
- package/dist/node-islands/graph-islands.js +128 -0
- package/dist/node-islands/graph-islands.js.map +1 -0
- package/dist/node-islands/growth.d.ts +57 -0
- package/dist/node-islands/growth.js +205 -0
- package/dist/node-islands/growth.js.map +1 -0
- package/dist/node-islands/report.d.ts +12 -0
- package/dist/node-islands/report.js +28 -0
- package/dist/node-islands/report.js.map +1 -1
- package/dist/node-islands/report.test.js +2 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +5 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +11 -2
- package/dist/node-islands/scan.js +61 -9
- package/dist/node-islands/scan.js.map +1 -1
- package/dist/wasm/translate.js +11 -5
- package/dist/wasm/translate.js.map +1 -1
- package/dist/wasm/translate.test.js +35 -0
- package/dist/wasm/translate.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +184 -117
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as ts from "../ts7/adapter.js";
|
|
2
|
-
import { BOOL, F64, isUnitType, typeEquals } from "../../ir/ir.js";
|
|
3
|
-
import { numLit, strLit } from "../../ir/build.js";
|
|
2
|
+
import { BOOL, F64, isUnitType, STRING, typeEquals } from "../../ir/ir.js";
|
|
3
|
+
import { nodeThrowExpr, numLit, strLit } from "../../ir/build.js";
|
|
4
4
|
import { isSafeToDiscard } from "./expressions/evaluation-safety.js";
|
|
5
5
|
/** Lower an expression whose checker type is statically `undefined`/`void`. */
|
|
6
6
|
export function lowerStaticallyUndefinedArgument(lowerer, node) {
|
|
@@ -59,8 +59,29 @@ export function coerceStringSearchValue(lowerer, value, node, loc) {
|
|
|
59
59
|
if (isUnitType(value.type)) {
|
|
60
60
|
return defaultAfterUndefined(value, strLit(value.type.kind === "nullT" ? "null" : "undefined", loc));
|
|
61
61
|
}
|
|
62
|
+
// ToString(symbol) throws (only String() answers "Symbol(desc)"); string
|
|
63
|
+
// searches convert their needle with ToString, so the search throws.
|
|
64
|
+
if (value.type.kind === "symbol")
|
|
65
|
+
return throwAfter(value, SYMBOL_TO_STRING, STRING, loc);
|
|
62
66
|
return lowerer.ensureString(value, node);
|
|
63
67
|
}
|
|
68
|
+
const SYMBOL_TO_STRING = "Cannot convert a Symbol value to a string";
|
|
69
|
+
const SYMBOL_TO_NUMBER = "Cannot convert a Symbol value to a number";
|
|
70
|
+
/** `value`, then Node's TypeError: the value's effects happen and the
|
|
71
|
+
* conversion that follows it throws. `type` is the throwing expression's
|
|
72
|
+
* type, so the enclosing lowering keeps its expected shape. */
|
|
73
|
+
export function throwAfter(value, message, type, loc) {
|
|
74
|
+
const thrown = nodeThrowExpr(1, "", message, type, loc);
|
|
75
|
+
if (isSafeToDiscard(value))
|
|
76
|
+
return thrown;
|
|
77
|
+
return {
|
|
78
|
+
kind: "seqExpr",
|
|
79
|
+
stmts: [{ kind: "exprStmt", expr: value, loc }],
|
|
80
|
+
result: thrown,
|
|
81
|
+
type,
|
|
82
|
+
loc,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
64
85
|
/** Lower an optional argument, applying its default only to the undefined arm. */
|
|
65
86
|
export function lowerOptionalArgument(lowerer, node, expected, defaultValue) {
|
|
66
87
|
const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, node);
|
|
@@ -111,6 +132,9 @@ export function positionNumber(lowerer, value, defaultValue, node, subject) {
|
|
|
111
132
|
return numLit(0, loc);
|
|
112
133
|
case "undefinedT":
|
|
113
134
|
return defaultValue;
|
|
135
|
+
// ToNumber/ToIntegerOrInfinity(symbol) throws; it is not a number.
|
|
136
|
+
case "symbol":
|
|
137
|
+
return throwAfter(value, SYMBOL_TO_NUMBER, F64, loc);
|
|
114
138
|
case "union": {
|
|
115
139
|
const unionId = value.type.unionId;
|
|
116
140
|
const arms = lowerer.unions.get(unionId).arms;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optional-arguments.js","sourceRoot":"","sources":["../../../src/frontend/lowering/optional-arguments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"optional-arguments.js","sourceRoot":"","sources":["../../../src/frontend/lowering/optional-arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,6 @@ export declare function partialAssertionSite(lowerer: Lowerer, expr: ts.AsExpres
|
|
|
26
26
|
* `obj` is read twice (the presence test and the read), so it must be safe
|
|
27
27
|
* to repeat. */
|
|
28
28
|
export declare function partialFieldRead(lowerer: Lowerer, obj: IrExpr, shapeId: string, field: string, fieldType: IrType, loc: SrcLoc): IrExpr | null;
|
|
29
|
-
/** The TypeError a write of a field the asserted literal never wrote
|
|
30
|
-
* throws, or null when the field is always present. */
|
|
31
|
-
export declare function partialFieldWriteError(lowerer: Lowerer, shapeId: string, field: string, loc: SrcLoc): IrExpr | null;
|
|
32
29
|
/** The own-property presence test for `field` on a receiver of `shapeId`
|
|
33
30
|
* (`"f" in value`), or null when no partial assertion can leave it absent.
|
|
34
31
|
* `obj` must be safe to repeat. */
|
|
@@ -9,19 +9,21 @@
|
|
|
9
9
|
* hands the asserted type B a PARTIAL record view of it (record-views.ts):
|
|
10
10
|
* the value is a B whose record-source entry names A, and the required B
|
|
11
11
|
* fields A does not declare are absent. Reflection through the view is
|
|
12
|
-
* exact
|
|
12
|
+
* exact, and a write to one of those fields adds the property to the view
|
|
13
|
+
* (the viewed record's extra-property store), so a program that fills a
|
|
14
|
+
* record literal field by field ends with every field it wrote.
|
|
13
15
|
*
|
|
14
16
|
* This module finds those sites and answers, per target shape, which
|
|
15
17
|
* required fields some asserted literal leaves unwritten. The lowering
|
|
16
|
-
* consults it for member reads and
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* consults it for member reads and `in`, so a read of a field nothing wrote
|
|
19
|
+
* throws the catchable TypeError (Node yields undefined — a documented
|
|
20
|
+
* divergence) instead of reaching a slot the view does not have. Computed
|
|
21
|
+
* once for the whole program, on first use, like the untyped-collection
|
|
22
|
+
* inference (js-collection-types.ts). */
|
|
21
23
|
import * as ts from "../ts7/adapter.js";
|
|
22
24
|
import { isJsSourceFile, locOf } from "../program.js";
|
|
23
25
|
import { nodeThrowExpr } from "../../ir/build.js";
|
|
24
|
-
import { BOOL, DYN, UNDEFINED_T
|
|
26
|
+
import { BOOL, DYN, UNDEFINED_T } from "../../ir/ir.js";
|
|
25
27
|
const NO_FIELDS = new Set();
|
|
26
28
|
/** The required fields some asserted literal leaves unwritten on shapes of
|
|
27
29
|
* `shapeId`; empty when no partial assertion produces that shape. */
|
|
@@ -126,14 +128,6 @@ export function partialFieldRead(lowerer, obj, shapeId, field, fieldType, loc) {
|
|
|
126
128
|
loc,
|
|
127
129
|
};
|
|
128
130
|
}
|
|
129
|
-
/** The TypeError a write of a field the asserted literal never wrote
|
|
130
|
-
* throws, or null when the field is always present. */
|
|
131
|
-
export function partialFieldWriteError(lowerer, shapeId, field, loc) {
|
|
132
|
-
const target = partialTargetOf(lowerer, shapeId);
|
|
133
|
-
if (target === null || !target.missing.has(field))
|
|
134
|
-
return null;
|
|
135
|
-
return nodeThrowExpr(1, "", `Cannot set property '${field}': the object asserted as '${target.text}' has no such property`, VOID, loc);
|
|
136
|
-
}
|
|
137
131
|
/** The own-property presence test for `field` on a receiver of `shapeId`
|
|
138
132
|
* (`"f" in value`), or null when no partial assertion can leave it absent.
|
|
139
133
|
* `obj` must be safe to repeat. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partial-assertions.js","sourceRoot":"","sources":["../../../src/frontend/lowering/partial-assertions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"partial-assertions.js","sourceRoot":"","sources":["../../../src/frontend/lowering/partial-assertions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/** Node's TypeErrors for an operation that needs an OBJECT and receives a
|
|
2
|
+
* primitive — the `in` operator's ToObject, `new`'s IsConstructor,
|
|
3
|
+
* `delete`'s ToObject, and a member read's RequireObjectCoercible.
|
|
4
|
+
* JavaScript admits every one of these on a primitive (and the relaxed
|
|
5
|
+
* JavaScript diagnostics admit the source), so the code must run and throw
|
|
6
|
+
* exactly what V8 throws, not a lowering fence.
|
|
7
|
+
*
|
|
8
|
+
* Every message is built from the operand's own spelling, which is why the
|
|
9
|
+
* text is a runtime expression here rather than the literal
|
|
10
|
+
* `nodeThrowExpr` takes. */
|
|
11
|
+
import * as ts from "../ts7/adapter.js";
|
|
12
|
+
import { type IrExpr, type IrStmt, type IrType, type SrcLoc } from "../../ir/ir.js";
|
|
13
|
+
import type { Lowerer } from "./lowerer.js";
|
|
14
|
+
/** IR types whose JS value is a primitive: no own or inherited properties,
|
|
15
|
+
* so a property read, `in`, or `delete` coerces it — and `in` throws.
|
|
16
|
+
* `void` is the return position of a call, whose value at run time is
|
|
17
|
+
* undefined. */
|
|
18
|
+
export declare function isPrimitiveValueType(t: IrType): boolean;
|
|
19
|
+
/** The operand's spelling in a can't-coerce TypeError: units are literal,
|
|
20
|
+
* and every other primitive renders exactly as String() renders it (the
|
|
21
|
+
* object protocol never runs for a primitive, so the String constructor
|
|
22
|
+
* lowers to the same text V8 writes). */
|
|
23
|
+
export declare function primitiveText(lowerer: Lowerer, value: IrExpr, loc: SrcLoc): IrExpr;
|
|
24
|
+
/** An always-throwing Node TypeError whose message is computed at run time.
|
|
25
|
+
* `type` is the replaced expression's own type (never materialized). */
|
|
26
|
+
export declare function throwTypeError(message: IrExpr, type: IrType, loc: SrcLoc): IrExpr;
|
|
27
|
+
/** `Cannot use 'in' operator to search for '<key>' in <String(recv)>` — the
|
|
28
|
+
* `in` operator's ToObject refusal, also spelled by Reflect.has's
|
|
29
|
+
* non-object target check (which uses its own fixed message). */
|
|
30
|
+
export declare function inOperatorTypeError(lowerer: Lowerer, key: string, recv: IrExpr, type: IrType, loc: SrcLoc): IrExpr;
|
|
31
|
+
/** `delete`'s ToObject refusal: Node names neither the property nor the
|
|
32
|
+
* receiver here (`delete (null).x` and `delete (null)[k]` both throw it). */
|
|
33
|
+
export declare function deleteToObjectTypeError(type: IrType, loc: SrcLoc): IrExpr;
|
|
34
|
+
/** `null`/`undefined` when the expression IS one of them by construction —
|
|
35
|
+
* the `null` keyword, `void <expr>`, or the global `undefined` (the checker
|
|
36
|
+
* confirms the name still denotes the unit, since JavaScript may shadow it)
|
|
37
|
+
* — else null. Used where a member read happens before the receiver is
|
|
38
|
+
* lowered, so the test cannot disturb the lowering that follows. A binding
|
|
39
|
+
* or a property does NOT qualify even when the checker types it as a unit:
|
|
40
|
+
* a JavaScript property keeps its initializer's type through a later
|
|
41
|
+
* assignment, so its value has to answer, and the runtime read already
|
|
42
|
+
* throws the same TypeError in the same order. */
|
|
43
|
+
export declare function nullishLiteral(lowerer: Lowerer, node: ts.Expression): "null" | "undefined" | null;
|
|
44
|
+
/** True when the CHECKER types an expression as a primitive — a unit or any
|
|
45
|
+
* other primitive, or a union of them — and not as `any`/`unknown`, whose
|
|
46
|
+
* value the lowering cannot know. `new` uses it to choose the runtime
|
|
47
|
+
* primitive check for a callee that lowers to a dynamic slot (a JavaScript
|
|
48
|
+
* `const n = null` binding): an `any` callee keeps the runtime's own
|
|
49
|
+
* refusal, so the typed programs pay nothing for this branch. */
|
|
50
|
+
export declare function staticallyPrimitive(lowerer: Lowerer, node: ts.Expression): boolean;
|
|
51
|
+
/** `Cannot read properties of <unit> (reading '<name>')` — the member read
|
|
52
|
+
* a nullish receiver refuses, also what a call on such a member throws
|
|
53
|
+
* before its arguments evaluate. */
|
|
54
|
+
export declare function nullishReadTypeError(unit: "null" | "undefined", name: string, type: IrType, loc: SrcLoc): IrExpr;
|
|
55
|
+
/** A builtin identity token, which is NOT a primitive the program can
|
|
56
|
+
* observe. The identifier chokepoint represents a JavaScript source's
|
|
57
|
+
* unsupported builtin value (`import { AsyncResource } from
|
|
58
|
+
* "node:async_hooks"`) as an IR string whose text Node never produces, so
|
|
59
|
+
* identity flows (`===`, Set membership) agree between spellings. The
|
|
60
|
+
* object-coercion lowerings throw Node's TypeError for a primitive and
|
|
61
|
+
* spell it from the value, which for a token would report the carrier as if
|
|
62
|
+
* the program could see it ("AsyncResource is not a constructor" for a
|
|
63
|
+
* class Node constructs), so those branches leave the site to the
|
|
64
|
+
* reference's own fence instead.
|
|
65
|
+
*
|
|
66
|
+
* A token is recognized by its interned TEXT, not by its type alone: a
|
|
67
|
+
* program's own string casts to `any` as readily as an unsupported builtin
|
|
68
|
+
* export does, and `new ("hello" as any)()` is a Node TypeError to run, not
|
|
69
|
+
* a lowering fence. The checker test stays as a second condition, so a
|
|
70
|
+
* string the checker types as a string keeps its Node answer even when it
|
|
71
|
+
* spells a token. */
|
|
72
|
+
export declare function isBuiltinIdentityToken(lowerer: Lowerer, node: ts.Expression, value: IrExpr): boolean;
|
|
73
|
+
/** The statements that evaluate `expr` for its effects alone. A value the
|
|
74
|
+
* IR cannot spell (a unit — JavaScript's null/undefined has no standalone
|
|
75
|
+
* runtime value, so a bare unit literal fails validation) contributes only
|
|
76
|
+
* the statements its sequence kept, and a plain unit literal none at all. */
|
|
77
|
+
export declare function effectStmts(expr: IrExpr, loc: SrcLoc): IrStmt[];
|
|
78
|
+
/** `thrown`, preceded by the evaluation of `values` in order — the shape of
|
|
79
|
+
* every object-coercion refusal whose operands still have to run before the
|
|
80
|
+
* throw (`(recordedKey() in nullishReceiver())`). */
|
|
81
|
+
export declare function throwAfterEach(values: readonly IrExpr[], thrown: IrExpr, loc: SrcLoc): IrExpr;
|
|
82
|
+
/** Expression-position `delete` (`const ok = delete x.y`). Every receiver but
|
|
83
|
+
* a primitive keeps the statement-position-only fence. */
|
|
84
|
+
export declare function lowerDeleteExpression(lowerer: Lowerer, expr: ts.DeleteExpression): IrExpr;
|
|
85
|
+
/** `delete` on a primitive base, whose ToObject step gives the answer. The
|
|
86
|
+
* base evaluates first, then the key:
|
|
87
|
+
*
|
|
88
|
+
* - a nullish base throws Node's ToObject TypeError before the key's
|
|
89
|
+
* ToPropertyKey, so the key runs without converting (and, through `?.`,
|
|
90
|
+
* the chain short-circuits instead: the answer is `true` and the key
|
|
91
|
+
* never runs);
|
|
92
|
+
* - any other primitive deletes from the ToObject wrapper. A String
|
|
93
|
+
* wrapper carries its indexes and `length` as non-configurable own
|
|
94
|
+
* properties, so deleting one answers `false` in sloppy code and throws
|
|
95
|
+
* the TypeError in strict code, while every other primitive's wrapper
|
|
96
|
+
* owns nothing. The runtime does the ToPropertyKey, which preserves a
|
|
97
|
+
* Symbol key.
|
|
98
|
+
*
|
|
99
|
+
* `resultType` is the replaced expression's own type (never materialized). */
|
|
100
|
+
export declare function lowerPrimitiveBaseDelete(lowerer: Lowerer, expr: ts.DeleteExpression, target: ts.PropertyAccessExpression | ts.ElementAccessExpression, obj: IrExpr, resultType: IrType): IrExpr;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/** Node's TypeErrors for an operation that needs an OBJECT and receives a
|
|
2
|
+
* primitive — the `in` operator's ToObject, `new`'s IsConstructor,
|
|
3
|
+
* `delete`'s ToObject, and a member read's RequireObjectCoercible.
|
|
4
|
+
* JavaScript admits every one of these on a primitive (and the relaxed
|
|
5
|
+
* JavaScript diagnostics admit the source), so the code must run and throw
|
|
6
|
+
* exactly what V8 throws, not a lowering fence.
|
|
7
|
+
*
|
|
8
|
+
* Every message is built from the operand's own spelling, which is why the
|
|
9
|
+
* text is a runtime expression here rather than the literal
|
|
10
|
+
* `nodeThrowExpr` takes. */
|
|
11
|
+
import * as ts from "../ts7/adapter.js";
|
|
12
|
+
import { BOOL, DYN, STRING, isUnitType, } from "../../ir/ir.js";
|
|
13
|
+
import { numLit, strLit } from "../../ir/build.js";
|
|
14
|
+
import { locOf } from "../program.js";
|
|
15
|
+
import { isSafeToDiscard } from "./expressions/evaluation-safety.js";
|
|
16
|
+
import { isStrictCode } from "./strict-mode.js";
|
|
17
|
+
/** IR types whose JS value is a primitive: no own or inherited properties,
|
|
18
|
+
* so a property read, `in`, or `delete` coerces it — and `in` throws.
|
|
19
|
+
* `void` is the return position of a call, whose value at run time is
|
|
20
|
+
* undefined. */
|
|
21
|
+
export function isPrimitiveValueType(t) {
|
|
22
|
+
switch (t.kind) {
|
|
23
|
+
case "nullT":
|
|
24
|
+
case "undefinedT":
|
|
25
|
+
case "void":
|
|
26
|
+
case "bool":
|
|
27
|
+
case "f64":
|
|
28
|
+
case "bigint":
|
|
29
|
+
case "string":
|
|
30
|
+
case "symbol":
|
|
31
|
+
return true;
|
|
32
|
+
default:
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** The operand's spelling in a can't-coerce TypeError: units are literal,
|
|
37
|
+
* and every other primitive renders exactly as String() renders it (the
|
|
38
|
+
* object protocol never runs for a primitive, so the String constructor
|
|
39
|
+
* lowers to the same text V8 writes). */
|
|
40
|
+
export function primitiveText(lowerer, value, loc) {
|
|
41
|
+
if (isUnitType(value.type)) {
|
|
42
|
+
return strLit(value.type.kind === "nullT" ? "null" : "undefined", loc);
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
kind: "libCall",
|
|
46
|
+
fn: "dyn.stringConstructor",
|
|
47
|
+
args: [lowerer.coerceToExpected(value, DYN)],
|
|
48
|
+
type: STRING,
|
|
49
|
+
loc,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** An always-throwing Node TypeError whose message is computed at run time.
|
|
53
|
+
* `type` is the replaced expression's own type (never materialized). */
|
|
54
|
+
export function throwTypeError(message, type, loc) {
|
|
55
|
+
return {
|
|
56
|
+
kind: "libCall",
|
|
57
|
+
fn: "error.nodeThrow",
|
|
58
|
+
args: [numLit(1, loc), strLit("", loc), message],
|
|
59
|
+
type,
|
|
60
|
+
loc,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** `Cannot use 'in' operator to search for '<key>' in <String(recv)>` — the
|
|
64
|
+
* `in` operator's ToObject refusal, also spelled by Reflect.has's
|
|
65
|
+
* non-object target check (which uses its own fixed message). */
|
|
66
|
+
export function inOperatorTypeError(lowerer, key, recv, type, loc) {
|
|
67
|
+
return throwTypeError({
|
|
68
|
+
kind: "strConcat",
|
|
69
|
+
left: strLit(`Cannot use 'in' operator to search for '${key}' in `, loc),
|
|
70
|
+
right: primitiveText(lowerer, recv, loc),
|
|
71
|
+
type: STRING,
|
|
72
|
+
loc,
|
|
73
|
+
}, type, loc);
|
|
74
|
+
}
|
|
75
|
+
/** `delete`'s ToObject refusal: Node names neither the property nor the
|
|
76
|
+
* receiver here (`delete (null).x` and `delete (null)[k]` both throw it). */
|
|
77
|
+
export function deleteToObjectTypeError(type, loc) {
|
|
78
|
+
return throwTypeError(strLit("Cannot convert undefined or null to object", loc), type, loc);
|
|
79
|
+
}
|
|
80
|
+
/** `null`/`undefined` when the expression IS one of them by construction —
|
|
81
|
+
* the `null` keyword, `void <expr>`, or the global `undefined` (the checker
|
|
82
|
+
* confirms the name still denotes the unit, since JavaScript may shadow it)
|
|
83
|
+
* — else null. Used where a member read happens before the receiver is
|
|
84
|
+
* lowered, so the test cannot disturb the lowering that follows. A binding
|
|
85
|
+
* or a property does NOT qualify even when the checker types it as a unit:
|
|
86
|
+
* a JavaScript property keeps its initializer's type through a later
|
|
87
|
+
* assignment, so its value has to answer, and the runtime read already
|
|
88
|
+
* throws the same TypeError in the same order. */
|
|
89
|
+
export function nullishLiteral(lowerer, node) {
|
|
90
|
+
let expr = node;
|
|
91
|
+
while (ts.isParenthesizedExpression(expr))
|
|
92
|
+
expr = expr.expression;
|
|
93
|
+
if (expr.kind === ts.SyntaxKind.NullKeyword)
|
|
94
|
+
return "null";
|
|
95
|
+
if (ts.isVoidExpression(expr))
|
|
96
|
+
return "undefined";
|
|
97
|
+
if (!ts.isIdentifier(expr) || expr.text !== "undefined")
|
|
98
|
+
return null;
|
|
99
|
+
const flags = lowerer.typeOf(expr).flags;
|
|
100
|
+
return flags & ts.TypeFlags.Undefined ? "undefined" : null;
|
|
101
|
+
}
|
|
102
|
+
/** True when the CHECKER types an expression as a primitive — a unit or any
|
|
103
|
+
* other primitive, or a union of them — and not as `any`/`unknown`, whose
|
|
104
|
+
* value the lowering cannot know. `new` uses it to choose the runtime
|
|
105
|
+
* primitive check for a callee that lowers to a dynamic slot (a JavaScript
|
|
106
|
+
* `const n = null` binding): an `any` callee keeps the runtime's own
|
|
107
|
+
* refusal, so the typed programs pay nothing for this branch. */
|
|
108
|
+
export function staticallyPrimitive(lowerer, node) {
|
|
109
|
+
const { flags } = lowerer.typeOf(node);
|
|
110
|
+
if (flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown))
|
|
111
|
+
return false;
|
|
112
|
+
// A union answers through its arms, which the caller's IR types cover.
|
|
113
|
+
return ((flags &
|
|
114
|
+
(ts.TypeFlags.Null |
|
|
115
|
+
ts.TypeFlags.Undefined |
|
|
116
|
+
ts.TypeFlags.Void |
|
|
117
|
+
ts.TypeFlags.BooleanLike |
|
|
118
|
+
ts.TypeFlags.NumberLike |
|
|
119
|
+
ts.TypeFlags.BigIntLike |
|
|
120
|
+
ts.TypeFlags.StringLike |
|
|
121
|
+
ts.TypeFlags.ESSymbolLike)) !==
|
|
122
|
+
0);
|
|
123
|
+
}
|
|
124
|
+
/** `Cannot read properties of <unit> (reading '<name>')` — the member read
|
|
125
|
+
* a nullish receiver refuses, also what a call on such a member throws
|
|
126
|
+
* before its arguments evaluate. */
|
|
127
|
+
export function nullishReadTypeError(unit, name, type, loc) {
|
|
128
|
+
return throwTypeError(strLit(`Cannot read properties of ${unit} (reading '${name}')`, loc), type, loc);
|
|
129
|
+
}
|
|
130
|
+
/** The text every builtin identity token carries: the identifier chokepoint
|
|
131
|
+
* and the JavaScript destructuring rule intern `[builtin <name>]`
|
|
132
|
+
* (identifiers.ts, property-access.ts, global-values.ts, lower-stmts.ts). */
|
|
133
|
+
const BUILTIN_TOKEN_PREFIX = "[builtin ";
|
|
134
|
+
const BUILTIN_TOKEN_SUFFIX = "]";
|
|
135
|
+
/** A builtin identity token, which is NOT a primitive the program can
|
|
136
|
+
* observe. The identifier chokepoint represents a JavaScript source's
|
|
137
|
+
* unsupported builtin value (`import { AsyncResource } from
|
|
138
|
+
* "node:async_hooks"`) as an IR string whose text Node never produces, so
|
|
139
|
+
* identity flows (`===`, Set membership) agree between spellings. The
|
|
140
|
+
* object-coercion lowerings throw Node's TypeError for a primitive and
|
|
141
|
+
* spell it from the value, which for a token would report the carrier as if
|
|
142
|
+
* the program could see it ("AsyncResource is not a constructor" for a
|
|
143
|
+
* class Node constructs), so those branches leave the site to the
|
|
144
|
+
* reference's own fence instead.
|
|
145
|
+
*
|
|
146
|
+
* A token is recognized by its interned TEXT, not by its type alone: a
|
|
147
|
+
* program's own string casts to `any` as readily as an unsupported builtin
|
|
148
|
+
* export does, and `new ("hello" as any)()` is a Node TypeError to run, not
|
|
149
|
+
* a lowering fence. The checker test stays as a second condition, so a
|
|
150
|
+
* string the checker types as a string keeps its Node answer even when it
|
|
151
|
+
* spells a token. */
|
|
152
|
+
export function isBuiltinIdentityToken(lowerer, node, value) {
|
|
153
|
+
if (value.kind !== "strLit")
|
|
154
|
+
return false;
|
|
155
|
+
if (!value.value.startsWith(BUILTIN_TOKEN_PREFIX))
|
|
156
|
+
return false;
|
|
157
|
+
if (!value.value.endsWith(BUILTIN_TOKEN_SUFFIX))
|
|
158
|
+
return false;
|
|
159
|
+
function stringLike(t) {
|
|
160
|
+
if ((t.flags & ts.TypeFlags.StringLike) !== 0)
|
|
161
|
+
return true;
|
|
162
|
+
return t.isUnionType() && ts.constituentTypes(t).every(stringLike);
|
|
163
|
+
}
|
|
164
|
+
return !stringLike(lowerer.typeOf(node));
|
|
165
|
+
}
|
|
166
|
+
/** The statements that evaluate `expr` for its effects alone. A value the
|
|
167
|
+
* IR cannot spell (a unit — JavaScript's null/undefined has no standalone
|
|
168
|
+
* runtime value, so a bare unit literal fails validation) contributes only
|
|
169
|
+
* the statements its sequence kept, and a plain unit literal none at all. */
|
|
170
|
+
export function effectStmts(expr, loc) {
|
|
171
|
+
if (isSafeToDiscard(expr))
|
|
172
|
+
return [];
|
|
173
|
+
if (expr.kind === "seqExpr")
|
|
174
|
+
return [...expr.stmts, ...effectStmts(expr.result, loc)];
|
|
175
|
+
return [{ kind: "exprStmt", expr, loc }];
|
|
176
|
+
}
|
|
177
|
+
/** `thrown`, preceded by the evaluation of `values` in order — the shape of
|
|
178
|
+
* every object-coercion refusal whose operands still have to run before the
|
|
179
|
+
* throw (`(recordedKey() in nullishReceiver())`). */
|
|
180
|
+
export function throwAfterEach(values, thrown, loc) {
|
|
181
|
+
const stmts = values.flatMap((value) => effectStmts(value, loc));
|
|
182
|
+
return stmts.length === 0
|
|
183
|
+
? thrown
|
|
184
|
+
: { kind: "seqExpr", stmts, result: thrown, type: thrown.type, loc };
|
|
185
|
+
}
|
|
186
|
+
/** Expression-position `delete` (`const ok = delete x.y`). Every receiver but
|
|
187
|
+
* a primitive keeps the statement-position-only fence. */
|
|
188
|
+
export function lowerDeleteExpression(lowerer, expr) {
|
|
189
|
+
let target = expr.expression;
|
|
190
|
+
while (ts.isParenthesizedExpression(target))
|
|
191
|
+
target = target.expression;
|
|
192
|
+
if (ts.isPropertyAccessExpression(target) || ts.isElementAccessExpression(target)) {
|
|
193
|
+
const obj = lowerer.lowerExpr(target.expression);
|
|
194
|
+
if (isPrimitiveValueType(obj.type) &&
|
|
195
|
+
!isBuiltinIdentityToken(lowerer, target.expression, obj)) {
|
|
196
|
+
return lowerPrimitiveBaseDelete(lowerer, expr, target, obj, BOOL);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
lowerer.unsupported("SC1090", expr, "delete expressions");
|
|
200
|
+
}
|
|
201
|
+
/** `delete` on a primitive base, whose ToObject step gives the answer. The
|
|
202
|
+
* base evaluates first, then the key:
|
|
203
|
+
*
|
|
204
|
+
* - a nullish base throws Node's ToObject TypeError before the key's
|
|
205
|
+
* ToPropertyKey, so the key runs without converting (and, through `?.`,
|
|
206
|
+
* the chain short-circuits instead: the answer is `true` and the key
|
|
207
|
+
* never runs);
|
|
208
|
+
* - any other primitive deletes from the ToObject wrapper. A String
|
|
209
|
+
* wrapper carries its indexes and `length` as non-configurable own
|
|
210
|
+
* properties, so deleting one answers `false` in sloppy code and throws
|
|
211
|
+
* the TypeError in strict code, while every other primitive's wrapper
|
|
212
|
+
* owns nothing. The runtime does the ToPropertyKey, which preserves a
|
|
213
|
+
* Symbol key.
|
|
214
|
+
*
|
|
215
|
+
* `resultType` is the replaced expression's own type (never materialized). */
|
|
216
|
+
export function lowerPrimitiveBaseDelete(lowerer, expr, target, obj, resultType) {
|
|
217
|
+
const loc = locOf(expr);
|
|
218
|
+
const unit = isUnitType(obj.type);
|
|
219
|
+
if (unit && target.questionDotToken) {
|
|
220
|
+
// `base?.[key]` on a nullish base: the chain is undefined, the delete
|
|
221
|
+
// answers true, and the key does not evaluate.
|
|
222
|
+
return throwAfterEach([obj], { kind: "boolLit", value: true, type: BOOL, loc }, loc);
|
|
223
|
+
}
|
|
224
|
+
const key = ts.isPropertyAccessExpression(target)
|
|
225
|
+
? strLit(target.name.text, loc)
|
|
226
|
+
: lowerer.lowerExpr(target.argumentExpression);
|
|
227
|
+
if (unit)
|
|
228
|
+
return throwAfterEach([obj, key], deleteToObjectTypeError(resultType, loc), loc);
|
|
229
|
+
return {
|
|
230
|
+
kind: "libCall",
|
|
231
|
+
fn: "dyn.primitiveDelete",
|
|
232
|
+
args: [
|
|
233
|
+
lowerer.coerceToExpected(obj, DYN),
|
|
234
|
+
lowerer.coerceToExpected(key, DYN),
|
|
235
|
+
{ kind: "boolLit", value: isStrictCode(expr), type: BOOL, loc },
|
|
236
|
+
],
|
|
237
|
+
type: BOOL,
|
|
238
|
+
loc,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=primitive-throws.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-throws.js","sourceRoot":"","sources":["../../../src/frontend/lowering/primitive-throws.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive-wrappers.js","sourceRoot":"","sources":["../../../src/frontend/lowering/primitive-wrappers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"primitive-wrappers.js","sourceRoot":"","sources":["../../../src/frontend/lowering/primitive-wrappers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as ts from "../ts7/adapter.js";
|
|
2
|
-
import { type IrExpr } from "../../ir/ir.js";
|
|
2
|
+
import { type IrExpr, type IrType, type SrcLoc } from "../../ir/ir.js";
|
|
3
3
|
import type { Lowerer } from "./lowerer.js";
|
|
4
4
|
/** Object.prototype's methods a record answers from its prototype. */
|
|
5
5
|
export declare const RECORD_INHERITED_METHODS: ReadonlySet<string>;
|
|
6
|
+
/** Declares a hidden local in the function being built: the lowerer's
|
|
7
|
+
* current function, or a lifted helper's own local list. */
|
|
8
|
+
type DeclareLocal = (name: string, type: IrType) => string;
|
|
6
9
|
/** A keyed record read (`r[k]`, `r["toString"]`) whose miss answers the
|
|
7
10
|
* inherited Object.prototype method for those names. Hits keep the
|
|
8
11
|
* ordinary read; only the miss path tests the key. `bound`: the read is
|
|
@@ -12,6 +15,18 @@ export declare const RECORD_INHERITED_METHODS: ReadonlySet<string>;
|
|
|
12
15
|
export declare function withInheritedMethods(lowerer: Lowerer, read: IrExpr & {
|
|
13
16
|
kind: "recordKeyGet";
|
|
14
17
|
}, litKey: string | null, bound: boolean): IrExpr;
|
|
18
|
+
/** `o.method(...args)` on a record: an own callable entry when the record
|
|
19
|
+
* holds one, else the built-in. `calleeText` names the callee for Node's
|
|
20
|
+
* "is not a function". */
|
|
21
|
+
export declare function callOwnOrBuiltin(lowerer: Lowerer, declare: DeclareLocal, o: IrExpr, shapeId: string, method: string, args: readonly IrExpr[], want: IrType, calleeText: string, loc: SrcLoc, resolved?: {
|
|
22
|
+
has: IrExpr;
|
|
23
|
+
own: IrExpr;
|
|
24
|
+
}): IrExpr;
|
|
25
|
+
/** Call the own entry `own` (present, of any stored type) with `args`. A
|
|
26
|
+
* non-function throws Node's "is not a function"; a function whose
|
|
27
|
+
* parameters or result cannot carry the call throws the checked-conversion
|
|
28
|
+
* TypeError (the program's types claimed otherwise). */
|
|
29
|
+
export declare function callOwn(lowerer: Lowerer, declare: DeclareLocal, own: IrExpr, args: readonly IrExpr[], want: IrType, calleeText: string, loc: SrcLoc): IrExpr;
|
|
15
30
|
/** `r.toString()`, `r.hasOwnProperty(k)` and the other Object.prototype
|
|
16
31
|
* methods called by name on a typed record (the checker resolved the
|
|
17
32
|
* member to Object.prototype's). Null for other calls. */
|
|
@@ -24,3 +39,4 @@ export declare function lowerRecordInheritedCall(lowerer: Lowerer, call: ts.Call
|
|
|
24
39
|
* the program's types claimed the member. Null when the checker's member
|
|
25
40
|
* type is not a function. */
|
|
26
41
|
export declare function lowerRecordInheritedMember(lowerer: Lowerer, receiver: IrExpr, expr: ts.PropertyAccessExpression): IrExpr | null;
|
|
42
|
+
export {};
|