@scriptc/compiler 0.3.3 → 0.3.5
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 +844 -36
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/array-search.js +1 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +11 -1
- package/dist/backend/llvm/call-lifetimes.js +30 -3
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +31 -1
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -0
- package/dist/backend/llvm/common.js +7 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -21
- package/dist/backend/llvm/constant-callbacks.js +36 -219
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +22 -0
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +9 -0
- package/dist/backend/llvm/dense-array-access.js +29 -3
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +46 -1
- package/dist/backend/llvm/dyn.js +218 -33
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +87 -1
- package/dist/backend/llvm/emitter.js +568 -61
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +17 -7
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +159 -64
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +11 -0
- package/dist/backend/llvm/expr-callbacks.js +53 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +137 -3
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +63 -29
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +9 -1
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +4 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/integer-clones.d.ts +103 -0
- package/dist/backend/llvm/integer-clones.js +1336 -0
- package/dist/backend/llvm/integer-clones.js.map +1 -0
- package/dist/backend/llvm/integer-clones.test.d.ts +1 -0
- package/dist/backend/llvm/integer-clones.test.js +219 -0
- package/dist/backend/llvm/integer-clones.test.js.map +1 -0
- package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +24 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +96 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +51 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +16 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +24 -0
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +114 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +87 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +6 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +1 -1
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +28 -0
- package/dist/backend/llvm/map-entry-fusion.js +233 -0
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/map-entry-fusion.test.d.ts +1 -0
- package/dist/backend/llvm/map-entry-fusion.test.js +183 -0
- package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +6 -0
- package/dist/backend/llvm/map-number-lookup.js +23 -1
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +60 -5
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +11 -0
- package/dist/backend/llvm/map-read-lifetimes.js +92 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +131 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +21 -0
- package/dist/backend/llvm/publish.js +101 -11
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.d.ts +1 -0
- package/dist/backend/llvm/publish.test.js +94 -0
- package/dist/backend/llvm/publish.test.js.map +1 -0
- package/dist/backend/llvm/record-results.js +76 -2
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-sources.d.ts +7 -0
- package/dist/backend/llvm/record-sources.js +14 -0
- package/dist/backend/llvm/record-sources.js.map +1 -0
- package/dist/backend/llvm/reference-writes.js +5 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +4 -1
- package/dist/backend/llvm/regions.js +12 -3
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +9 -3
- package/dist/backend/llvm/shapes.js +18 -14
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +5 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +75 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +17 -0
- package/dist/backend/llvm/walkers.js +123 -0
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +4 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -1
- package/dist/backend/native/executable.js +16 -6
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.js +3 -1
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +7 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +3 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/callable-aliases.js +54 -8
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +8 -6
- package/dist/frontend/lowering/builtins/child-process-async.js +45 -29
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +175 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +111 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +2 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +5 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +60 -0
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.d.ts +26 -0
- package/dist/frontend/lowering/builtins/fs-streams.js +131 -0
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +5 -1
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +6 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +216 -20
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +33 -12
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.js +20 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +700 -61
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +11 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +75 -6
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +3 -0
- package/dist/frontend/lowering/lower-classes.js +43 -0
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +132 -67
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -1
- package/dist/frontend/lowering/lower-event-emitter.js +78 -0
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
- package/dist/frontend/lowering/lower-exprs.js +144 -58
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +138 -39
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.js +7 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +4 -0
- package/dist/frontend/lowering/lower-server.js +448 -30
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +35 -8
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +794 -27
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +25 -1
- package/dist/frontend/lowering/lowerer.js +74 -9
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/record-sources.d.ts +15 -0
- package/dist/frontend/lowering/record-sources.js +46 -0
- package/dist/frontend/lowering/record-sources.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +4 -0
- package/dist/frontend/lowering/surfaces.js +94 -16
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.js.map +1 -0
- package/dist/frontend/pipeline.js +5 -3
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.js +6 -1
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +14 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/tsc-codes.js +1 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +8 -0
- package/dist/frontend/type-mapper.js +155 -9
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +10 -0
- package/dist/ir/analysis.js +35 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +69 -1
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +72 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +238 -15
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/capture-values.d.ts +107 -0
- package/dist/ir/capture-values.js +850 -0
- package/dist/ir/capture-values.js.map +1 -0
- package/dist/ir/capture-values.test.d.ts +1 -0
- package/dist/ir/capture-values.test.js +268 -0
- package/dist/ir/capture-values.test.js.map +1 -0
- package/dist/ir/field-values.d.ts +16 -0
- package/dist/ir/field-values.js +128 -0
- package/dist/ir/field-values.js.map +1 -0
- package/dist/ir/field-values.test.d.ts +1 -0
- package/dist/ir/field-values.test.js +160 -0
- package/dist/ir/field-values.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +4 -1
- package/dist/ir/final-fields.js +11 -3
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.test.js +1 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +16 -0
- package/dist/ir/init-only-globals.js +121 -0
- package/dist/ir/init-only-globals.js.map +1 -0
- package/dist/ir/init-only-globals.test.d.ts +1 -0
- package/dist/ir/init-only-globals.test.js +115 -0
- package/dist/ir/init-only-globals.test.js.map +1 -0
- package/dist/ir/initializer-bindings.d.ts +18 -1
- package/dist/ir/initializer-bindings.js +91 -1
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/initializer-bindings.test.js +57 -2
- package/dist/ir/initializer-bindings.test.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +22 -0
- package/dist/ir/int32-slots.js +376 -13
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +91 -8
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +19 -1
- package/dist/ir/integer-loop-facts.js +155 -7
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +8 -5
- package/dist/ir/integer-ranges.js +147 -55
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +225 -7
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +29 -2
- package/dist/ir/ir.js +17 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/property-bags.d.ts +14 -0
- package/dist/ir/property-bags.js +121 -0
- package/dist/ir/property-bags.js.map +1 -0
- package/dist/ir/receiver-readers.d.ts +21 -0
- package/dist/ir/receiver-readers.js +217 -0
- package/dist/ir/receiver-readers.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +34 -2
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/validate.js +221 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +21 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/int-infer.js +3 -0
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +1 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +896 -49
|
@@ -9,7 +9,9 @@ import { threadsImportOf } from "../threads-import.js";
|
|
|
9
9
|
import { adaptZeroArgTimerCallback, lowerTimersMemberCall, TIMER_MODULE_MEMBERS, } from "./lower-timers.js";
|
|
10
10
|
import { objectEnumerationReceiver } from "./object-enumeration-receiver.js";
|
|
11
11
|
import { InternalCompilerError } from "../../errors.js";
|
|
12
|
+
import { isFsStreamMember, lowerFsStreamMethodCall } from "./builtins/fs-streams.js";
|
|
12
13
|
import * as ts from "../ts7/adapter.js";
|
|
14
|
+
import { isZlibStreamMember, lowerZlibStreamMethodCall } from "./builtins/compression.js";
|
|
13
15
|
import { lowerGenMethodCall } from "./lower-generators.js";
|
|
14
16
|
import { lowerClassSymbolMethodCall } from "./symbol-methods.js";
|
|
15
17
|
import { errorToStringCall } from "./error-methods.js";
|
|
@@ -17,6 +19,7 @@ import { lowerClassPrototypeAssign, lowerClassPrototypeDescriptors } from "./cla
|
|
|
17
19
|
import { BYTES_ELEMENT_NAME, BIGINT_T, BOOL, CAUGHT, DYN, F64, NULL_T, STRING, SYMBOL_T, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, canDynCheckTo, funcOf, isDynTypedRefType, isUnitType, shapeHasAccessorSlots, typeEquals, } from "../../ir/ir.js";
|
|
18
20
|
import { lowerProtocolMethodCall } from "./class-protocol-dispatch.js";
|
|
19
21
|
import { isJsSourceFile, locOf, requireSpecOf } from "../program.js";
|
|
22
|
+
import { lowerAssertInstanceCall } from "./assert-instances.js";
|
|
20
23
|
import { isGenericCallableMemberType, typeKey } from "../type-mapper.js";
|
|
21
24
|
import { dynFallbackType, jsFuncNameOf, newFnCtx, staticImportNamespaceType } from "./lowerer.js";
|
|
22
25
|
import { NARROW_FIRST, STRING_INDEX_METHODS, STR_METHODS, UTIL_TYPES_KEYS, stdlibGlobalNameOf, } from "./surfaces.js";
|
|
@@ -33,10 +36,11 @@ import { lowerRegexMethodCall, lowerStringIndexCall, lowerStringMethodCall, lowe
|
|
|
33
36
|
import { createRequireSpecOf } from "./builtins/module-bindings.js";
|
|
34
37
|
import { lowerChildStreamMethodCall, lowerChildWriterMethodCall, } from "./builtins/child-process-methods.js";
|
|
35
38
|
import { lowerCreateRequireCall, lowerImportMetaResolveCall, lowerRequireResolveCall, } from "./builtins/module-resolution.js";
|
|
36
|
-
import { lowerCryptoHashMethodCall } from "./builtins/crypto.js";
|
|
39
|
+
import { lowerCipherMethodCall, lowerCryptoHashMethodCall } from "./builtins/crypto.js";
|
|
37
40
|
import { lowerDirentMethodCall, lowerFileHandleMethodCall, lowerDirMethodCall, lowerWatcherMethodCall, } from "./builtins/filesystem.js";
|
|
38
41
|
import { fencePerfEntryKeyWalk, isPerfEntryType, lowerPerfHooksCall, perfEntryTag, } from "./builtins/performance.js";
|
|
39
42
|
import { lowerProcStreamMethodCall } from "./builtins/process.js";
|
|
43
|
+
import { recordMayKeepSource, throughRecordSource } from "./record-sources.js";
|
|
40
44
|
import { lowerReflectCall } from "./builtins/reflection.js";
|
|
41
45
|
import { lowerAbsenceProbe, lowerOptionalNumber, lowerPromiseAllTupleCall, lowerPromiseRejectCall, lowerToNumberArgument, stringWrapperToString, symbolFieldInfo, templateRawTextOf, } from "./lower-exprs.js";
|
|
42
46
|
import { isSafeToDiscard } from "./expressions/evaluation-safety.js";
|
|
@@ -48,7 +52,7 @@ import { classCallbackCall, isClassCallback } from "./class-callbacks.js";
|
|
|
48
52
|
import { emitterRooted, lowerEmitterMethodCall } from "./lower-event-emitter.js";
|
|
49
53
|
import { eventTargetApiMethod, lowerEventTargetMethodCall } from "./lower-event-target.js";
|
|
50
54
|
import { lowerConsoleInstanceCall, lowerConsoleMethodCall, lowerConsoleOutput, } from "./lower-console.js";
|
|
51
|
-
import { STREAM_API_MEMBERS, lowerStreamMethodCall, lowerStreamStaticCall, streamSidesOf, } from "./lower-stream.js";
|
|
55
|
+
import { STREAM_API_MEMBERS, STREAM_OPERATORS, lowerStreamMethodCall, lowerStreamStaticCall, streamSidesOf, } from "./lower-stream.js";
|
|
52
56
|
import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, ambientUndefinedFnSymbolOf, contextualUndefReadType, fenceEarlyAliasUse, fenceEarlyNsMemberRef, nsMemberIdentOf, nsUndefRead, } from "./lower-namespaces.js";
|
|
53
57
|
import { expandoMemberRead } from "./lower-expando.js";
|
|
54
58
|
import { fenceNodeModuleMutationCall, lowerRequireCacheKeys } from "./lower-node-module.js";
|
|
@@ -62,6 +66,7 @@ import { spreadNeedsRuntimeArity, completeFuncValueArgs, lowerSpreadArgsCall, co
|
|
|
62
66
|
import { isThisParameter } from "./call-signatures.js";
|
|
63
67
|
import { checkedArmExtraction } from "./coercions/unions.js";
|
|
64
68
|
import { requireObjLitGenericReceiver, objLitGenericFnNodeOf, objLitGenericFnInfoOf, genericCallInstance, } from "./generic-functions.js";
|
|
69
|
+
const ZLIB_STREAM_METHODS = new Set(["flush", "params", "close", "reset"]);
|
|
65
70
|
export function lowerCall(lowerer, expr) {
|
|
66
71
|
const loc = locOf(expr);
|
|
67
72
|
// Object's checker return type is `any`. Claim known object inputs
|
|
@@ -350,6 +355,29 @@ export function lowerCall(lowerer, expr) {
|
|
|
350
355
|
if (tr &&
|
|
351
356
|
ts.isArrayLiteralExpression(tr.initializer) &&
|
|
352
357
|
tr.initializer.elements.length > 0) {
|
|
358
|
+
// An ArrayBuffer first member may be a Buffer pool slab, which
|
|
359
|
+
// Node reports as untransferable.
|
|
360
|
+
const first = tr.initializer.elements[0];
|
|
361
|
+
const firstType = ts.isSpreadElement(first) ? undefined : lowerer.typeOf(first);
|
|
362
|
+
const parts = !firstType
|
|
363
|
+
? []
|
|
364
|
+
: firstType.isUnionType()
|
|
365
|
+
? ts.constituentTypes(firstType)
|
|
366
|
+
: [firstType];
|
|
367
|
+
const isStorage = parts.length > 0 &&
|
|
368
|
+
parts.every((part) => {
|
|
369
|
+
const name = part.getSymbol()?.name;
|
|
370
|
+
return name === "ArrayBuffer" || name === "SharedArrayBuffer";
|
|
371
|
+
});
|
|
372
|
+
if (isStorage) {
|
|
373
|
+
return {
|
|
374
|
+
kind: "libCall",
|
|
375
|
+
fn: "dyn.cloneTransferFailWith",
|
|
376
|
+
args: [toDynArg(first)],
|
|
377
|
+
type: DYN,
|
|
378
|
+
loc,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
353
381
|
return { kind: "libCall", fn: "dyn.cloneTransferFail", args: [], type: DYN, loc };
|
|
354
382
|
}
|
|
355
383
|
}
|
|
@@ -539,6 +567,9 @@ export function lowerCall(lowerer, expr) {
|
|
|
539
567
|
if (projection?.kind === "promisified-exec-file") {
|
|
540
568
|
return lowerer.lowerExecFileAsyncCall(expr, loc);
|
|
541
569
|
}
|
|
570
|
+
if (projection?.kind === "promisified-exec") {
|
|
571
|
+
return lowerer.lowerExecFileAsyncCall(expr, loc, true);
|
|
572
|
+
}
|
|
542
573
|
if (projection?.kind === "promisified-builtin") {
|
|
543
574
|
return lowerBuiltinCall(lowerer, expr, { module: projection.module, member: projection.member }, loc);
|
|
544
575
|
}
|
|
@@ -963,6 +994,8 @@ export function lowerCall(lowerer, expr) {
|
|
|
963
994
|
// as named builtin imports — before anything below tries to lower
|
|
964
995
|
// the namespace object itself as a receiver.
|
|
965
996
|
lowerer.lowerNamespaceBuiltinCall(expr, expr.expression) ??
|
|
997
|
+
// Method calls on a static node:assert Assert instance.
|
|
998
|
+
lowerAssertInstanceCall(lowerer, expr, expr.expression, locOf(expr)) ??
|
|
966
999
|
// The node:perf_hooks spoke: performance.now() and its
|
|
967
1000
|
// .bind(performance) function value over the runtime's
|
|
968
1001
|
// process-start-anchored monotonic clock.
|
|
@@ -994,6 +1027,7 @@ export function lowerCall(lowerer, expr) {
|
|
|
994
1027
|
lowerer.lowerSearchParamsMethodCall(expr, expr.expression) ??
|
|
995
1028
|
lowerer.lowerStatsMethodCall(expr, expr.expression) ??
|
|
996
1029
|
lowerCryptoHashMethodCall(lowerer, expr, expr.expression) ??
|
|
1030
|
+
lowerCipherMethodCall(lowerer, expr, expr.expression) ??
|
|
997
1031
|
lowerFileHandleMethodCall(lowerer, expr, expr.expression) ??
|
|
998
1032
|
lowerDirMethodCall(lowerer, expr, expr.expression) ??
|
|
999
1033
|
lowerer.lowerChildMethodCall(expr, expr.expression) ??
|
|
@@ -6632,11 +6666,30 @@ function lowerObjectStaticCall(lowerer, call, access) {
|
|
|
6632
6666
|
const resultT = member === "entries" && consumesEntryPairs(call)
|
|
6633
6667
|
? runtimeOptionalEntriesType(lowerer, argIr, checkedT)
|
|
6634
6668
|
: checkedT;
|
|
6635
|
-
const
|
|
6669
|
+
const enumerated = objectEnumerationReceiver(lowerer, lowerer.lowerExpr(argNode), argIr, loc);
|
|
6670
|
+
// A record that kept undeclared properties of its checked source answers
|
|
6671
|
+
// from its live checked view (values checked into the static result).
|
|
6672
|
+
const recordT = argIr;
|
|
6673
|
+
const sourced = (staticAnswer) => recordMayKeepSource(lowerer, recordT)
|
|
6674
|
+
? throughRecordSource(lowerer, enumerated, loc, staticAnswer, (view, type) => member === "keys"
|
|
6675
|
+
? { kind: "libCall", fn: "dyn.objKeyStrings", args: [view], type, loc }
|
|
6676
|
+
: {
|
|
6677
|
+
kind: "dynCheck",
|
|
6678
|
+
value: {
|
|
6679
|
+
kind: "libCall",
|
|
6680
|
+
fn: member === "values" ? "dyn.objValues" : "dyn.objEntries",
|
|
6681
|
+
args: [view],
|
|
6682
|
+
type: DYN,
|
|
6683
|
+
loc,
|
|
6684
|
+
},
|
|
6685
|
+
type,
|
|
6686
|
+
loc,
|
|
6687
|
+
})
|
|
6688
|
+
: staticAnswer(enumerated);
|
|
6636
6689
|
if (member === "keys") {
|
|
6637
6690
|
// The keys walk is shared with for-in (which iterates exactly the
|
|
6638
6691
|
// keys Object.keys answers — one construction, one intern key).
|
|
6639
|
-
return recordKeysArrayCall(lowerer, receiver, argIr, shape, loc);
|
|
6692
|
+
return sourced((receiver) => recordKeysArrayCall(lowerer, receiver, argIr, shape, loc));
|
|
6640
6693
|
}
|
|
6641
6694
|
// The result-element type each field's value flows into: string for
|
|
6642
6695
|
// keys, the checker's value union for values, the [string, V] tuple's
|
|
@@ -6849,7 +6902,8 @@ function lowerObjectStaticCall(lowerer, call, access) {
|
|
|
6849
6902
|
lowerer.shapeOrderHelperFinalizers.push(finalize);
|
|
6850
6903
|
lowerer.liftedFns.push(fn);
|
|
6851
6904
|
}
|
|
6852
|
-
|
|
6905
|
+
const callee = helper;
|
|
6906
|
+
return sourced((receiver) => ({ kind: "call", callee, args: [receiver], type: resultT, loc }));
|
|
6853
6907
|
}
|
|
6854
6908
|
/** An entries array consumed pair by pair right where it is built: a
|
|
6855
6909
|
* for-of loop or an array callback method. These consumers bind each pair
|
|
@@ -7531,13 +7585,28 @@ export function lowerObjectMethodCall(lowerer, call, access) {
|
|
|
7531
7585
|
if (!info)
|
|
7532
7586
|
lowerer.flushDeferredClass(receiverIr.className);
|
|
7533
7587
|
const found = info ? lowerer.findMethodOn(info, access.name.text) : null;
|
|
7588
|
+
// The zlib stream members (flush/params/close/reset) are declared on
|
|
7589
|
+
// the zlib classes; their receivers are runtime Transform streams.
|
|
7590
|
+
if (info &&
|
|
7591
|
+
!found &&
|
|
7592
|
+
ZLIB_STREAM_METHODS.has(access.name.text) &&
|
|
7593
|
+
isZlibStreamMember(lowerer, access)) {
|
|
7594
|
+
return lowerZlibStreamMethodCall(lowerer, call, access);
|
|
7595
|
+
}
|
|
7596
|
+
// fs.ReadStream / fs.WriteStream's close(cb?): declared on the fs
|
|
7597
|
+
// classes; their receivers are runtime Readable / Writable streams.
|
|
7598
|
+
if (info && !found && isFsStreamMember(lowerer, access)) {
|
|
7599
|
+
const member = lowerFsStreamMethodCall(lowerer, call, access);
|
|
7600
|
+
if (member)
|
|
7601
|
+
return member;
|
|
7602
|
+
}
|
|
7534
7603
|
// The stream surface: API-named calls on stream-rooted receivers
|
|
7535
7604
|
// lower through the stream spoke (checked before the emitter surface
|
|
7536
7605
|
// — the two member sets are disjoint, but streams root at the emitter
|
|
7537
7606
|
// so both guards would pass an emitter-named call).
|
|
7538
7607
|
if (info &&
|
|
7539
7608
|
!found &&
|
|
7540
|
-
STREAM_API_MEMBERS.has(access.name.text) &&
|
|
7609
|
+
(STREAM_API_MEMBERS.has(access.name.text) || STREAM_OPERATORS.has(access.name.text)) &&
|
|
7541
7610
|
streamSidesOf(lowerer, info) !== null) {
|
|
7542
7611
|
const stream = lowerStreamMethodCall(lowerer, call, access, info);
|
|
7543
7612
|
if (stream)
|