@scriptc/compiler 0.4.0 → 0.4.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 +617 -83
- package/dist/backend/cycle-analysis.d.ts +2 -1
- package/dist/backend/cycle-analysis.js +4 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +2 -1
- package/dist/backend/cycle-mutability.js +2 -2
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +10 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +2 -1
- package/dist/backend/immutability.js +2 -2
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +7 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +7 -3
- package/dist/backend/llvm/alloc.js +7 -4
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/array-search.js +4 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +23 -2
- package/dist/backend/llvm/bytes-loop-versions.js +115 -19
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +131 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +99 -2
- package/dist/backend/llvm/classes.js +436 -57
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +235 -16
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -5
- package/dist/backend/llvm/common.js +50 -5
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.js +8 -4
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -1
- package/dist/backend/llvm/counted-loops.js +62 -23
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +3 -1
- package/dist/backend/llvm/dense-array-access.js +61 -38
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +4 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +19 -16
- package/dist/backend/llvm/dense-array-loops.js +49 -13
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +50 -14
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +34 -1
- package/dist/backend/llvm/dyn.js +393 -14
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +27 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +67 -39
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +3 -25
- package/dist/backend/llvm/emit-statements.js +414 -37
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +159 -22
- package/dist/backend/llvm/emitter.js +573 -89
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +110 -40
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +51 -26
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +27 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +95 -5
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +29 -11
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +55 -0
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +48 -20
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +131 -35
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval.js +139 -11
- package/dist/backend/llvm/jsval.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +10 -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-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +20 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +69 -17
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +75 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +65 -28
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +91 -61
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +14 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +43 -7
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/narrow-guards.js +64 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +11 -1
- package/dist/backend/llvm/publish.js +80 -22
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +1 -1
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +2 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.js +2 -2
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +7 -1
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +17 -9
- package/dist/backend/llvm/shapes.js +21 -17
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +88 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/thread-slots.test.js +5 -4
- package/dist/backend/llvm/thread-slots.test.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/mangle.d.ts +8 -0
- package/dist/backend/mangle.js +12 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +40 -2
- package/dist/backend/native/executable.js +40 -7
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +3 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +17 -6
- package/dist/backend/native-codegen.js +55 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +18 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -2
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/optimization.d.ts +2 -2
- 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 +4 -0
- package/dist/backend/runtime-pack-core.js +4 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +7 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +12 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +38 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +6 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +89 -7
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +15 -1
- package/dist/cli/usage.js +30 -2
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +9 -0
- package/dist/contracts/check.js +2 -3
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +18 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +2 -1
- package/dist/diagnostics/envelope.js +5 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +32 -0
- package/dist/executable/executable-cache.js +65 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +50 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +3 -2
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
- package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +7 -2
- package/dist/frontend/lowering/builtins/crypto.js +63 -4
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +21 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +54 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +9 -5
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +9 -0
- package/dist/frontend/lowering/builtins/process.js +47 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +3 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +23 -4
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +2 -1
- package/dist/frontend/lowering/builtins/readline.js +23 -6
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +26 -0
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +6 -2
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.js +4 -3
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +4 -0
- package/dist/frontend/lowering/call-signatures.js +137 -13
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +34 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +2 -1
- package/dist/frontend/lowering/class-construction.js +8 -13
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +34 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +577 -152
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +77 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +3 -0
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +17 -0
- package/dist/frontend/lowering/class-protocols.js +117 -7
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +42 -4
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
- package/dist/frontend/lowering/class-to-primitive.js +31 -8
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.js +105 -75
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +8 -7
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +15 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +36 -32
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +2 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +32 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +11 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +2 -1
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +10 -1
- package/dist/frontend/lowering/containers/bytes.js +601 -24
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +52 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +80 -10
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +8 -7
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +85 -22
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +2 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
- package/dist/frontend/lowering/cycle-initialization.js +177 -39
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- 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/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +204 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +48 -13
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +124 -8
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +30 -7
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +46 -7
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +52 -7
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -3
- package/dist/frontend/lowering/expressions/object-literals.js +75 -7
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +17 -8
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +5 -4
- package/dist/frontend/lowering/expressions/property-access.js +351 -16
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +112 -9
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +13 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +64 -10
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +46 -1
- package/dist/frontend/lowering/generic-functions.js +660 -73
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +9 -8
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +7 -2
- package/dist/frontend/lowering/key-order-witness.js +21 -4
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +38 -2
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +3 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +1 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +4 -0
- package/dist/frontend/lowering/lower-calls.js +504 -97
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +22 -0
- package/dist/frontend/lowering/lower-classes.js +339 -32
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +65 -15
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +148 -12
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +308 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +10 -4
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +578 -16
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +227 -72
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +24 -3
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +263 -60
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +39 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
- package/dist/frontend/lowering/lower-stmts.js +584 -69
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +575 -165
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +21 -4
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +151 -30
- package/dist/frontend/lowering/lowerer.js +725 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +172 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.js +3 -2
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +72 -30
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +37 -3
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
- package/dist/frontend/npm-static-bundled-chunks.js +173 -2
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.js +224 -4
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +16 -0
- package/dist/frontend/npm-static.js +93 -3
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +67 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +21 -0
- package/dist/frontend/program.js +174 -14
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +1 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +13 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +12 -0
- package/dist/frontend/services.js +37 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +21 -7
- package/dist/frontend/ts7/ast-node.js +131 -29
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +60 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +27 -2
- package/dist/frontend/ts7/ast-wire.js +124 -21
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +13 -1
- package/dist/frontend/ts7/checker.js +75 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +6 -5
- package/dist/frontend/ts7/program-host.js +12 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +18 -0
- package/dist/frontend/ts7/semantic-model.js +90 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +19 -4
- package/dist/frontend/ts7/session.js +1 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +38 -6
- package/dist/frontend/type-mapper.js +466 -47
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +453 -85
- package/dist/index.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +3 -2
- package/dist/ir/array-length-stability.js +22 -2
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +47 -1
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +41 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +5 -1
- package/dist/ir/builtin-signatures.js +187 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/final-fields.d.ts +2 -1
- package/dist/ir/final-fields.js +2 -2
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.test.js +2 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +13 -5
- package/dist/ir/int32-slots.js +112 -115
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +14 -4
- package/dist/ir/integer-loop-facts.js +172 -32
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +193 -39
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +201 -1
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +10 -1
- package/dist/ir/integer-ranges.js +122 -25
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +255 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +17 -2
- package/dist/ir/ir.js +11 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.js +38 -4
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +64 -5
- package/dist/ir/runtime-features.js +358 -101
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.d.ts +2 -0
- package/dist/ir/traverse.js +124 -70
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +77 -24
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +15 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/ir-policy.js +11 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +33 -4
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +8 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +10 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +22 -21
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +20 -52
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/* Property reads (`a.b`): lowerExprInner's property-access branch, intrinsic and union properties, field reads and targets, and match-group reads. */
|
|
2
|
+
import { keyedHelperName } from "../stable-names.js";
|
|
3
|
+
import { staticallySelected } from "../static-typeof.js";
|
|
2
4
|
import * as ts from "../../ts7/adapter.js";
|
|
3
5
|
import { lowerHistogramProperty } from "../builtins/performance.js";
|
|
4
6
|
import { staticFunctionNameRead } from "../static-function-names.js";
|
|
5
7
|
import { typedArgumentsArity } from "../typed-arguments.js";
|
|
6
8
|
import { isThisParameter } from "../call-signatures.js";
|
|
7
|
-
import { localPrivateBrandClass } from "../private-brands.js";
|
|
9
|
+
import { checkedPrivateValue, localPrivateBrandClass, privateNameClass, } from "../private-brands.js";
|
|
8
10
|
import { PoisonError, jsFuncNameOf, neverTaintedJsType, own } from "../lowerer.js";
|
|
9
11
|
import { ARRAY_METHODS, MAP_METHODS, NARROW_FIRST, OBJECT_CALLABLE_VALUES, SET_METHODS, STDLIB_SURFACE, STRING_INDEX_METHODS, STR_METHODS, isChildSurfaceMember, stdlibGlobalNameOf, } from "../surfaces.js";
|
|
10
12
|
import { isGenericCallableMemberType, isLegacyUrlSymbol, isOsConstantsType, isParseArgsDynTypeName, } from "../../type-mapper.js";
|
|
11
|
-
import { BOOL, BYTES_ELEMENT_NAME, DYN, F64, NULL_T, SEARCH_PARAMS_T, STRING, SYMBOL_T, UNDEFINED_T, arrayOf, canBoxFuncIntoDyn, funcOf, isDynTypedRefType, isUnitType, typeEquals, typeKey, unionContainerArmsOk, } from "../../../ir/ir.js";
|
|
13
|
+
import { BOOL, BYTES_ELEMENT_NAME, BYTES_U8, DYN, F64, NULL_T, SEARCH_PARAMS_T, STRING, SYMBOL_T, UNDEFINED_T, arrayOf, canBoxFuncIntoDyn, funcOf, isDynTypedRefType, isUnitType, typeEquals, typeKey, unionContainerArmsOk, BYTES_ELEMENT_SIZE, } from "../../../ir/ir.js";
|
|
12
14
|
import { lowerNavigatorMember } from "../builtins/navigator.js";
|
|
13
15
|
import { NODE_COMPAT_VERSION } from "../builtins/process.js";
|
|
14
16
|
import { inlineNamespaceRequireOf, lowerWithInlineRequireInit, wholeExportValue, } from "../cjs-inline-require.js";
|
|
@@ -21,11 +23,12 @@ import { lowerThreadSlotsProperty } from "../thread-slots.js";
|
|
|
21
23
|
import { builtinClassRefOf, runtimeClassValueOfType } from "../builtins/class-values.js";
|
|
22
24
|
import { lowerRuntimeConstructor, lowerRuntimeConstructorName, runtimeConstructorReceiver, } from "../builtins/runtime-constructor.js";
|
|
23
25
|
import { findGenericMethodOn, lowerStaticFieldRead } from "../lower-classes.js";
|
|
24
|
-
import { lowerClassPrototypeData } from "../class-prototypes.js";
|
|
26
|
+
import { isErrorPrototypeValue, lowerClassPrototypeData } from "../class-prototypes.js";
|
|
25
27
|
import { lowerEnumAccess } from "../lower-enums.js";
|
|
26
28
|
import { hasOptionalChainGuard, isOptionalChainTail, isRequireMainFilename, } from "./optional-chains.js";
|
|
27
29
|
import { isCjsModuleGlobal, lowerNodeModuleProperty, lowerRequireMainProperty, } from "../lower-node-module.js";
|
|
28
30
|
import { dynUndefinedExpr, nodeThrowExpr, numLit, strLit, varRef } from "../../../ir/build.js";
|
|
31
|
+
import { typedArrayLacksMember } from "../builtins/typed-array-members.js";
|
|
29
32
|
import { TEMPORAL_GLOBAL } from "../../builtin-modules.js";
|
|
30
33
|
import { tryLowerExpression } from "./try-lower-expression.js";
|
|
31
34
|
import { cjsClassExprWholeExportOf, cjsExportAssignmentOf, cjsExportDiscardReason, isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, isNodeEsmFile, locOf, } from "../../program.js";
|
|
@@ -35,6 +38,7 @@ import { lowerProtocolPropertyRead } from "../class-protocol-dispatch.js";
|
|
|
35
38
|
import { lowerReadlineProperty } from "../builtins/readline.js";
|
|
36
39
|
import { lowerEventStaticProperty } from "../builtins/numbers.js";
|
|
37
40
|
import { lowerStreamProperty, lowerStreamStateProperty, streamSidesOf } from "../lower-stream.js";
|
|
41
|
+
import { lowerValueStreamProperty } from "../builtins/hash-stream.js";
|
|
38
42
|
import { lowerEventObjectProperty } from "../lower-event-target.js";
|
|
39
43
|
import { iteratorResultValueRead } from "../lower-generators.js";
|
|
40
44
|
import { lowerGlobalValue } from "../lower-global-value.js";
|
|
@@ -53,10 +57,13 @@ import { narrowStoredClassValue, structuralReadType } from "../class-unions.js";
|
|
|
53
57
|
import { InternalCompilerError } from "../../../errors.js";
|
|
54
58
|
import { lowerUnionFieldRead } from "./union-fields.js";
|
|
55
59
|
import { errorPropertyRead } from "../error-methods.js";
|
|
56
|
-
import { isSafeToRepeat } from "./evaluation-safety.js";
|
|
60
|
+
import { isSafeToDiscard, isSafeToRepeat } from "./evaluation-safety.js";
|
|
57
61
|
import { isZlibStreamMember, lowerZlibStreamBytesWritten } from "../builtins/compression.js";
|
|
62
|
+
import { isWebCryptoReceiver } from "../builtins/crypto.js";
|
|
58
63
|
import { isFsStreamMember, lowerFsStreamProperty } from "../builtins/fs-streams.js";
|
|
59
64
|
import { keyedFieldRead } from "./keyed-field-targets.js";
|
|
65
|
+
import { promisePrototypeValue } from "../thenables.js";
|
|
66
|
+
import { lowerChildPropertyRead } from "../handle-properties.js";
|
|
60
67
|
/** True when a property access names an ABSTRACT property declaration
|
|
61
68
|
* (`abstract p: number` — a PropertyDeclaration, not an accessor).
|
|
62
69
|
* These uses need concrete property dispatch because the base has no slot. */
|
|
@@ -130,12 +137,66 @@ function isStatFsDynProperty(lowerer, expr) {
|
|
|
130
137
|
return false;
|
|
131
138
|
}));
|
|
132
139
|
}
|
|
140
|
+
/** The dgram.Socket methods its checked-dynamic handle answers as
|
|
141
|
+
* function values (scr_dgram.c's scr_dgram_dyn_method_names). */
|
|
142
|
+
const DGRAM_METHOD_VALUES = new Set([
|
|
143
|
+
"on",
|
|
144
|
+
"once",
|
|
145
|
+
"addListener",
|
|
146
|
+
"removeListener",
|
|
147
|
+
"off",
|
|
148
|
+
"emit",
|
|
149
|
+
"send",
|
|
150
|
+
"close",
|
|
151
|
+
"bind",
|
|
152
|
+
"connect",
|
|
153
|
+
"disconnect",
|
|
154
|
+
"address",
|
|
155
|
+
"ref",
|
|
156
|
+
"unref",
|
|
157
|
+
]);
|
|
133
158
|
export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
159
|
+
// `value.#x` on a checked-dynamic value, or on a checked extraction of
|
|
160
|
+
// one: the field of the brand-checked receiver (checkedPrivateValue).
|
|
161
|
+
if (ts.isPrivateIdentifier(expr.name)) {
|
|
162
|
+
const owner = privateNameClass(lowerer, expr.name);
|
|
163
|
+
const field = owner?.fields.get(expr.name.text);
|
|
164
|
+
const probed = field ? tryLowerExpression(lowerer, expr.expression) : null;
|
|
165
|
+
if (owner && field && probed && checkedDynamicValue(probed)) {
|
|
166
|
+
const value = checkedDynamicValue(lowerer.lowerExpr(expr.expression));
|
|
167
|
+
return {
|
|
168
|
+
kind: "fieldGet",
|
|
169
|
+
obj: checkedPrivateValue(lowerer, owner, expr, value, loc),
|
|
170
|
+
className: owner.def.name,
|
|
171
|
+
field: expr.name.text,
|
|
172
|
+
type: field,
|
|
173
|
+
loc,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
134
177
|
if (!expr.questionDotToken) {
|
|
135
178
|
const navigator = lowerNavigatorMember(lowerer, expr, NODE_COMPAT_VERSION);
|
|
136
179
|
if (navigator)
|
|
137
180
|
return navigator;
|
|
138
181
|
}
|
|
182
|
+
// A dgram socket's method read as a value in JavaScript (`emit:
|
|
183
|
+
// socket.emit.bind(socket)`): the socket crosses as its checked-dynamic
|
|
184
|
+
// handle, whose methods are function values that dispatch on their
|
|
185
|
+
// receiver, as the prototype methods do. The receiver is a native
|
|
186
|
+
// socket whatever its declaration spells (the shipped types declare no
|
|
187
|
+
// EventEmitter members), so the name decides.
|
|
188
|
+
if (!expr.questionDotToken &&
|
|
189
|
+
DGRAM_METHOD_VALUES.has(expr.name.text) &&
|
|
190
|
+
isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
|
|
191
|
+
lowerer.mapTypeOf(lowerer.typeOf(expr.expression))?.kind === "dgramSocket") {
|
|
192
|
+
return {
|
|
193
|
+
kind: "dynKeyGet",
|
|
194
|
+
value: lowerer.coerceToExpected(lowerer.lowerExpr(expr.expression), DYN),
|
|
195
|
+
key: { kind: "strLit", value: expr.name.text, type: STRING, loc },
|
|
196
|
+
type: DYN,
|
|
197
|
+
loc,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
139
200
|
// `fn.name` on a function parameter of a generic instance keyed by
|
|
140
201
|
// its argument's static name (call-site specialization).
|
|
141
202
|
{
|
|
@@ -359,7 +420,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
359
420
|
// arbitrary global-object mutation remains fenced. Preserve a dyn
|
|
360
421
|
// undefined value so stored probes compose with optional calls.
|
|
361
422
|
if (stdlibGlobalNameOf(lowerer, expr.expression) === "globalThis" &&
|
|
362
|
-
!lowerer.checker.getPropertyOfType(lowerer.typeOf(expr.expression), expr.name.text)) {
|
|
423
|
+
!lowerer.checker.getPropertyOfType(lowerer.typeOf(staticallySelected(lowerer, expr.expression)), expr.name.text)) {
|
|
363
424
|
return dynUndefinedExpr(loc);
|
|
364
425
|
}
|
|
365
426
|
// `Uint8Array.prototype.toBase64` and its siblings, the base64/hex
|
|
@@ -598,6 +659,11 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
598
659
|
if (typed)
|
|
599
660
|
return typed;
|
|
600
661
|
}
|
|
662
|
+
{
|
|
663
|
+
const promiseMember = lowerPromiseConstructorRead(lowerer, expr);
|
|
664
|
+
if (promiseMember)
|
|
665
|
+
return promiseMember;
|
|
666
|
+
}
|
|
601
667
|
const handled = lowerer.lowerProcessEnvGet(expr) ??
|
|
602
668
|
lowerer.lowerServerProperty(expr) ??
|
|
603
669
|
// diagnostics_channel Channel receivers — name/hasSubscribers
|
|
@@ -655,8 +721,14 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
655
721
|
return handled;
|
|
656
722
|
return iteratorResultValueRead(lowerer, handled, expr) ?? lowerer.maybeNarrow(handled, expr);
|
|
657
723
|
}
|
|
724
|
+
// `globalThis.crypto` is the WebCrypto object the bare `crypto` answers.
|
|
725
|
+
if (!expr.questionDotToken &&
|
|
726
|
+
stdlibGlobalNameOf(lowerer, expr.expression) === "globalThis" &&
|
|
727
|
+
stdlibGlobalNameOf(lowerer, expr) === "crypto") {
|
|
728
|
+
return { kind: "libCall", fn: "webcrypto.object", args: [], type: DYN, loc };
|
|
729
|
+
}
|
|
658
730
|
// `globalThis.<name>` that no lowering above claimed
|
|
659
|
-
// (globalThis.
|
|
731
|
+
// (globalThis.SubtleCrypto, globalThis.localStorage
|
|
660
732
|
// — the harness's capability-conditional knownGlobals adds): the
|
|
661
733
|
// PROPERTY spelling of the identifier chokepoint's JS rule — a stdlib
|
|
662
734
|
// global taken as a VALUE in a JavaScript source is the same opaque
|
|
@@ -730,7 +802,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
730
802
|
type: STRING,
|
|
731
803
|
loc: locOf(expr.name),
|
|
732
804
|
};
|
|
733
|
-
const opt = hasOptionalChainGuard(expr.expression);
|
|
805
|
+
const opt = hasOptionalChainGuard(expr.expression, lowerer);
|
|
734
806
|
return lowerer.maybeNarrow({
|
|
735
807
|
kind: "dynKeyGet",
|
|
736
808
|
key,
|
|
@@ -824,7 +896,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
824
896
|
type: STRING,
|
|
825
897
|
loc: locOf(expr.name),
|
|
826
898
|
};
|
|
827
|
-
const opt = hasOptionalChainGuard(expr.expression);
|
|
899
|
+
const opt = hasOptionalChainGuard(expr.expression, lowerer);
|
|
828
900
|
return lowerer.maybeNarrow({
|
|
829
901
|
kind: "dynKeyGet",
|
|
830
902
|
key,
|
|
@@ -936,7 +1008,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
936
1008
|
type: STRING,
|
|
937
1009
|
loc: locOf(expr.name),
|
|
938
1010
|
};
|
|
939
|
-
const opt = hasOptionalChainGuard(expr.expression);
|
|
1011
|
+
const opt = hasOptionalChainGuard(expr.expression, lowerer);
|
|
940
1012
|
const read = {
|
|
941
1013
|
kind: "dynKeyGet",
|
|
942
1014
|
key,
|
|
@@ -1023,7 +1095,7 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
1023
1095
|
type: STRING,
|
|
1024
1096
|
loc: locOf(expr.name),
|
|
1025
1097
|
};
|
|
1026
|
-
const opt = hasOptionalChainGuard(expr.expression);
|
|
1098
|
+
const opt = hasOptionalChainGuard(expr.expression, lowerer);
|
|
1027
1099
|
return lowerer.maybeNarrow({
|
|
1028
1100
|
kind: "dynKeyGet",
|
|
1029
1101
|
key,
|
|
@@ -1167,8 +1239,39 @@ export function lowerPropertyAccessExpr(lowerer, expr, loc) {
|
|
|
1167
1239
|
loc,
|
|
1168
1240
|
}, expr);
|
|
1169
1241
|
}
|
|
1242
|
+
const childProperty = lowerChildPropertyRead(lowerer, expr);
|
|
1243
|
+
if (childProperty)
|
|
1244
|
+
return childProperty;
|
|
1245
|
+
// A member a typed array's type does not declare (a JavaScript read, or
|
|
1246
|
+
// one under @ts-ignore), such as the feature probe `typeof bytes.toHex`:
|
|
1247
|
+
// when Node's prototype chain for the value lacks the name too, the read
|
|
1248
|
+
// answers undefined, as GetV does there. Names Node has keep the fence.
|
|
1249
|
+
// The element size reads the same way where the checker's type of the
|
|
1250
|
+
// receiver no longer names a typed array (`a instanceof Uint8Array ||
|
|
1251
|
+
// a.BYTES_PER_ELEMENT === 1`, whose right side narrows `a` to never).
|
|
1252
|
+
if (recvLowered.type.kind === "bytes" && expr.name.text === "BYTES_PER_ELEMENT") {
|
|
1253
|
+
return afterReceiver(recvLowered, numLit(BYTES_ELEMENT_SIZE[recvLowered.type.elem], loc), loc);
|
|
1254
|
+
}
|
|
1255
|
+
if (recvLowered.type.kind === "bytes" &&
|
|
1256
|
+
!declaredMemberOf(lowerer, expr.expression, expr.name.text) &&
|
|
1257
|
+
typedArrayLacksMember(expr.name.text, recvLowered.type.elem === "u8")) {
|
|
1258
|
+
return afterReceiver(recvLowered, dynUndefinedExpr(loc), loc);
|
|
1259
|
+
}
|
|
1170
1260
|
lowerer.unsupported("SC1090", expr, `reading '${expr.name.text}' from a value of type '${lowerer.checker.typeToString(lowerer.typeOf(expr.expression))}'`);
|
|
1171
1261
|
}
|
|
1262
|
+
/** `result` after evaluating `receiver` for its effects (none to keep when
|
|
1263
|
+
* the read is safe to discard). */
|
|
1264
|
+
function afterReceiver(receiver, result, loc) {
|
|
1265
|
+
if (isSafeToDiscard(receiver))
|
|
1266
|
+
return result;
|
|
1267
|
+
return {
|
|
1268
|
+
kind: "seqExpr",
|
|
1269
|
+
stmts: [{ kind: "exprStmt", expr: receiver, loc }],
|
|
1270
|
+
result,
|
|
1271
|
+
type: result.type,
|
|
1272
|
+
loc,
|
|
1273
|
+
};
|
|
1274
|
+
}
|
|
1172
1275
|
/** A call expression, through parentheses: its value has no other holder. */
|
|
1173
1276
|
function isFreshCallResult(node) {
|
|
1174
1277
|
let e = node;
|
|
@@ -1338,6 +1441,19 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
1338
1441
|
return { kind: "libCall", fn: "dyn.arrayPrototype", args: [], type: DYN, loc: locOf(expr) };
|
|
1339
1442
|
if (lowerer.stdlibGlobalMember(expr, "Object") === "prototype")
|
|
1340
1443
|
return { kind: "libCall", fn: "dyn.objectPrototype", args: [], type: DYN, loc: locOf(expr) };
|
|
1444
|
+
// Error.prototype as a value (`F.prototype = Object.create(Error.prototype)`)
|
|
1445
|
+
// and Error.captureStackTrace read as a function (`if
|
|
1446
|
+
// (Error.captureStackTrace) ...`).
|
|
1447
|
+
if (isErrorPrototypeValue(lowerer, expr))
|
|
1448
|
+
return { kind: "libCall", fn: "dyn.errorPrototype", args: [], type: DYN, loc: locOf(expr) };
|
|
1449
|
+
if (lowerer.stdlibGlobalMember(expr, "Error") === "captureStackTrace")
|
|
1450
|
+
return {
|
|
1451
|
+
kind: "libCall",
|
|
1452
|
+
fn: "dyn.errorCaptureStackTraceFunction",
|
|
1453
|
+
args: [],
|
|
1454
|
+
type: DYN,
|
|
1455
|
+
loc: locOf(expr),
|
|
1456
|
+
};
|
|
1341
1457
|
// Function.prototype as a VALUE (a prototype-chain link:
|
|
1342
1458
|
// `Object.setPrototypeOf(F.prototype, Function.prototype)`): one
|
|
1343
1459
|
// anonymous function answering undefined, length 0 — a zero-capture
|
|
@@ -1383,6 +1499,30 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
1383
1499
|
return netAddressStatic;
|
|
1384
1500
|
if (lowerer.stdlibGlobalMember(expr, "Buffer") === "isBuffer")
|
|
1385
1501
|
return lowerCheckedPredicateValue(lowerer, "Buffer.isBuffer", "buffer", locOf(expr));
|
|
1502
|
+
// Buffer statics as function values (`Buffer.byteLength.bind(Buffer)` in
|
|
1503
|
+
// truncate-utf8-bytes): the checked forms take any argument as Node does.
|
|
1504
|
+
if (lowerer.stdlibGlobalMember(expr, "Buffer") === "byteLength")
|
|
1505
|
+
return lowerer.lowerNativeCallableValue({
|
|
1506
|
+
fn: "buffer.byteLenValue",
|
|
1507
|
+
params: [DYN, DYN],
|
|
1508
|
+
result: F64,
|
|
1509
|
+
valueParams: [
|
|
1510
|
+
{ mode: "required", type: DYN },
|
|
1511
|
+
{ mode: "optional", type: DYN, defaultValue: undefined },
|
|
1512
|
+
],
|
|
1513
|
+
}, "Buffer.byteLength", locOf(expr));
|
|
1514
|
+
if (lowerer.stdlibGlobalMember(expr, "Buffer") === "alloc")
|
|
1515
|
+
return bufferAllocValue(lowerer, locOf(expr));
|
|
1516
|
+
if (lowerer.stdlibGlobalMember(expr, "Buffer") === "compare")
|
|
1517
|
+
return lowerer.lowerNativeCallableValue({
|
|
1518
|
+
fn: "buffer.compareChk",
|
|
1519
|
+
params: [DYN, DYN],
|
|
1520
|
+
result: F64,
|
|
1521
|
+
valueParams: [
|
|
1522
|
+
{ mode: "required", type: DYN },
|
|
1523
|
+
{ mode: "required", type: DYN },
|
|
1524
|
+
],
|
|
1525
|
+
}, "Buffer.compare", locOf(expr));
|
|
1386
1526
|
if (lowerer.stdlibGlobalMember(expr, "Date") === "now")
|
|
1387
1527
|
return lowerer.lowerNativeCallableValue({
|
|
1388
1528
|
fn: "date.now",
|
|
@@ -1757,6 +1897,13 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
1757
1897
|
loc,
|
|
1758
1898
|
};
|
|
1759
1899
|
}
|
|
1900
|
+
// The element size: a constant of the element kind (1 for a Buffer).
|
|
1901
|
+
if (name === "BYTES_PER_ELEMENT") {
|
|
1902
|
+
const expected = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
|
|
1903
|
+
const receiver = expected?.kind === "bytes" ? strictReceiver(expected) : lowerer.lowerExpr(expr.expression);
|
|
1904
|
+
if (receiver.type.kind === "bytes")
|
|
1905
|
+
return afterReceiver(receiver, numLit(BYTES_ELEMENT_SIZE[receiver.type.elem], loc), loc);
|
|
1906
|
+
}
|
|
1760
1907
|
if (name === "length" || name === "byteLength") {
|
|
1761
1908
|
const expected = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
|
|
1762
1909
|
let receiver = expected?.kind === "bytes" ? strictReceiver(expected) : lowerer.lowerExpr(expr.expression);
|
|
@@ -1889,10 +2036,78 @@ export function lowerIntrinsicProperty(lowerer, expr) {
|
|
|
1889
2036
|
STRING_INDEX_METHODS.has(name) ||
|
|
1890
2037
|
own(STDLIB_SURFACE.string, name) !== undefined
|
|
1891
2038
|
: ARRAY_METHODS.has(name)) {
|
|
2039
|
+
// A JavaScript string method read as a value (smol-toml's
|
|
2040
|
+
// `!!(''.isWellFormed)` feature probe): String.prototype's method, the
|
|
2041
|
+
// runtime's interned function that runs it on its receiver.
|
|
2042
|
+
if (kind === "string" && isJsSourceFile(expr.getSourceFile()) && !expr.questionDotToken) {
|
|
2043
|
+
const receiver = lowerer.lowerExpr(expr.expression);
|
|
2044
|
+
const method = {
|
|
2045
|
+
kind: "libCall",
|
|
2046
|
+
fn: "dyn.builtinMethod",
|
|
2047
|
+
args: [
|
|
2048
|
+
{ kind: "strLit", value: "String", type: STRING, loc: locOf(expr) },
|
|
2049
|
+
{ kind: "strLit", value: name, type: STRING, loc: locOf(expr.name) },
|
|
2050
|
+
],
|
|
2051
|
+
type: DYN,
|
|
2052
|
+
loc: locOf(expr),
|
|
2053
|
+
};
|
|
2054
|
+
return isSafeToDiscard(receiver)
|
|
2055
|
+
? method
|
|
2056
|
+
: {
|
|
2057
|
+
kind: "seqExpr",
|
|
2058
|
+
stmts: [{ kind: "exprStmt", expr: receiver, loc: locOf(expr.expression) }],
|
|
2059
|
+
result: method,
|
|
2060
|
+
type: DYN,
|
|
2061
|
+
loc: locOf(expr),
|
|
2062
|
+
};
|
|
2063
|
+
}
|
|
1892
2064
|
lowerer.unsupported("SC1090", expr, `${kind} methods as values (call '${name}' directly)`);
|
|
1893
2065
|
}
|
|
1894
2066
|
return null;
|
|
1895
2067
|
}
|
|
2068
|
+
/** Buffer.alloc as a function value (`var alloc = Buffer.alloc` in
|
|
2069
|
+
* tar-stream): the runtime checks the size, allocates and fills with
|
|
2070
|
+
* `fill` and `encoding` as Node's alloc does. */
|
|
2071
|
+
function bufferAllocValue(lowerer, loc) {
|
|
2072
|
+
const name = "%builtin.Buffer.alloc";
|
|
2073
|
+
if (!lowerer.builtinCallableValueFns.has(name)) {
|
|
2074
|
+
lowerer.builtinCallableValueFns.set(name, name);
|
|
2075
|
+
const params = ["size", "fill", "encoding"].map((id) => ({ localId: id, name: id, type: DYN }));
|
|
2076
|
+
lowerer.liftedFns.push({
|
|
2077
|
+
name,
|
|
2078
|
+
params,
|
|
2079
|
+
returnType: BYTES_U8,
|
|
2080
|
+
locals: params.map((p) => ({ id: p.localId, name: p.name, type: DYN, mutable: false })),
|
|
2081
|
+
loc,
|
|
2082
|
+
body: [
|
|
2083
|
+
{
|
|
2084
|
+
kind: "return",
|
|
2085
|
+
value: {
|
|
2086
|
+
kind: "libCall",
|
|
2087
|
+
fn: "buffer.allocValue",
|
|
2088
|
+
args: params.map((p) => varRef(p.localId, DYN, loc)),
|
|
2089
|
+
type: BYTES_U8,
|
|
2090
|
+
loc,
|
|
2091
|
+
},
|
|
2092
|
+
loc,
|
|
2093
|
+
},
|
|
2094
|
+
],
|
|
2095
|
+
});
|
|
2096
|
+
}
|
|
2097
|
+
return {
|
|
2098
|
+
kind: "dynFrom",
|
|
2099
|
+
value: {
|
|
2100
|
+
kind: "closure",
|
|
2101
|
+
fnName: name,
|
|
2102
|
+
captures: [],
|
|
2103
|
+
type: { kind: "func", params: [DYN, DYN, DYN], ret: BYTES_U8 },
|
|
2104
|
+
loc,
|
|
2105
|
+
},
|
|
2106
|
+
fnName: "alloc",
|
|
2107
|
+
type: DYN,
|
|
2108
|
+
loc,
|
|
2109
|
+
};
|
|
2110
|
+
}
|
|
1896
2111
|
/** A `T | undefined` class field read that the checker narrowed to `T`
|
|
1897
2112
|
* where the field was assigned a value that may be missing (an unchecked
|
|
1898
2113
|
* indexed read). TypeScript's assignment narrowing is not a runtime fact
|
|
@@ -2259,7 +2474,7 @@ export function lowerGroupsProjection(lowerer, recv, groups, loc) {
|
|
|
2259
2474
|
const key = `regexgroups:${shapeId}:${groups.map((g) => `${g.name}=${g.index}`).join(",")}:${recvKey}`;
|
|
2260
2475
|
let helper = lowerer.valueHelpers.get(key);
|
|
2261
2476
|
if (!helper) {
|
|
2262
|
-
helper =
|
|
2477
|
+
helper = keyedHelperName(lowerer, "%regex.groups", key);
|
|
2263
2478
|
lowerer.valueHelpers.set(key, helper);
|
|
2264
2479
|
const body = [];
|
|
2265
2480
|
const locals = [{ id: "m.0", name: "m", type: recv.type, mutable: true }];
|
|
@@ -2387,7 +2602,7 @@ export function lowerFieldRead(lowerer, expr) {
|
|
|
2387
2602
|
kind: "dynKeyGet",
|
|
2388
2603
|
value,
|
|
2389
2604
|
key: { kind: "strLit", value: expr.name.text, type: STRING, loc: locOf(expr.name) },
|
|
2390
|
-
...(expr.questionDotToken || hasOptionalChainGuard(expr.expression)
|
|
2605
|
+
...(expr.questionDotToken || hasOptionalChainGuard(expr.expression, lowerer)
|
|
2391
2606
|
? { optional: true }
|
|
2392
2607
|
: {}),
|
|
2393
2608
|
type: DYN,
|
|
@@ -2424,6 +2639,9 @@ export function lowerFieldRead(lowerer, expr) {
|
|
|
2424
2639
|
const propSym = lowerer.checker.getPropertyOfType(lowerer.typeOf(expr.expression), expr.name.text);
|
|
2425
2640
|
if (receiverIr?.kind !== "object" &&
|
|
2426
2641
|
propSym &&
|
|
2642
|
+
// The WebCrypto object's generic getRandomValues reads off its
|
|
2643
|
+
// dynamic object.
|
|
2644
|
+
!isWebCryptoReceiver(lowerer, expr.expression) &&
|
|
2427
2645
|
isGenericCallableMemberType(lowerer.checker.getTypeOfSymbol(propSym), lowerer.checker) &&
|
|
2428
2646
|
// CLASS members keep the class-path fences (a poisoned class's own
|
|
2429
2647
|
// diagnostics, the bound-method fence above).
|
|
@@ -2685,7 +2903,7 @@ export function lowerUnionProperty(lowerer, expr) {
|
|
|
2685
2903
|
kind: "dynKeyGet",
|
|
2686
2904
|
value: lowerer.coerceToExpected(value, DYN),
|
|
2687
2905
|
key,
|
|
2688
|
-
...(hasOptionalChainGuard(expr.expression) ? { optional: true } : {}),
|
|
2906
|
+
...(hasOptionalChainGuard(expr.expression, lowerer) ? { optional: true } : {}),
|
|
2689
2907
|
type: DYN,
|
|
2690
2908
|
loc: locOf(expr),
|
|
2691
2909
|
};
|
|
@@ -2920,6 +3138,13 @@ export function classFieldTarget(lowerer, receiverNode, receiverType, fieldName,
|
|
|
2920
3138
|
* known class instance OR a record, and the member is a field or (class
|
|
2921
3139
|
* receivers) a declared accessor property. Returns the pieces of a
|
|
2922
3140
|
* fieldSet/recordSet/accessor-call (minus value/kind) or null. */
|
|
3141
|
+
/** The checked-dynamic value `expr` reads: itself, or the value a checked
|
|
3142
|
+
* extraction validates. Null for other expressions. */
|
|
3143
|
+
function checkedDynamicValue(expr) {
|
|
3144
|
+
if (expr.type.kind === "dyn")
|
|
3145
|
+
return expr;
|
|
3146
|
+
return expr.kind === "dynCheck" && expr.value.type.kind === "dyn" ? expr.value : null;
|
|
3147
|
+
}
|
|
2923
3148
|
export function fieldTarget(lowerer, access) {
|
|
2924
3149
|
if (lowerer.cjsLocalModuleBindingOf(access.expression))
|
|
2925
3150
|
return null;
|
|
@@ -2953,6 +3178,18 @@ export function fieldTarget(lowerer, access) {
|
|
|
2953
3178
|
return classFieldTarget(lowerer, access.expression, ownerType, access.name.text);
|
|
2954
3179
|
}
|
|
2955
3180
|
}
|
|
3181
|
+
// `value.#x = v` on a checked-dynamic value: the field of the
|
|
3182
|
+
// brand-checked receiver (checkedPrivateValue).
|
|
3183
|
+
if (ts.isPrivateIdentifier(access.name)) {
|
|
3184
|
+
const owner = privateNameClass(lowerer, access.name);
|
|
3185
|
+
const probed = owner?.fields.has(access.name.text)
|
|
3186
|
+
? tryLowerExpression(lowerer, access.expression)
|
|
3187
|
+
: null;
|
|
3188
|
+
if (owner && probed && checkedDynamicValue(probed)) {
|
|
3189
|
+
const receiver = checkedPrivateValue(lowerer, owner, access, checkedDynamicValue(lowerer.lowerExpr(access.expression)), locOf(access));
|
|
3190
|
+
return classFieldTarget(lowerer, access.expression, { kind: "object", className: owner.def.name }, access.name.text, receiver);
|
|
3191
|
+
}
|
|
3192
|
+
}
|
|
2956
3193
|
const stored = ts.isIdentifier(access.expression)
|
|
2957
3194
|
? (lowerer.peekLocal(access.expression)?.type ?? lowerer.globalOf(access.expression)?.type)
|
|
2958
3195
|
: undefined;
|
|
@@ -3312,6 +3549,9 @@ export function fieldGetExpr(lowerer, target, loc, blame) {
|
|
|
3312
3549
|
function lowerStreamObjectProperty(lowerer, expr) {
|
|
3313
3550
|
if (expr.questionDotToken && !lowerer.chainHandled.has(expr))
|
|
3314
3551
|
return null;
|
|
3552
|
+
const valueStream = lowerValueStreamProperty(lowerer, expr);
|
|
3553
|
+
if (valueStream)
|
|
3554
|
+
return valueStream;
|
|
3315
3555
|
const recvT = lowerer.mapTypeOf(lowerer.typeOf(expr.expression));
|
|
3316
3556
|
if (recvT?.kind !== "object")
|
|
3317
3557
|
return null;
|
|
@@ -3328,10 +3568,25 @@ function lowerStreamObjectProperty(lowerer, expr) {
|
|
|
3328
3568
|
}
|
|
3329
3569
|
return lowerStreamProperty(lowerer, expr, info);
|
|
3330
3570
|
}
|
|
3571
|
+
/** The error constructors among GLOBAL_CONSTRUCTOR_VALUES. Their statics
|
|
3572
|
+
* (`Error.stackTraceLimit`, `Error.captureStackTrace`) keep their own
|
|
3573
|
+
* lowerings, so fenceBuiltinConstructorStaticRead leaves them alone. */
|
|
3574
|
+
const ERROR_CONSTRUCTOR_VALUES = new Set([
|
|
3575
|
+
"Error",
|
|
3576
|
+
"TypeError",
|
|
3577
|
+
"RangeError",
|
|
3578
|
+
"SyntaxError",
|
|
3579
|
+
"ReferenceError",
|
|
3580
|
+
"EvalError",
|
|
3581
|
+
"URIError",
|
|
3582
|
+
"AggregateError",
|
|
3583
|
+
]);
|
|
3331
3584
|
/** The builtin constructors JavaScript sources read as real function
|
|
3332
3585
|
* values rather than identity tokens: the runtime interns one function per
|
|
3333
3586
|
* constructor, and dynamic values answer `.constructor` with the same one,
|
|
3334
|
-
* so `o.constructor === Object`
|
|
3587
|
+
* so `o.constructor === Object` and `err.constructor === TypeError` are
|
|
3588
|
+
* exact identity tests, and `err.constructor.name` is the constructor's
|
|
3589
|
+
* name. */
|
|
3335
3590
|
const GLOBAL_CONSTRUCTOR_VALUES = new Set([
|
|
3336
3591
|
"Object",
|
|
3337
3592
|
"Function",
|
|
@@ -3342,6 +3597,7 @@ const GLOBAL_CONSTRUCTOR_VALUES = new Set([
|
|
|
3342
3597
|
"Promise",
|
|
3343
3598
|
"WeakMap",
|
|
3344
3599
|
"WeakSet",
|
|
3600
|
+
...ERROR_CONSTRUCTOR_VALUES,
|
|
3345
3601
|
]);
|
|
3346
3602
|
/** The builtin global functions JavaScript sources read as interned
|
|
3347
3603
|
* function values (the `cond ? setImmediate : process.nextTick` feature
|
|
@@ -3388,8 +3644,18 @@ export function builtinGlobalValue(canonical, loc, js = false) {
|
|
|
3388
3644
|
* answer undefined, so it keeps its static lowering or its fence. */
|
|
3389
3645
|
const BUILTIN_VALUE_MEMBERS = new Set(["name", "length", "constructor"]);
|
|
3390
3646
|
/** The Object statics whose answers for an interned builtin function value
|
|
3391
|
-
* match Node's (identity,
|
|
3392
|
-
|
|
3647
|
+
* match Node's (identity, the empty enumerable own-key lists, and
|
|
3648
|
+
* extensibility: freezing, sealing and preventExtensions are fenced, so the
|
|
3649
|
+
* values stay extensible). */
|
|
3650
|
+
const BUILTIN_VALUE_REFLECTION = new Set([
|
|
3651
|
+
"is",
|
|
3652
|
+
"keys",
|
|
3653
|
+
"values",
|
|
3654
|
+
"entries",
|
|
3655
|
+
"isExtensible",
|
|
3656
|
+
"isFrozen",
|
|
3657
|
+
"isSealed",
|
|
3658
|
+
]);
|
|
3393
3659
|
/** The value `builtinGlobalValue` gives the stdlib global `expr` read at its
|
|
3394
3660
|
* use site: null when the use reads the global's members (they keep their
|
|
3395
3661
|
* lowerings and fences), and SC2020 when it is the target of reflection or
|
|
@@ -3460,6 +3726,7 @@ function fenceBuiltinConstructorStaticRead(lowerer, access) {
|
|
|
3460
3726
|
if (symbol !== undefined &&
|
|
3461
3727
|
ts.symbolName(symbol).endsWith("Constructor") &&
|
|
3462
3728
|
GLOBAL_CONSTRUCTOR_VALUES.has(ts.symbolName(symbol).slice(0, -"Constructor".length)) &&
|
|
3729
|
+
!ERROR_CONSTRUCTOR_VALUES.has(ts.symbolName(symbol).slice(0, -"Constructor".length)) &&
|
|
3463
3730
|
lowerer.isStdlibSymbol(symbol))
|
|
3464
3731
|
lowerer.stdlibMemberFence(access);
|
|
3465
3732
|
return null;
|
|
@@ -3541,4 +3808,72 @@ export function declaredMemberOf(lowerer, receiver, name) {
|
|
|
3541
3808
|
const symbol = lowerer.checker.getPropertyOfType(lowerer.typeOf(receiver), name);
|
|
3542
3809
|
return !!symbol && symbol.declarations.length > 0;
|
|
3543
3810
|
}
|
|
3811
|
+
/** Whether `expr` reads Promise.prototype, directly or as
|
|
3812
|
+
* `promise.constructor.prototype`. The checker types it Promise<any>, but
|
|
3813
|
+
* the value is an ordinary object, so a binding inferred from it stays
|
|
3814
|
+
* checked-dynamic (as in Node, promise methods called on it throw). */
|
|
3815
|
+
export function isPromisePrototypeRead(lowerer, expr) {
|
|
3816
|
+
if (!expr)
|
|
3817
|
+
return false;
|
|
3818
|
+
while (ts.isParenthesizedExpression(expr))
|
|
3819
|
+
expr = expr.expression;
|
|
3820
|
+
if (!ts.isPropertyAccessExpression(expr) || expr.questionDotToken)
|
|
3821
|
+
return false;
|
|
3822
|
+
if (expr.name.text !== "prototype")
|
|
3823
|
+
return false;
|
|
3824
|
+
if (lowerer.stdlibGlobalMember(expr, "Promise") === "prototype")
|
|
3825
|
+
return true;
|
|
3826
|
+
const inner = expr.expression;
|
|
3827
|
+
return (ts.isPropertyAccessExpression(inner) &&
|
|
3828
|
+
!inner.questionDotToken &&
|
|
3829
|
+
inner.name.text === "constructor" &&
|
|
3830
|
+
lowerer.mapTypeOf(lowerer.typeOf(inner.expression))?.kind === "promise");
|
|
3831
|
+
}
|
|
3832
|
+
/** A promise's `constructor` (the Promise constructor value), and
|
|
3833
|
+
* Promise.prototype read as `promise.constructor.prototype` or
|
|
3834
|
+
* `Promise.prototype` (execa's `(async () => {})().constructor.prototype`):
|
|
3835
|
+
* an object holding the runtime's then, catch and finally (thenables.ts).
|
|
3836
|
+
* Null for other reads. */
|
|
3837
|
+
function lowerPromiseConstructorRead(lowerer, expr) {
|
|
3838
|
+
if (expr.questionDotToken)
|
|
3839
|
+
return null;
|
|
3840
|
+
const loc = locOf(expr);
|
|
3841
|
+
const isPromise = (node) => lowerer.mapTypeOf(lowerer.typeOf(node))?.kind === "promise";
|
|
3842
|
+
if (expr.name.text === "prototype") {
|
|
3843
|
+
if (lowerer.stdlibGlobalMember(expr, "Promise") === "prototype")
|
|
3844
|
+
return promisePrototypeValue(lowerer, loc);
|
|
3845
|
+
const inner = expr.expression;
|
|
3846
|
+
if (ts.isPropertyAccessExpression(inner) &&
|
|
3847
|
+
!inner.questionDotToken &&
|
|
3848
|
+
inner.name.text === "constructor" &&
|
|
3849
|
+
isPromise(inner.expression)) {
|
|
3850
|
+
const receiver = lowerer.lowerExpr(inner.expression);
|
|
3851
|
+
const prototype = promisePrototypeValue(lowerer, loc);
|
|
3852
|
+
return isSafeToDiscard(receiver)
|
|
3853
|
+
? prototype
|
|
3854
|
+
: {
|
|
3855
|
+
kind: "seqExpr",
|
|
3856
|
+
stmts: [{ kind: "exprStmt", expr: receiver, loc }],
|
|
3857
|
+
result: prototype,
|
|
3858
|
+
type: DYN,
|
|
3859
|
+
loc,
|
|
3860
|
+
};
|
|
3861
|
+
}
|
|
3862
|
+
return null;
|
|
3863
|
+
}
|
|
3864
|
+
if (expr.name.text === "constructor" && isPromise(expr.expression)) {
|
|
3865
|
+
const receiver = lowerer.lowerExpr(expr.expression);
|
|
3866
|
+
const ctor = builtinGlobalValue("Promise", loc);
|
|
3867
|
+
return isSafeToDiscard(receiver)
|
|
3868
|
+
? ctor
|
|
3869
|
+
: {
|
|
3870
|
+
kind: "seqExpr",
|
|
3871
|
+
stmts: [{ kind: "exprStmt", expr: receiver, loc }],
|
|
3872
|
+
result: ctor,
|
|
3873
|
+
type: DYN,
|
|
3874
|
+
loc,
|
|
3875
|
+
};
|
|
3876
|
+
}
|
|
3877
|
+
return null;
|
|
3878
|
+
}
|
|
3544
3879
|
//# sourceMappingURL=property-access.js.map
|