@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,9 +1,13 @@
|
|
|
1
|
+
import { DATE_TIME_FIELD, dateRootOf, dateSuperCall, isDatePrototypeMethod, lowerDateSuperMethodCall, } from "./builtins/date-classes.js";
|
|
2
|
+
import { lowerDateStaticCall } from "./builtins/dates.js";
|
|
3
|
+
import { keyedHelperName } from "./stable-names.js";
|
|
1
4
|
import { lowerValueReturningConstructorNew } from "./js-dynamic-objects.js";
|
|
2
5
|
import { adaptPromiseExecutor } from "./promise-executor-adapter.js";
|
|
3
6
|
import { dynUndefinedExpr, nodeThrowExpr, varRef } from "../../ir/build.js";
|
|
4
7
|
import { constructedFromValue, constructedValue, superIntoResultSlot, } from "./constructor-returns.js";
|
|
5
8
|
import { checkedIterableSpread } from "./checked-iterable-spread.js";
|
|
6
9
|
import { lowerReadlineUiNew } from "./builtins/readline.js";
|
|
10
|
+
import { builtinMemberRequireDecl } from "./builtins/module-bindings.js";
|
|
7
11
|
import { checkedClassUnionAssertion } from "./class-assertions.js";
|
|
8
12
|
import { collectClassMethodMutations } from "./class-method-mutations.js";
|
|
9
13
|
import { InternalCompilerError } from "../../errors.js";
|
|
@@ -28,14 +32,15 @@ import { bodyReadsArguments } from "../arguments-usage.js";
|
|
|
28
32
|
import { errorNameAfterField, errorViewFields } from "./error-name-order.js";
|
|
29
33
|
import { checkedJsDocumentedParameter, documentedParameter, generatorMeta, } from "./call-signatures.js";
|
|
30
34
|
import { omittedArgFor } from "./call-arguments.js";
|
|
31
|
-
import { isGenericCallableMemberType, jsOpenObjectType, typeKey, withUnitArm, } from "../type-mapper.js";
|
|
32
|
-
import { cjsClassExprWholeExportOf, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, locOf, } from "../program.js";
|
|
35
|
+
import { checkerTypeDescription, isGenericCallableMemberType, jsOpenObjectType, typeKey, withUnitArm, } from "../type-mapper.js";
|
|
36
|
+
import { canonicalBuiltinModule, cjsClassExprWholeExportOf, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, locOf, requireSpecOf, } from "../program.js";
|
|
33
37
|
import { PoisonError, dynFallbackType, jsFuncNameOf, newFnCtx, own } from "./lowerer.js";
|
|
34
38
|
import { isAssertClassNew } from "./assert-instances.js";
|
|
39
|
+
import { isCjsRequireGlobal } from "./lower-node-module.js";
|
|
35
40
|
import { lowerArrayConstructor } from "./containers/array-construction.js";
|
|
36
41
|
import { lowerMapSeedNew, lowerSetSeedNew } from "./containers/collection-methods.js";
|
|
37
42
|
import { lowerObjectConstructor } from "./containers/indexed-objects.js";
|
|
38
|
-
import { knownBufEncoding } from "./containers/bytes.js";
|
|
43
|
+
import { knownBufEncoding, lowerNodeModulesBufferConstruct } from "./containers/bytes.js";
|
|
39
44
|
import { isSafeToRepeat } from "./expressions/evaluation-safety.js";
|
|
40
45
|
import { lowerSearchParamsNew } from "./builtins/url.js";
|
|
41
46
|
import { lowerTextCodecNew } from "./builtins/text-codecs.js";
|
|
@@ -46,7 +51,7 @@ import { builtinEventTargetBaseOf, eventTargetApiMembers, eventTargetApiMethod,
|
|
|
46
51
|
import { emitOverrideShapeReason, emitSpecSuperForward, emitterRooted, lowerEmitterSuperCall, } from "./lower-event-emitter.js";
|
|
47
52
|
import { declSymbolOf } from "./lower-modules.js";
|
|
48
53
|
import { classSymbolKeyOf, classSymbolKeyOfSymbol, symbolFieldDisplayName, } from "./symbol-fields.js";
|
|
49
|
-
import { lowerHttpAgentNew, lowerHttpServerNew } from "./lower-server.js";
|
|
54
|
+
import { lowerHttpAgentNew, lowerHttpServerNew, lowerTlsSocketNew } from "./lower-server.js";
|
|
50
55
|
import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, ambientUndefinedFnSymbolOf, contextualUndefReadType, fenceEarlyAliasUse, fenceEarlyNsMemberRef, nsMemberIdentOf, nsUndefRead, } from "./lower-namespaces.js";
|
|
51
56
|
import { mixinResultBindingClassOf } from "./lower-mixins.js";
|
|
52
57
|
import { hasLexicalPrivateReference, hasStaticThis, rejectStaticThis } from "./static-this.js";
|
|
@@ -491,8 +496,10 @@ export function registerBuiltinErrorClasses(lowerer) {
|
|
|
491
496
|
throwingSetters: [],
|
|
492
497
|
staticFields: [],
|
|
493
498
|
};
|
|
494
|
-
if (base)
|
|
499
|
+
if (base) {
|
|
495
500
|
base.subclasses.push(info);
|
|
501
|
+
lowerer.subclassLinks++;
|
|
502
|
+
}
|
|
496
503
|
lowerer.classes.set(irName, info);
|
|
497
504
|
}
|
|
498
505
|
}
|
|
@@ -526,6 +533,22 @@ export function registerBuiltinEmitterClass(lowerer) {
|
|
|
526
533
|
};
|
|
527
534
|
lowerer.classes.set(RUNTIME_EMITTER_CLASS, info);
|
|
528
535
|
}
|
|
536
|
+
/** `class Bus extends require("events") {}` in a CommonJS module: the
|
|
537
|
+
* events module is the EventEmitter class itself, so the base is the
|
|
538
|
+
* runtime emitter, exactly as through a `require("events")` binding. */
|
|
539
|
+
export function builtinRequireBaseOf(lowerer, node) {
|
|
540
|
+
let expr = node;
|
|
541
|
+
while (ts.isParenthesizedExpression(expr))
|
|
542
|
+
expr = expr.expression;
|
|
543
|
+
if (!ts.isCallExpression(expr) || !isJsSourceFile(expr.getSourceFile()))
|
|
544
|
+
return null;
|
|
545
|
+
const spec = requireSpecOf(expr);
|
|
546
|
+
if (spec === null || canonicalBuiltinModule(spec) !== "events")
|
|
547
|
+
return null;
|
|
548
|
+
if (!isCjsRequireGlobal(lowerer, expr.expression))
|
|
549
|
+
return null;
|
|
550
|
+
return lowerer.classes.get(RUNTIME_EMITTER_CLASS) ?? null;
|
|
551
|
+
}
|
|
529
552
|
/** The runtime-provided node:stream classes as eagerly-registered
|
|
530
553
|
* ClassInfos (the emitter story): mapType names `%Readable` et al the
|
|
531
554
|
* moment a stream type appears, so the infos must exist before any
|
|
@@ -557,8 +580,10 @@ export function registerBuiltinStreamClasses(lowerer) {
|
|
|
557
580
|
throwingSetters: [],
|
|
558
581
|
staticFields: [],
|
|
559
582
|
};
|
|
560
|
-
if (base)
|
|
583
|
+
if (base) {
|
|
561
584
|
base.subclasses.push(info);
|
|
585
|
+
lowerer.subclassLinks++;
|
|
586
|
+
}
|
|
562
587
|
lowerer.classes.set(irName, info);
|
|
563
588
|
}
|
|
564
589
|
}
|
|
@@ -583,10 +608,15 @@ export function builtinStreamInfoOf(lowerer, symbol) {
|
|
|
583
608
|
// member to the stdlib class symbol. The declaration itself is
|
|
584
609
|
// alias plumbing (streamClassAliasDecl — both declaration walks
|
|
585
610
|
// skip it).
|
|
611
|
+
// A `var`/`let` binding of the inline require member
|
|
612
|
+
// (`var Transform = require("stream").Transform`) is the same alias
|
|
613
|
+
// plumbing as builtinMemberRequireDecl's: its declaration owns no
|
|
614
|
+
// storage either way.
|
|
586
615
|
const decl = symbol.valueDeclaration;
|
|
587
616
|
if (decl &&
|
|
588
617
|
ts.isVariableDeclaration(decl) &&
|
|
589
|
-
(ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) !== 0
|
|
618
|
+
((ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) !== 0 ||
|
|
619
|
+
builtinMemberRequireDecl(decl.name, decl.initializer)) &&
|
|
590
620
|
decl.initializer !== undefined &&
|
|
591
621
|
ts.isPropertyAccessExpression(decl.initializer) &&
|
|
592
622
|
!decl.initializer.questionDotToken &&
|
|
@@ -891,7 +921,8 @@ export function builtinEmitterInfoOf(lowerer, symbol) {
|
|
|
891
921
|
const decl = symbol.valueDeclaration;
|
|
892
922
|
if (decl !== undefined &&
|
|
893
923
|
ts.isVariableDeclaration(decl) &&
|
|
894
|
-
(ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) !== 0
|
|
924
|
+
((ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) !== 0 ||
|
|
925
|
+
builtinMemberRequireDecl(decl.name, decl.initializer)) &&
|
|
895
926
|
decl.initializer !== undefined &&
|
|
896
927
|
ts.isPropertyAccessExpression(decl.initializer) &&
|
|
897
928
|
!decl.initializer.questionDotToken &&
|
|
@@ -1334,6 +1365,7 @@ mixin) {
|
|
|
1334
1365
|
: (computedBase?.classInfo ?? null);
|
|
1335
1366
|
let genericBase;
|
|
1336
1367
|
let callableBase;
|
|
1368
|
+
let extendsDate = false;
|
|
1337
1369
|
let factoryBaseExpression;
|
|
1338
1370
|
const adoptCallableBase = (expression) => {
|
|
1339
1371
|
if (familyMode || inst || mixin)
|
|
@@ -1491,6 +1523,11 @@ mixin) {
|
|
|
1491
1523
|
// callee is NOT a mixin function keeps the computed-expression
|
|
1492
1524
|
// fence below.
|
|
1493
1525
|
if (t && ts.isCallExpression(t.expression) && !t.typeArguments?.nodes) {
|
|
1526
|
+
const requiredBase = builtinRequireBaseOf(lowerer, t.expression);
|
|
1527
|
+
if (requiredBase) {
|
|
1528
|
+
base = requiredBase;
|
|
1529
|
+
continue;
|
|
1530
|
+
}
|
|
1494
1531
|
const mixinBase = lowerer.mixinCallClassInfoOf(t.expression);
|
|
1495
1532
|
if (mixinBase) {
|
|
1496
1533
|
base = mixinBase;
|
|
@@ -1509,6 +1546,12 @@ mixin) {
|
|
|
1509
1546
|
continue;
|
|
1510
1547
|
lowerer.unsupported("SC1090", clause, "extending computed expressions");
|
|
1511
1548
|
}
|
|
1549
|
+
if (!familyMode && !inst && !mixin && lowerer.isStdlibGlobal(t.expression, "Date")) {
|
|
1550
|
+
if (t.typeArguments?.nodes)
|
|
1551
|
+
lowerer.unsupported("SC1090", t, "extending generic classes");
|
|
1552
|
+
extendsDate = true;
|
|
1553
|
+
continue;
|
|
1554
|
+
}
|
|
1512
1555
|
const symbol = lowerer.resolveValueSymbol(t.expression);
|
|
1513
1556
|
// Extending a REBINDABLE decorated class (analysis already ran —
|
|
1514
1557
|
// this collection is a class expression or a generic
|
|
@@ -1709,7 +1752,8 @@ mixin) {
|
|
|
1709
1752
|
};
|
|
1710
1753
|
for (const member of decl.members.nodes) {
|
|
1711
1754
|
if ((functionLocalClass(decl) || checkedStatics) &&
|
|
1712
|
-
isJsSourceFile(ts.getSourceFileOfNode(decl))
|
|
1755
|
+
(isJsSourceFile(ts.getSourceFileOfNode(decl)) ||
|
|
1756
|
+
(functionLocalClass(decl) && ts.isMethodDeclaration(member))) &&
|
|
1713
1757
|
(ts.isClassStaticBlockDeclaration(member) ||
|
|
1714
1758
|
ts
|
|
1715
1759
|
.getModifiers(member)
|
|
@@ -3365,7 +3409,8 @@ mixin) {
|
|
|
3365
3409
|
// synthesized constructor forwards the same params to super).
|
|
3366
3410
|
const ctorParams = ctor && !mixinForwarding
|
|
3367
3411
|
? lowerer.paramShapes(ctor.parameters.nodes)
|
|
3368
|
-
: (base?.ctorParams ??
|
|
3412
|
+
: (base?.ctorParams ??
|
|
3413
|
+
(callableBase || extendsDate ? [{ type: DYN, mode: "dynRest" }] : []));
|
|
3369
3414
|
if (ctor &&
|
|
3370
3415
|
!mixinForwarding &&
|
|
3371
3416
|
isJsSourceFile(ts.getSourceFileOfNode(ctor)) &&
|
|
@@ -3392,6 +3437,7 @@ mixin) {
|
|
|
3392
3437
|
// Redeclared INHERITED fields contribute no slot (their
|
|
3393
3438
|
// initializers assign the prefix slot).
|
|
3394
3439
|
fields: [
|
|
3440
|
+
...(extendsDate ? [{ name: DATE_TIME_FIELD, type: DATE_T }] : []),
|
|
3395
3441
|
...(base?.def.fields ?? []),
|
|
3396
3442
|
...fieldOrder
|
|
3397
3443
|
.filter((f) => f.redeclared !== true)
|
|
@@ -3423,6 +3469,7 @@ mixin) {
|
|
|
3423
3469
|
base,
|
|
3424
3470
|
...(genericBase ? { genericBase } : {}),
|
|
3425
3471
|
...(callableBase ? { callableBase } : {}),
|
|
3472
|
+
...(extendsDate ? { extendsDate: true } : {}),
|
|
3426
3473
|
...(factoryBaseExpression ? { factoryBaseExpression } : {}),
|
|
3427
3474
|
subclasses: [],
|
|
3428
3475
|
throwingSetters,
|
|
@@ -3463,6 +3510,7 @@ mixin) {
|
|
|
3463
3510
|
path: inst.path,
|
|
3464
3511
|
family: inst.family,
|
|
3465
3512
|
bindings: inst.bindings,
|
|
3513
|
+
tsBindings: inst.tsBindings,
|
|
3466
3514
|
typeArgsText: inst.typeArgsText,
|
|
3467
3515
|
ordinal: inst.ordinal,
|
|
3468
3516
|
};
|
|
@@ -3493,8 +3541,10 @@ mixin) {
|
|
|
3493
3541
|
};
|
|
3494
3542
|
lowerer.genericClassByDecl.set(decl, info.generic);
|
|
3495
3543
|
}
|
|
3496
|
-
if (base)
|
|
3544
|
+
if (base) {
|
|
3497
3545
|
base.subclasses.push(info);
|
|
3546
|
+
lowerer.subclassLinks++;
|
|
3547
|
+
}
|
|
3498
3548
|
lowerer.classes.set(className, info);
|
|
3499
3549
|
if (computedBase && !functionLocalClass(decl)) {
|
|
3500
3550
|
info.def.baseValueGlobal = `%g.${className}.computedBase`;
|
|
@@ -3596,8 +3646,10 @@ export function genericClassInstanceType(lowerer, decl, ref, mapArgument) {
|
|
|
3596
3646
|
.getTypeArguments(ref)
|
|
3597
3647
|
.slice(0, gci.typeParams.length);
|
|
3598
3648
|
const mapped = [];
|
|
3649
|
+
const tsArgs = [];
|
|
3599
3650
|
if (args.length === gci.typeParams.length) {
|
|
3600
3651
|
for (const a of args) {
|
|
3652
|
+
tsArgs.push(lowerer.typeParamTsResolver(a) ?? a);
|
|
3601
3653
|
const m = lowerer.mapTypeOf(a, mapArgument);
|
|
3602
3654
|
if (!m || m.kind === "void") {
|
|
3603
3655
|
// An UNBOUND type parameter argument (`Box<T>` outside any
|
|
@@ -3618,9 +3670,34 @@ export function genericClassInstanceType(lowerer, decl, ref, mapArgument) {
|
|
|
3618
3670
|
if (!b)
|
|
3619
3671
|
return null;
|
|
3620
3672
|
mapped.push(b);
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3673
|
+
const bound = lowerer.typeParamTsBindings?.get(tp);
|
|
3674
|
+
if (bound)
|
|
3675
|
+
tsArgs.push(bound);
|
|
3676
|
+
}
|
|
3677
|
+
}
|
|
3678
|
+
// A type parameter that a conditional type in the class depends on
|
|
3679
|
+
// (`K extends "required" ? T : T | undefined`) is bound to its checker
|
|
3680
|
+
// type for the members, and that type keys the instance: mapType alone
|
|
3681
|
+
// widens a literal, so Field<string, "required"> and Field<string,
|
|
3682
|
+
// "optional"> would otherwise share one layout. The other parameters get
|
|
3683
|
+
// no checker binding, so nothing in the members depends on a literal
|
|
3684
|
+
// the key does not carry.
|
|
3685
|
+
gci.literalSensitive ??= literalSensitiveTypeParams(lowerer, gci);
|
|
3686
|
+
const sensitive = (i) => tsArgs.length === gci.typeParams.length && gci.literalSensitive.has(gci.typeParams[i]);
|
|
3687
|
+
const checkerKey = gci.typeParams
|
|
3688
|
+
.map((_, i) => (sensitive(i) ? `#${tsArgs[i].id}` : "*"))
|
|
3689
|
+
.join(",");
|
|
3690
|
+
const key = mapped.map(typeKey).join(",") + (gci.literalSensitive.size > 0 ? `@${checkerKey}` : "");
|
|
3691
|
+
const literalText = (i) => {
|
|
3692
|
+
const arg = sensitive(i) ? tsArgs[i] : undefined;
|
|
3693
|
+
if (arg?.isStringLiteralType())
|
|
3694
|
+
return JSON.stringify(arg.value);
|
|
3695
|
+
if (arg?.isNumberLiteralType())
|
|
3696
|
+
return String(arg.value);
|
|
3697
|
+
if (arg && arg.flags & ts.TypeFlags.BooleanLiteral)
|
|
3698
|
+
return lowerer.checker.typeToString(arg);
|
|
3699
|
+
return null;
|
|
3700
|
+
};
|
|
3624
3701
|
const existing = gci.instances.get(key);
|
|
3625
3702
|
if (existing) {
|
|
3626
3703
|
if (existing.info)
|
|
@@ -3634,18 +3711,40 @@ export function genericClassInstanceType(lowerer, decl, ref, mapArgument) {
|
|
|
3634
3711
|
lowerer.unsupported("SC1090", decl, `unbounded generic class instantiation ('${gci.baseName}' exceeded ${MAX_INSTANTIATION_RECURSION} recursive specializations on one demand path)`);
|
|
3635
3712
|
}
|
|
3636
3713
|
const ordinal = gci.instances.size;
|
|
3637
|
-
|
|
3714
|
+
// The name does not take the checker type ids of the key: a literal
|
|
3715
|
+
// argument is named by its text, another checker type by its
|
|
3716
|
+
// description. Two keys that still describe alike number the later one.
|
|
3717
|
+
const nameKey = mapped.map(typeKey).join(",") +
|
|
3718
|
+
(gci.literalSensitive.size > 0
|
|
3719
|
+
? `@${gci.typeParams
|
|
3720
|
+
.map((_, i) => sensitive(i)
|
|
3721
|
+
? (literalText(i) ?? checkerTypeDescription(tsArgs[i], lowerer.typeCtx))
|
|
3722
|
+
: "*")
|
|
3723
|
+
.join(",")}`
|
|
3724
|
+
: "");
|
|
3725
|
+
const prefix = `${gci.family.def.name}%`;
|
|
3726
|
+
const taken = new Set([...gci.instances.values()].map((instance) => instance.name));
|
|
3727
|
+
let name = keyedHelperName(lowerer, prefix, nameKey, "");
|
|
3728
|
+
for (let n = 1; taken.has(name); n++)
|
|
3729
|
+
name = keyedHelperName(lowerer, prefix, `${nameKey}#${n}`, "");
|
|
3638
3730
|
const entry = { name, info: null };
|
|
3639
3731
|
gci.instances.set(key, entry);
|
|
3640
3732
|
const bindings = new Map();
|
|
3641
3733
|
gci.typeParams.forEach((tp, i) => bindings.set(tp, mapped[i]));
|
|
3642
|
-
const
|
|
3734
|
+
const tsBindings = new Map();
|
|
3735
|
+
gci.typeParams.forEach((tp, i) => {
|
|
3736
|
+
if (sensitive(i))
|
|
3737
|
+
tsBindings.set(tp, tsArgs[i]);
|
|
3738
|
+
});
|
|
3739
|
+
const rendered = mapped.map((m, i) => literalText(i) ?? lowerer.fmt(m)).join(", ");
|
|
3643
3740
|
const typeArgsText = `<${rendered.length > 80 ? rendered.slice(0, 77) + "..." : rendered}>`;
|
|
3644
3741
|
const prevBindings = lowerer.typeParamBindings;
|
|
3742
|
+
const prevTsBindings = lowerer.typeParamTsBindings;
|
|
3645
3743
|
const prevContext = lowerer.instantiationContext;
|
|
3646
3744
|
const previousPath = lowerer.genericInstantiationPath;
|
|
3647
3745
|
lowerer.genericInstantiationPath = path;
|
|
3648
3746
|
lowerer.typeParamBindings = bindings;
|
|
3747
|
+
lowerer.typeParamTsBindings = tsBindings;
|
|
3649
3748
|
lowerer.instantiationContext = `instantiating class '${gci.baseName}' with ${typeArgsText}`;
|
|
3650
3749
|
try {
|
|
3651
3750
|
lowerer.collectClassShapeInner(decl, undefined, {
|
|
@@ -3653,6 +3752,7 @@ export function genericClassInstanceType(lowerer, decl, ref, mapArgument) {
|
|
|
3653
3752
|
family: gci.family,
|
|
3654
3753
|
name,
|
|
3655
3754
|
bindings,
|
|
3755
|
+
tsBindings,
|
|
3656
3756
|
typeArgsText,
|
|
3657
3757
|
ordinal,
|
|
3658
3758
|
});
|
|
@@ -3667,6 +3767,7 @@ export function genericClassInstanceType(lowerer, decl, ref, mapArgument) {
|
|
|
3667
3767
|
}
|
|
3668
3768
|
finally {
|
|
3669
3769
|
lowerer.typeParamBindings = prevBindings;
|
|
3770
|
+
lowerer.typeParamTsBindings = prevTsBindings;
|
|
3670
3771
|
lowerer.instantiationContext = prevContext;
|
|
3671
3772
|
lowerer.genericInstantiationPath = previousPath;
|
|
3672
3773
|
}
|
|
@@ -3681,6 +3782,65 @@ export function genericClassInstanceType(lowerer, decl, ref, mapArgument) {
|
|
|
3681
3782
|
lowerer.onLateClassCollected?.(info);
|
|
3682
3783
|
return { kind: "object", className: name };
|
|
3683
3784
|
}
|
|
3785
|
+
/** The class's type parameters that a conditional type inside it depends
|
|
3786
|
+
* on: the parameters named within a type node that is a conditional type
|
|
3787
|
+
* or reaches one through the type aliases and interfaces it refers to
|
|
3788
|
+
* (`get(): Value<T, K>` with `type Value<T, K> = K extends "required" ? T
|
|
3789
|
+
* : T | undefined`, also when the alias wraps the conditional in a union
|
|
3790
|
+
* or another alias). Their arguments pick the conditional's branch. */
|
|
3791
|
+
function literalSensitiveTypeParams(lowerer, gci) {
|
|
3792
|
+
const params = new Set(gci.typeParams);
|
|
3793
|
+
const found = new Set();
|
|
3794
|
+
const reaches = new Map();
|
|
3795
|
+
const declarationsReach = (symbol) => {
|
|
3796
|
+
const target = symbol.flags & ts.SymbolFlags.Alias ? lowerer.checker.getAliasedSymbol(symbol) : symbol;
|
|
3797
|
+
const known = reaches.get(target);
|
|
3798
|
+
if (known !== undefined)
|
|
3799
|
+
return known;
|
|
3800
|
+
reaches.set(target, false); // a recursive alias reaches through its other parts
|
|
3801
|
+
const result = target.declarations.some((d) => ts.isTypeAliasDeclaration(d)
|
|
3802
|
+
? reachesConditional(d.type)
|
|
3803
|
+
: ts.isInterfaceDeclaration(d)
|
|
3804
|
+
? d.members.nodes.some(reachesConditional)
|
|
3805
|
+
: false);
|
|
3806
|
+
reaches.set(target, result);
|
|
3807
|
+
return result;
|
|
3808
|
+
};
|
|
3809
|
+
const reachesConditional = (node) => {
|
|
3810
|
+
if (ts.isConditionalTypeNode(node))
|
|
3811
|
+
return true;
|
|
3812
|
+
if (ts.isTypeReferenceNode(node)) {
|
|
3813
|
+
const name = ts.isIdentifier(node.typeName) ? node.typeName : node.typeName.right;
|
|
3814
|
+
const symbol = lowerer.checker.getSymbolAtLocation(name);
|
|
3815
|
+
if (symbol && !params.has(symbol) && declarationsReach(symbol))
|
|
3816
|
+
return true;
|
|
3817
|
+
}
|
|
3818
|
+
let found = false;
|
|
3819
|
+
ts.forEachChild(node, (child) => {
|
|
3820
|
+
if (!found && reachesConditional(child))
|
|
3821
|
+
found = true;
|
|
3822
|
+
});
|
|
3823
|
+
return found;
|
|
3824
|
+
};
|
|
3825
|
+
const collect = (node) => {
|
|
3826
|
+
if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName)) {
|
|
3827
|
+
const symbol = lowerer.checker.getSymbolAtLocation(node.typeName);
|
|
3828
|
+
if (symbol && params.has(symbol))
|
|
3829
|
+
found.add(symbol);
|
|
3830
|
+
}
|
|
3831
|
+
ts.forEachChild(node, collect);
|
|
3832
|
+
};
|
|
3833
|
+
const visit = (node) => {
|
|
3834
|
+
if (ts.isTypeNode(node) && reachesConditional(node)) {
|
|
3835
|
+
collect(node);
|
|
3836
|
+
return;
|
|
3837
|
+
}
|
|
3838
|
+
ts.forEachChild(node, visit);
|
|
3839
|
+
};
|
|
3840
|
+
for (const member of gci.decl.members.nodes)
|
|
3841
|
+
visit(member);
|
|
3842
|
+
return found;
|
|
3843
|
+
}
|
|
3684
3844
|
/** Runs a member-lowering thunk under an INSTANTIATION's type-parameter
|
|
3685
3845
|
* bindings (the generic-fn typeParamResolver mechanism) — the checker
|
|
3686
3846
|
* keeps reporting the unsubstituted `T`s inside the shared body AST.
|
|
@@ -3716,11 +3876,13 @@ function withInstanceBindings(lowerer, info, fn) {
|
|
|
3716
3876
|
}
|
|
3717
3877
|
}
|
|
3718
3878
|
const prevBindings = lowerer.typeParamBindings;
|
|
3879
|
+
const prevTsBindings = lowerer.typeParamTsBindings;
|
|
3719
3880
|
const prevContext = lowerer.instantiationContext;
|
|
3720
3881
|
const prevSuppress = lowerer.suppressStats;
|
|
3721
3882
|
const previousPath = lowerer.genericInstantiationPath;
|
|
3722
3883
|
lowerer.genericInstantiationPath = gi.path;
|
|
3723
3884
|
lowerer.typeParamBindings = gi.bindings;
|
|
3885
|
+
lowerer.typeParamTsBindings = gi.tsBindings;
|
|
3724
3886
|
lowerer.instantiationContext = `instantiating class '${gi.family.generic?.baseName ?? info.def.jsName ?? ""}' with ${gi.typeArgsText}`;
|
|
3725
3887
|
lowerer.suppressStats = prevSuppress || gi.ordinal > 0;
|
|
3726
3888
|
try {
|
|
@@ -3728,6 +3890,7 @@ function withInstanceBindings(lowerer, info, fn) {
|
|
|
3728
3890
|
}
|
|
3729
3891
|
finally {
|
|
3730
3892
|
lowerer.typeParamBindings = prevBindings;
|
|
3893
|
+
lowerer.typeParamTsBindings = prevTsBindings;
|
|
3731
3894
|
lowerer.instantiationContext = prevContext;
|
|
3732
3895
|
lowerer.suppressStats = prevSuppress;
|
|
3733
3896
|
lowerer.genericInstantiationPath = previousPath;
|
|
@@ -4455,6 +4618,13 @@ export function lowerStaticFieldRead(lowerer, expr) {
|
|
|
4455
4618
|
return null;
|
|
4456
4619
|
const loc = locOf(expr);
|
|
4457
4620
|
const found = findStaticOn(lowerer, info, expr.name.text);
|
|
4621
|
+
// A Date static read as a value through a class declared `extends Date`:
|
|
4622
|
+
// the statics lower only as calls.
|
|
4623
|
+
if (!found &&
|
|
4624
|
+
dateRootOf(info) &&
|
|
4625
|
+
["now", "parse", "UTC"].includes(expr.name.text) &&
|
|
4626
|
+
!(ts.isCallExpression(expr.parent) && expr.parent.expression === expr))
|
|
4627
|
+
lowerer.noLowering(`Date.${expr.name.text} read through a class that extends Date`, expr);
|
|
4458
4628
|
if (hasRuntimeStatics(info) && !found?.field)
|
|
4459
4629
|
return {
|
|
4460
4630
|
kind: "dynKeyGet",
|
|
@@ -4492,8 +4662,18 @@ export function lowerStaticFieldRead(lowerer, expr) {
|
|
|
4492
4662
|
}
|
|
4493
4663
|
// `C.name` — the JS-observable class name, a compile-time constant on
|
|
4494
4664
|
// the direct spelling (tsc rejects user statics named `name`, so the
|
|
4495
|
-
// chain above can never shadow it in TypeScript sources).
|
|
4665
|
+
// chain above can never shadow it in TypeScript sources). A class of an
|
|
4666
|
+
// import cycle reads it from its class object instead, whose reference
|
|
4667
|
+
// checks the class's initialization (checkCycleBindingAccesses).
|
|
4496
4668
|
if (expr.name.text === "name" && info.def.jsName !== undefined) {
|
|
4669
|
+
if (lowerer.classInitFlags.get(info.def.name)?.cycle === true)
|
|
4670
|
+
return {
|
|
4671
|
+
kind: "libCall",
|
|
4672
|
+
fn: "class.name",
|
|
4673
|
+
args: [classValueRef(lowerer, info, expr.expression)],
|
|
4674
|
+
type: STRING,
|
|
4675
|
+
loc,
|
|
4676
|
+
};
|
|
4497
4677
|
return { kind: "strLit", value: info.def.jsName, type: STRING, loc };
|
|
4498
4678
|
}
|
|
4499
4679
|
if (info.callableBase)
|
|
@@ -4648,9 +4828,10 @@ export function lowerClassExpressionInfo(lowerer, expr) {
|
|
|
4648
4828
|
expr.members.nodes.some((member) => decoratorNodesOf(member).length ||
|
|
4649
4829
|
(!isJsSourceFile(ts.getSourceFileOfNode(expr)) &&
|
|
4650
4830
|
(ts.isClassStaticBlockDeclaration(member) ||
|
|
4651
|
-
ts
|
|
4652
|
-
|
|
4653
|
-
|
|
4831
|
+
(!ts.isMethodDeclaration(member) &&
|
|
4832
|
+
ts
|
|
4833
|
+
.getModifiers(member)
|
|
4834
|
+
?.some((modifier) => modifier.kind === ts.SyntaxKind.StaticKeyword)))) ||
|
|
4654
4835
|
(ts.isMethodDeclaration(member) && member.typeParameters?.nodes.length)))) {
|
|
4655
4836
|
lowerer.unsupported("SC1090", expr, "function-local classes with statics, decorators, or generic members");
|
|
4656
4837
|
}
|
|
@@ -4661,7 +4842,7 @@ export function lowerClassExpressionInfo(lowerer, expr) {
|
|
|
4661
4842
|
!lowerer.computedClassBases.has(lowerer.classNamer(expr))) {
|
|
4662
4843
|
const heritage = expr.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
|
|
4663
4844
|
if (heritage &&
|
|
4664
|
-
(ts.isCallExpression(heritage) ||
|
|
4845
|
+
((ts.isCallExpression(heritage) && !builtinRequireBaseOf(lowerer, heritage)) ||
|
|
4665
4846
|
(ts.isIdentifier(heritage) &&
|
|
4666
4847
|
(lowerer.peekLocal(heritage) ?? lowerer.globalOf(heritage)) != null))) {
|
|
4667
4848
|
let value = lowerer.lowerExpr(heritage);
|
|
@@ -4893,9 +5074,49 @@ export function lowerClassExpression(lowerer, expr) {
|
|
|
4893
5074
|
loc,
|
|
4894
5075
|
});
|
|
4895
5076
|
}
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
|
|
5077
|
+
if (!info.localClass)
|
|
5078
|
+
return value;
|
|
5079
|
+
const classValue = initializeRuntimeStatics(lowerer, info, value.kind === "classRef" ? { ...value, captures: info.localClass.captureSources } : value);
|
|
5080
|
+
// The base resolves statically here, but Node still evaluates the
|
|
5081
|
+
// heritage expression each time the class definition runs, first.
|
|
5082
|
+
const heritage = heritageWithEffects(expr);
|
|
5083
|
+
if (heritage === undefined)
|
|
5084
|
+
return classValue;
|
|
5085
|
+
return {
|
|
5086
|
+
kind: "seqExpr",
|
|
5087
|
+
stmts: [lowerer.lowerExprStatement(heritage)],
|
|
5088
|
+
result: classValue,
|
|
5089
|
+
type: classValue.type,
|
|
5090
|
+
loc: classValue.loc,
|
|
5091
|
+
};
|
|
5092
|
+
}
|
|
5093
|
+
/** The `extends` expression of `decl` when evaluating it can have effects
|
|
5094
|
+
* (a call, construction, assignment, update, delete, await or yield
|
|
5095
|
+
* outside nested functions). */
|
|
5096
|
+
function heritageWithEffects(decl) {
|
|
5097
|
+
const heritage = decl.heritageClauses?.nodes.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword)?.types?.nodes[0]?.expression;
|
|
5098
|
+
if (heritage === undefined)
|
|
5099
|
+
return undefined;
|
|
5100
|
+
const effects = (node) => {
|
|
5101
|
+
if (ts.isFunctionLike(node) || ts.isClassDeclaration(node) || ts.isClassExpression(node))
|
|
5102
|
+
return false;
|
|
5103
|
+
if (ts.isCallExpression(node) ||
|
|
5104
|
+
ts.isNewExpression(node) ||
|
|
5105
|
+
ts.isTaggedTemplateExpression(node) ||
|
|
5106
|
+
ts.isDeleteExpression(node) ||
|
|
5107
|
+
ts.isAwaitExpression(node) ||
|
|
5108
|
+
ts.isYieldExpression(node) ||
|
|
5109
|
+
(ts.isPrefixUnaryExpression(node) &&
|
|
5110
|
+
(node.operator === ts.SyntaxKind.PlusPlusToken ||
|
|
5111
|
+
node.operator === ts.SyntaxKind.MinusMinusToken)) ||
|
|
5112
|
+
ts.isPostfixUnaryExpression(node) ||
|
|
5113
|
+
(ts.isBinaryExpression(node) &&
|
|
5114
|
+
node.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
|
|
5115
|
+
node.operatorToken.kind <= ts.SyntaxKind.LastAssignment))
|
|
5116
|
+
return true;
|
|
5117
|
+
return ts.forEachChild(node, (child) => effects(child) || undefined) ?? false;
|
|
5118
|
+
};
|
|
5119
|
+
return effects(heritage) ? heritage : undefined;
|
|
4899
5120
|
}
|
|
4900
5121
|
/** The EXACT class a receiver expression is statically known to BE (not
|
|
4901
5122
|
* merely be typed by): the class name itself, or a `const` binding
|
|
@@ -5156,6 +5377,13 @@ function staticCallOn(lowerer, call, access, info, throughValue) {
|
|
|
5156
5377
|
const runtimeStatic = directRuntimeStaticCall(lowerer, call, access, info, throughValue);
|
|
5157
5378
|
if (runtimeStatic)
|
|
5158
5379
|
return runtimeStatic;
|
|
5380
|
+
// Date's statics through a class declared `extends Date`
|
|
5381
|
+
// (`Moment.UTC(...)`), which inherits them.
|
|
5382
|
+
if (dateRootOf(info) && !findStaticOn(lowerer, info, access.name.text)) {
|
|
5383
|
+
const date = lowerDateStaticCall(lowerer, call, access.name.text);
|
|
5384
|
+
if (date)
|
|
5385
|
+
return date;
|
|
5386
|
+
}
|
|
5159
5387
|
if ((hasRuntimeStatics(info) && !findStaticOn(lowerer, info, access.name.text)?.field) ||
|
|
5160
5388
|
(info.callableBase &&
|
|
5161
5389
|
!findStaticOn(lowerer, info, access.name.text) &&
|
|
@@ -5568,14 +5796,21 @@ function thunkAsyncSlot(overridden, mName) {
|
|
|
5568
5796
|
if (overridden.sig.async !== true)
|
|
5569
5797
|
return;
|
|
5570
5798
|
const declarer = overridden.declarer;
|
|
5799
|
+
// The slot answers the body's promise: an untyped async method's `dyn`
|
|
5800
|
+
// result is the promise's payload, so the slot's ABI is that promise. An
|
|
5801
|
+
// async generator method's slot keeps its generator object.
|
|
5802
|
+
const ret = overridden.sig.gen || overridden.sig.ret.kind === "promise"
|
|
5803
|
+
? overridden.sig.ret
|
|
5804
|
+
: { kind: "promise", inner: overridden.sig.ret };
|
|
5571
5805
|
declarer.returnAdapters ??= new Map();
|
|
5572
5806
|
if (!declarer.returnAdapters.has(mName)) {
|
|
5573
5807
|
declarer.returnAdapters.set(mName, {
|
|
5574
5808
|
params: [...overridden.sig.params],
|
|
5575
|
-
ret
|
|
5809
|
+
ret,
|
|
5576
5810
|
async: true,
|
|
5577
5811
|
});
|
|
5578
5812
|
}
|
|
5813
|
+
overridden.sig.ret = ret;
|
|
5579
5814
|
delete overridden.sig.async;
|
|
5580
5815
|
}
|
|
5581
5816
|
function overrideReturnAbi(lowerer, declared, inherited, className, base) {
|
|
@@ -6242,7 +6477,7 @@ function lowerClassCtorInner(lowerer, info) {
|
|
|
6242
6477
|
lowerer.ctx.argumentsLocal = local;
|
|
6243
6478
|
}
|
|
6244
6479
|
body.push(...declared.prologue);
|
|
6245
|
-
if (!ctorBase && !info.callableBase) {
|
|
6480
|
+
if (!ctorBase && !info.callableBase && !info.extendsDate) {
|
|
6246
6481
|
// Node's base-class order: field initializers run at the start
|
|
6247
6482
|
// of construction, the parameter-property assignments open the
|
|
6248
6483
|
// constructor body (probed — a field initializer reading a
|
|
@@ -6257,7 +6492,7 @@ function lowerClassCtorInner(lowerer, info) {
|
|
|
6257
6492
|
}
|
|
6258
6493
|
}
|
|
6259
6494
|
else {
|
|
6260
|
-
if (ctorBase || info.callableBase) {
|
|
6495
|
+
if (ctorBase || info.callableBase || info.extendsDate) {
|
|
6261
6496
|
// Synthetic forwarding params (the inherited ABI signature).
|
|
6262
6497
|
// Nothing references them by symbol — only the super call below,
|
|
6263
6498
|
// which forwards the already-completed values UNCHANGED (defaults
|
|
@@ -6440,7 +6675,7 @@ export function classIteratorDrainCall(lowerer, src, loc, elemT) {
|
|
|
6440
6675
|
const key = `${cit.className}:${typeKey(outElem)}`;
|
|
6441
6676
|
let name = lowerer.iterDrainHelpers.get(key);
|
|
6442
6677
|
if (!name) {
|
|
6443
|
-
name =
|
|
6678
|
+
name = keyedHelperName(lowerer, "%iter.drain", key);
|
|
6444
6679
|
lowerer.iterDrainHelpers.set(key, name);
|
|
6445
6680
|
const recvT = { kind: "object", className: cit.className };
|
|
6446
6681
|
const recvRef = { kind: "varRef", localId: "r.0", type: recvT, loc };
|
|
@@ -6548,7 +6783,7 @@ export function classIteratorRestDrainCall(lowerer, cit, itVal, loc) {
|
|
|
6548
6783
|
const key = `it:${cit.iterT.className}`;
|
|
6549
6784
|
let name = lowerer.iterDrainHelpers.get(key);
|
|
6550
6785
|
if (!name) {
|
|
6551
|
-
name =
|
|
6786
|
+
name = keyedHelperName(lowerer, "%iter.drain", key);
|
|
6552
6787
|
lowerer.iterDrainHelpers.set(key, name);
|
|
6553
6788
|
const itRef = { kind: "varRef", localId: "it.0", type: cit.iterT, loc };
|
|
6554
6789
|
const outRef = { kind: "varRef", localId: "out.0", type: outT, loc };
|
|
@@ -7043,12 +7278,39 @@ function superCallInStatementPosition(call) {
|
|
|
7043
7278
|
const parent = node.parent;
|
|
7044
7279
|
if (ts.isExpressionStatement(parent))
|
|
7045
7280
|
return true;
|
|
7281
|
+
if (ts.isIfStatement(parent)) {
|
|
7282
|
+
const lead = superConditionLead(parent.expression);
|
|
7283
|
+
return lead !== null && call.pos >= lead.left.pos && call.end <= lead.left.end;
|
|
7284
|
+
}
|
|
7046
7285
|
const comma = ts.isBinaryExpression(parent) && parent.operatorToken.kind === ts.SyntaxKind.CommaToken;
|
|
7047
7286
|
if (!comma && !ts.isParenthesizedExpression(parent))
|
|
7048
7287
|
return false;
|
|
7049
7288
|
node = parent;
|
|
7050
7289
|
}
|
|
7051
7290
|
}
|
|
7291
|
+
/** The comma chain of an `if` condition whose leading operands hold a
|
|
7292
|
+
* super() call (`if (super(), r === 0) throw ...`, as minifiers join a
|
|
7293
|
+
* super statement with the next test), or null. The if statement runs the
|
|
7294
|
+
* chain's left operand as a statement first and tests its right operand,
|
|
7295
|
+
* which is what the comma evaluates. */
|
|
7296
|
+
export function superConditionLead(cond) {
|
|
7297
|
+
let expr = cond;
|
|
7298
|
+
while (ts.isParenthesizedExpression(expr))
|
|
7299
|
+
expr = expr.expression;
|
|
7300
|
+
if (!ts.isBinaryExpression(expr) || expr.operatorToken.kind !== ts.SyntaxKind.CommaToken)
|
|
7301
|
+
return null;
|
|
7302
|
+
const holdsSuperCall = (operand) => {
|
|
7303
|
+
let e = operand;
|
|
7304
|
+
while (ts.isParenthesizedExpression(e))
|
|
7305
|
+
e = e.expression;
|
|
7306
|
+
if (ts.isCallExpression(e))
|
|
7307
|
+
return e.expression.kind === ts.SyntaxKind.SuperKeyword;
|
|
7308
|
+
return (ts.isBinaryExpression(e) &&
|
|
7309
|
+
e.operatorToken.kind === ts.SyntaxKind.CommaToken &&
|
|
7310
|
+
(holdsSuperCall(e.left) || holdsSuperCall(e.right)));
|
|
7311
|
+
};
|
|
7312
|
+
return holdsSuperCall(expr.left) ? expr : null;
|
|
7313
|
+
}
|
|
7052
7314
|
/** Super statements initialize the base and then the derived fields on
|
|
7053
7315
|
* whichever control-flow path executes. Repeated calls are explicitly
|
|
7054
7316
|
* refused until native layouts can allocate a second receiver. */
|
|
@@ -7080,9 +7342,11 @@ export function lowerDerivedCtorBody(lowerer, info, thisLocal, forward) {
|
|
|
7080
7342
|
loc,
|
|
7081
7343
|
},
|
|
7082
7344
|
];
|
|
7083
|
-
if (info.callableBase) {
|
|
7345
|
+
if (info.callableBase || info.extendsDate) {
|
|
7084
7346
|
if (superCall.arguments.nodes.some(ts.isSpreadElement))
|
|
7085
|
-
lowerer.unsupported("SC1090", superCall,
|
|
7347
|
+
lowerer.unsupported("SC1090", superCall, info.extendsDate
|
|
7348
|
+
? "spreading super arguments into the Date constructor"
|
|
7349
|
+
: "spreading explicit super arguments into an ordinary constructor");
|
|
7086
7350
|
const pack = {
|
|
7087
7351
|
kind: "dynArrLit",
|
|
7088
7352
|
elems: superCall.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
@@ -7225,6 +7489,8 @@ export function superCallStmt(lowerer, info, thisLocal, args, loc) {
|
|
|
7225
7489
|
type: { kind: "object", className: info.def.name },
|
|
7226
7490
|
loc,
|
|
7227
7491
|
};
|
|
7492
|
+
if (info.extendsDate)
|
|
7493
|
+
return dateSuperCall(thisRef, info, args[0], loc);
|
|
7228
7494
|
if (info.callableBase)
|
|
7229
7495
|
return {
|
|
7230
7496
|
kind: "exprStmt",
|
|
@@ -7327,6 +7593,22 @@ export function superCallStmt(lowerer, info, thisLocal, args, loc) {
|
|
|
7327
7593
|
* super dispatch is static in JS too, never through the dynamic class. */
|
|
7328
7594
|
export function lowerSuperMethodCall(lowerer, call, access) {
|
|
7329
7595
|
const cls = lowerer.currentClass;
|
|
7596
|
+
// `super.toISOString()` in a class declared `extends Date`.
|
|
7597
|
+
if (cls?.extendsDate && !cls.base) {
|
|
7598
|
+
const thisL = lowerer.resolveThis();
|
|
7599
|
+
if (!thisL)
|
|
7600
|
+
lowerer.unsupported("SC1080", access);
|
|
7601
|
+
const thisRef = {
|
|
7602
|
+
kind: "varRef",
|
|
7603
|
+
localId: thisL.id,
|
|
7604
|
+
type: thisL.type,
|
|
7605
|
+
loc: locOf(call),
|
|
7606
|
+
};
|
|
7607
|
+
const date = lowerDateSuperMethodCall(lowerer, call, access.name.text, cls, thisRef);
|
|
7608
|
+
if (date)
|
|
7609
|
+
return date;
|
|
7610
|
+
lowerer.unsupported("SC1090", access, `'super.${access.name.text}' (Date.prototype does not declare it)`);
|
|
7611
|
+
}
|
|
7330
7612
|
if (!cls?.base) {
|
|
7331
7613
|
// tsc rejects super outside derived-class bodies first; defensive.
|
|
7332
7614
|
lowerer.unsupported("SC1090", access, "'super' outside a derived class");
|
|
@@ -7374,6 +7656,18 @@ export function lowerSuperMethodCall(lowerer, call, access) {
|
|
|
7374
7656
|
// `super.dispatchEvent(e)`, `super.preventDefault()`: the inherited
|
|
7375
7657
|
// runtime members over this method's own `this` (subclasses cannot
|
|
7376
7658
|
// override them, so the static answer is the runtime's).
|
|
7659
|
+
if (dateRootOf(cls.base) && isDatePrototypeMethod(access.name.text)) {
|
|
7660
|
+
const thisL = lowerer.resolveThis();
|
|
7661
|
+
if (!thisL)
|
|
7662
|
+
lowerer.unsupported("SC1080", access);
|
|
7663
|
+
const thisRef = {
|
|
7664
|
+
kind: "varRef",
|
|
7665
|
+
localId: thisL.id,
|
|
7666
|
+
type: thisL.type,
|
|
7667
|
+
loc: locOf(call),
|
|
7668
|
+
};
|
|
7669
|
+
return lowerDateSuperMethodCall(lowerer, call, access.name.text, cls.base, thisRef);
|
|
7670
|
+
}
|
|
7377
7671
|
if (eventTargetApiMethod(cls.base, access.name.text)) {
|
|
7378
7672
|
const thisL = lowerer.resolveThis();
|
|
7379
7673
|
if (!thisL)
|
|
@@ -7738,6 +8032,12 @@ function isCollectionOrErrorClass(ref) {
|
|
|
7738
8032
|
}
|
|
7739
8033
|
export function lowerNew(lowerer, expr) {
|
|
7740
8034
|
const loc = locOf(expr);
|
|
8035
|
+
// A dependency's deprecated `new Buffer(...)` fallback (containers/bytes.ts).
|
|
8036
|
+
{
|
|
8037
|
+
const buffer = lowerNodeModulesBufferConstruct(lowerer, expr);
|
|
8038
|
+
if (buffer)
|
|
8039
|
+
return buffer;
|
|
8040
|
+
}
|
|
7741
8041
|
// new Function(...): Node's EvalError under
|
|
7742
8042
|
// --disallow-code-generation-from-strings (code-generation.ts).
|
|
7743
8043
|
if (codeGenerationCalleeOf(lowerer, expr.expression) === "Function")
|
|
@@ -8005,6 +8305,13 @@ export function lowerNew(lowerer, expr) {
|
|
|
8005
8305
|
if (httpServer)
|
|
8006
8306
|
return httpServer;
|
|
8007
8307
|
}
|
|
8308
|
+
// `new tls.TLSSocket(socket, options)` — the server-mode wrap of an open
|
|
8309
|
+
// socket (lower-server).
|
|
8310
|
+
{
|
|
8311
|
+
const tlsSocket = lowerTlsSocketNew(lowerer, expr);
|
|
8312
|
+
if (tlsSocket)
|
|
8313
|
+
return tlsSocket;
|
|
8314
|
+
}
|
|
8008
8315
|
// `new http.Agent(opts?)` / `new https.Agent(opts?)` — the Agent
|
|
8009
8316
|
// handle (lower-server): getName/destroy/counters through the dyn
|
|
8010
8317
|
// handle ops, requests thread it via the agent option.
|
|
@@ -8730,7 +9037,7 @@ export function lowerNew(lowerer, expr) {
|
|
|
8730
9037
|
const key = `x509.record:${isBytes ? "bytes" : "str"}`;
|
|
8731
9038
|
let helper = lowerer.valueHelpers.get(key);
|
|
8732
9039
|
if (!helper) {
|
|
8733
|
-
helper =
|
|
9040
|
+
helper = keyedHelperName(lowerer, "%x509.record", key);
|
|
8734
9041
|
lowerer.valueHelpers.set(key, helper);
|
|
8735
9042
|
const dataT = data.type;
|
|
8736
9043
|
const dRef = { kind: "varRef", localId: "d.0", type: dataT, loc };
|