@scriptc/compiler 0.3.2 → 0.3.3
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 +490 -39
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/llvm/alloc.js +24 -10
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +47 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +8 -0
- package/dist/backend/llvm/array-search.js +52 -0
- package/dist/backend/llvm/array-search.js.map +1 -0
- package/dist/backend/llvm/array-search.test.d.ts +1 -0
- package/dist/backend/llvm/array-search.test.js +72 -0
- package/dist/backend/llvm/array-search.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +8 -1
- package/dist/backend/llvm/call-lifetimes.js +33 -11
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +54 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +87 -36
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +1 -1
- package/dist/backend/llvm/common.js +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +1 -1
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +73 -9
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +65 -14
- package/dist/backend/llvm/emitter.js +297 -81
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +26 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +52 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +11 -0
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +16 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +8 -1
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +42 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +19 -8
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +28 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +8 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +35 -32
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/inline-unions.d.ts +48 -0
- package/dist/backend/llvm/inline-unions.js +134 -0
- package/dist/backend/llvm/inline-unions.js.map +1 -0
- package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
- package/dist/backend/llvm/inline-unions.test.js +124 -0
- package/dist/backend/llvm/inline-unions.test.js.map +1 -0
- package/dist/backend/llvm/integer-remainder.d.ts +28 -5
- package/dist/backend/llvm/integer-remainder.js +80 -9
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +163 -28
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +125 -7
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +9 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +2 -2
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +132 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +7 -3
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +6 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +2 -0
- package/dist/backend/llvm/local-union-storage.js +5 -0
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
- package/dist/backend/llvm/loop-array-borrows.js +93 -13
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -0
- package/dist/backend/llvm/map-number-lookup.js +66 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
- package/dist/backend/llvm/map-number-lookup.test.js +102 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +3 -1
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +8 -5
- package/dist/backend/llvm/record-results.js +20 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +13 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +14 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -0
- package/dist/backend/llvm/regions.js +12 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +56 -10
- package/dist/backend/llvm/shapes.js +178 -39
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +61 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.js +16 -4
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +11 -0
- package/dist/backend/llvm/walkers.js +106 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +9 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +2 -2
- package/dist/backend/native/executable.js +14 -3
- 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-toolchain.test.js +1 -1
- package/dist/backend/native-toolchain.test.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 +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.js +4 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +4 -1
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/compat/fetch-profile.js +4 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +2 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +1 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +6 -5
- package/dist/diagnostics/diagnostic.js +7 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/comptime-node.js +2 -2
- package/dist/frontend/comptime-node.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +8 -4
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
- package/dist/frontend/lowering/builtins/blob.js +167 -0
- package/dist/frontend/lowering/builtins/blob.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.js +3 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +415 -120
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
- package/dist/frontend/lowering/builtins/filesystem.js +97 -15
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
- package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
- package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
- package/dist/frontend/lowering/builtins/key-object.js +56 -0
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +44 -11
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
- package/dist/frontend/lowering/builtins/performance.js +340 -5
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +107 -14
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
- package/dist/frontend/lowering/builtins/properties.js +39 -11
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
- package/dist/frontend/lowering/builtins/readline.js +266 -90
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +8 -0
- package/dist/frontend/lowering/builtins/url.js +36 -0
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +1 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +20 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +105 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +3 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.js +6 -5
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
- package/dist/frontend/lowering/containers/array-methods.js +43 -2
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +38 -26
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
- package/dist/frontend/lowering/containers/for-of.js +5 -1
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +77 -12
- package/dist/frontend/lowering/crypto-tables.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +16 -12
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +2 -2
- package/dist/frontend/lowering/generic-functions.js +2 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
- package/dist/frontend/lowering/lower-array-sort.js +561 -191
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +2 -2
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +248 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +101 -9
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +8 -2
- package/dist/frontend/lowering/lower-classes.js +40 -9
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +4 -4
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
- package/dist/frontend/lowering/lower-event-target.js +362 -0
- package/dist/frontend/lowering/lower-event-target.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.js +2 -2
- package/dist/frontend/lowering/lower-exprs.js +112 -22
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +129 -11
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +7 -3
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
- package/dist/frontend/lowering/lower-namespaces.js +2 -2
- package/dist/frontend/lowering/lower-server.js +39 -14
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
- package/dist/frontend/lowering/lower-stdlib.js +10 -3
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
- package/dist/frontend/lowering/lower-stmts.js +46 -12
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +234 -22
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +23 -5
- package/dist/frontend/lowering/lowerer.js +245 -41
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +2 -2
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
- package/dist/frontend/lowering/runtime-optional-records.js +715 -0
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +7 -3
- package/dist/frontend/lowering/surfaces.js +273 -22
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +1 -1
- package/dist/frontend/npm-static-prune.js +1 -1
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/pipeline.js +1 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -3
- package/dist/frontend/program.js +19 -17
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.js +1 -1
- package/dist/frontend/ts7/adapter.js +1 -1
- package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
- package/dist/frontend/ts7/ast-bytes.js +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +1 -1
- package/dist/frontend/ts7/semantic-json.js +1 -1
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/world-check.js +1 -1
- package/dist/frontend/tsc-codes.js +2 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +16 -1
- package/dist/frontend/type-mapper.js +143 -18
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +12 -6
- package/dist/ir/analysis.js +26 -10
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -3
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +79 -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 +291 -38
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +1 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +64 -16
- package/dist/ir/ir.js +37 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.js +83 -6
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +1 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +100 -9
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +60 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.d.ts +1 -1
- package/dist/library/fence-eval.js +5 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +10 -4
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-profile.js +13 -13
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +1 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/library/sidecar.js +3 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/prepare.js +3 -2
- package/dist/native/prepare.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +379 -142
package/dist/ir/validate.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* an ICE that points at source is a gift to whoever debugs it.
|
|
5
5
|
*/
|
|
6
6
|
import { validByteNumberToken } from "./byte-numbers.js";
|
|
7
|
-
import { arrayOf, BYTES_ELEMENT_NAME, BOOL, BYTES_U8, bytesOf, canAdaptDynFuncTo, canDynCheckTo, canConvertToDyn, DYN, DYN_HANDLE_KINDS, F64, ffiClassType, ffiSourceParamTypes, isDynTypedRefType, isFfiCallbackParam, isFfiContextParam, isFfiReleaseParam, isJsonSafeType, isJsonStringifySafeType, isRefCounted, isSortValuesElement, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, REF_TRUTHY_KINDS, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, shapeHasAccessorSlots, STRING, typeEquals, typeKey, unionContainerArmsOk, VOID, } from "./ir.js";
|
|
7
|
+
import { arrayOf, BYTES_ELEMENT_NAME, BOOL, BYTES_U8, bytesOf, canAdaptDynFuncTo, canDynCheckTo, canConvertToDyn, DYN, DYN_HANDLE_KINDS, F64, ffiClassType, ffiSourceParamTypes, isDirentShape, isDynTypedRefType, isFfiCallbackParam, isFfiContextParam, isFfiReleaseParam, isJsonSafeType, isJsonStringifySafeType, isRefCounted, isSortValuesElement, isSupportedArrayElem, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, REF_TRUTHY_KINDS, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, shapeHasAccessorSlots, STRING, typeEquals, typeKey, unionContainerArmsOk, VOID, } from "./ir.js";
|
|
8
8
|
import { DYN_CLASS_PROPERTIES } from "./ir.js";
|
|
9
9
|
import { unionWideningTags } from "./analysis.js";
|
|
10
10
|
import { alwaysReturns } from "./control-flow.js";
|
|
@@ -1978,6 +1978,8 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
1978
1978
|
buffer: { argTypes: [], minArgs: 0, result: DYN },
|
|
1979
1979
|
setFromDyn: { argTypes: [DYN, F64], minArgs: 1, result: VOID },
|
|
1980
1980
|
copyWithin: { argTypes: [F64, F64, F64], minArgs: 3, result: bytesOf(recv.elem) },
|
|
1981
|
+
sortNumeric: { argTypes: [F64], minArgs: 1, result: BOOL },
|
|
1982
|
+
sortCompare: { argTypes: e.args[0] ? [e.args[0].type] : [], minArgs: 1, result: VOID },
|
|
1981
1983
|
equals: { argTypes: [BYTES_U8], minArgs: 1, result: BOOL },
|
|
1982
1984
|
compareBuf: { argTypes: [BYTES_U8, F64, F64, F64, F64], minArgs: 1, result: F64 },
|
|
1983
1985
|
// [needle, align, byteOffset?] — an OMITTED byteOffset is Node's
|
|
@@ -2066,6 +2068,19 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
2066
2068
|
if (want)
|
|
2067
2069
|
expectType(a, want, `bytesIntrinsic ${e.method} arg ${i}`);
|
|
2068
2070
|
});
|
|
2071
|
+
const order = e.args[0];
|
|
2072
|
+
if (e.method === "sortNumeric" &&
|
|
2073
|
+
(order?.kind !== "numLit" ||
|
|
2074
|
+
(order.value !== 0 && order.value !== 1 && order.value !== -1)))
|
|
2075
|
+
err("bytesIntrinsic sortNumeric order must be the literal 0, 1 or -1", e.loc);
|
|
2076
|
+
const comparator = e.args[0]?.type;
|
|
2077
|
+
if (e.method === "sortCompare" &&
|
|
2078
|
+
(e.args.length !== 1 ||
|
|
2079
|
+
comparator?.kind !== "func" ||
|
|
2080
|
+
comparator.params.length > 2 ||
|
|
2081
|
+
!comparator.params.every((param) => param.kind === "f64") ||
|
|
2082
|
+
comparator.ret.kind !== "f64"))
|
|
2083
|
+
err("bytesIntrinsic sortCompare comparator must be (number, number) => number", e.loc);
|
|
2069
2084
|
if (!typeEquals(e.type, sig.result)) {
|
|
2070
2085
|
err(`bytesIntrinsic ${e.method} result must be ${sig.result.kind}, got ${e.type.kind}`, e.loc);
|
|
2071
2086
|
}
|
|
@@ -2337,7 +2352,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
2337
2352
|
? { argTypes: [F64], result: key }
|
|
2338
2353
|
: e.method === "iterValue"
|
|
2339
2354
|
? { argTypes: [F64], result: value }
|
|
2340
|
-
: { argTypes: [], result: F64 }; // size / iterCount
|
|
2355
|
+
: { argTypes: [], result: F64 }; // size / iterCount / iterStart
|
|
2341
2356
|
if (e.args.length !== sig.argTypes.length) {
|
|
2342
2357
|
err(`mapIntrinsic ${e.method}: ${e.args.length} args, expected ${sig.argTypes.length}`, e.loc);
|
|
2343
2358
|
}
|
|
@@ -2388,7 +2403,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
2388
2403
|
? { argTypes: [F64], result: elem }
|
|
2389
2404
|
: e.method === "toArray"
|
|
2390
2405
|
? { argTypes: [], result: arrayOf(elem) }
|
|
2391
|
-
: { argTypes: [], result: F64 }; // size / iterCount
|
|
2406
|
+
: { argTypes: [], result: F64 }; // size / iterCount / iterStart
|
|
2392
2407
|
if (e.args.length !== sig.argTypes.length) {
|
|
2393
2408
|
err(`setIntrinsic ${e.method}: ${e.args.length} args, expected ${sig.argTypes.length}`, e.loc);
|
|
2394
2409
|
}
|
|
@@ -3619,11 +3634,15 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
3619
3634
|
e.fn === "stream.pipeline" ||
|
|
3620
3635
|
e.fn === "stream.pipelineDyn" ||
|
|
3621
3636
|
e.fn === "sp.pipeline" ||
|
|
3637
|
+
e.fn === "sp.pipelineOpts" ||
|
|
3638
|
+
e.fn === "sp.pipelineOptsSignal" ||
|
|
3622
3639
|
e.fn === "writable.write" ||
|
|
3623
3640
|
e.fn === "writable.writeStr" ||
|
|
3624
3641
|
e.fn === "writable.writeU" ||
|
|
3625
3642
|
e.fn === "writable.end" ||
|
|
3626
|
-
e.fn === "readable.unpipe"
|
|
3643
|
+
e.fn === "readable.unpipe" ||
|
|
3644
|
+
e.fn === "rl.create" ||
|
|
3645
|
+
e.fn === "rl.createSignal";
|
|
3627
3646
|
if (variadic ? e.args.length < sig.argTypes.length : e.args.length !== sig.argTypes.length) {
|
|
3628
3647
|
err(`libCall ${e.fn}: ${e.args.length} args, expected ${sig.argTypes.length}`, e.loc);
|
|
3629
3648
|
}
|
|
@@ -4297,10 +4316,14 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
4297
4316
|
}
|
|
4298
4317
|
return true;
|
|
4299
4318
|
}
|
|
4300
|
-
if (e.fn === "fs.readdirTypesSync" ||
|
|
4319
|
+
if (e.fn === "fs.readdirTypesSync" ||
|
|
4320
|
+
e.fn === "fsp.readdirTypes" ||
|
|
4321
|
+
e.fn === "fs.globTypesSync" ||
|
|
4322
|
+
e.fn === "fsp.globTypes") {
|
|
4301
4323
|
// Result: the interned Dirent record array — {%dtype: f64,
|
|
4302
4324
|
// name: string, parentPath: string} rows (canonical field
|
|
4303
|
-
// order; the structure lowerFsReaddirTypesCall pinned).
|
|
4325
|
+
// order; the structure lowerFsReaddirTypesCall pinned). The glob
|
|
4326
|
+
// forms answer the array itself.
|
|
4304
4327
|
const result = e.fn === "fsp.readdirTypes"
|
|
4305
4328
|
? e.type.kind === "promise"
|
|
4306
4329
|
? e.type.inner
|
|
@@ -4309,7 +4332,23 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
4309
4332
|
const shape = result?.kind === "array" && result.elem.kind === "record"
|
|
4310
4333
|
? records.get(result.elem.shapeId)
|
|
4311
4334
|
: undefined;
|
|
4312
|
-
const ok = shape !== undefined &&
|
|
4335
|
+
const ok = shape !== undefined && isDirentShape(shape);
|
|
4336
|
+
if (!ok) {
|
|
4337
|
+
err(`libCall ${e.fn} must return ${e.fn === "fsp.readdirTypes" ? "a promise of " : ""}the Dirent record array`, e.loc);
|
|
4338
|
+
}
|
|
4339
|
+
return true;
|
|
4340
|
+
}
|
|
4341
|
+
if (e.fn === "dir.readSync" || e.fn === "dir.read") {
|
|
4342
|
+
// Result: `Dirent | null` (a promise of it for dir.read) — the
|
|
4343
|
+
// interned Dirent row shape readdirTypesSync uses, or null.
|
|
4344
|
+
const result = e.fn === "dir.read" ? (e.type.kind === "promise" ? e.type.inner : undefined) : e.type;
|
|
4345
|
+
const def = result?.kind === "union" ? unions.get(result.unionId) : undefined;
|
|
4346
|
+
const row = def?.arms.find((a) => a.kind === "record");
|
|
4347
|
+
const shape = row?.kind === "record" ? records.get(row.shapeId) : undefined;
|
|
4348
|
+
const ok = def !== undefined &&
|
|
4349
|
+
def.arms.length === 2 &&
|
|
4350
|
+
def.arms.some((a) => a.kind === "nullT") &&
|
|
4351
|
+
shape !== undefined &&
|
|
4313
4352
|
!shape.tuple &&
|
|
4314
4353
|
shape.indexValue === undefined &&
|
|
4315
4354
|
shape.fields.length === 3 &&
|
|
@@ -4320,7 +4359,7 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
4320
4359
|
shape.fields[2].name === "parentPath" &&
|
|
4321
4360
|
shape.fields[2].type.kind === "string";
|
|
4322
4361
|
if (!ok) {
|
|
4323
|
-
err(`libCall ${e.fn} must return ${e.fn === "
|
|
4362
|
+
err(`libCall ${e.fn} must return ${e.fn === "dir.read" ? "a promise of " : ""}Dirent | null`, e.loc);
|
|
4324
4363
|
}
|
|
4325
4364
|
return true;
|
|
4326
4365
|
}
|
|
@@ -4612,6 +4651,31 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
4612
4651
|
return false;
|
|
4613
4652
|
}
|
|
4614
4653
|
function checkLibSpecialCall(e) {
|
|
4654
|
+
if (e.fn === "crypto.randomFillView" || e.fn === "crypto.randomFillViewRest") {
|
|
4655
|
+
// The filled view is the result, at its own element type.
|
|
4656
|
+
const view = e.args[0]?.type;
|
|
4657
|
+
if (view?.kind !== "bytes" || !typeEquals(e.type, view)) {
|
|
4658
|
+
err(`libCall ${e.fn} must return its view argument's type`, e.loc);
|
|
4659
|
+
}
|
|
4660
|
+
return true;
|
|
4661
|
+
}
|
|
4662
|
+
if (e.fn === "crypto.timingSafeEqual") {
|
|
4663
|
+
if (e.args[0]?.type.kind !== "bytes" || e.args[1]?.type.kind !== "bytes")
|
|
4664
|
+
err(`libCall ${e.fn} arguments must be views`, e.loc);
|
|
4665
|
+
}
|
|
4666
|
+
if (e.fn === "crypto.randomFillCb") {
|
|
4667
|
+
if (e.args[0]?.type.kind !== "bytes")
|
|
4668
|
+
err(`libCall ${e.fn} buffer must be a view`, e.loc);
|
|
4669
|
+
if (e.args[4]?.type.kind !== "func")
|
|
4670
|
+
err(`libCall ${e.fn} callback must be a function`, e.loc);
|
|
4671
|
+
}
|
|
4672
|
+
if (e.fn === "crypto.randomFillCbDyn" ||
|
|
4673
|
+
e.fn === "crypto.randomIntCb" ||
|
|
4674
|
+
e.fn === "crypto.generateKeyCb") {
|
|
4675
|
+
const callback = e.args[e.args.length - 1]?.type;
|
|
4676
|
+
if (callback?.kind !== "func")
|
|
4677
|
+
err(`libCall ${e.fn} callback must be a function`, e.loc);
|
|
4678
|
+
}
|
|
4615
4679
|
if (e.fn === "global.undefRead") {
|
|
4616
4680
|
// Always throws — the result type is whatever the declared type
|
|
4617
4681
|
// of the undefined global mapped to (never materialized).
|
|
@@ -4732,7 +4796,11 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
4732
4796
|
e.fn === "stream.finished" ||
|
|
4733
4797
|
e.fn === "stream.finishedDyn" ||
|
|
4734
4798
|
e.fn === "stream.pipeline" ||
|
|
4735
|
-
e.fn === "stream.pipelineDyn"
|
|
4799
|
+
e.fn === "stream.pipelineDyn" ||
|
|
4800
|
+
e.fn === "stream.addAbortSignal" ||
|
|
4801
|
+
e.fn === "stream.addAbortSignalFn" ||
|
|
4802
|
+
e.fn === "stream.finishedOpts" ||
|
|
4803
|
+
e.fn === "stream.finishedOptsSignal") {
|
|
4736
4804
|
// Receiver/result: stream-hierarchy objects (a class whose base
|
|
4737
4805
|
// chain reaches a runtime stream class). Constructors have no
|
|
4738
4806
|
// receiver — their RESULT names the class; chaining forms
|
|
@@ -4749,6 +4817,15 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
4749
4817
|
}
|
|
4750
4818
|
return false;
|
|
4751
4819
|
};
|
|
4820
|
+
if (e.fn === "stream.addAbortSignal" || e.fn === "stream.addAbortSignalFn") {
|
|
4821
|
+
// [stream, signal] (the option) or [signal, stream] (the module
|
|
4822
|
+
// function): the result is the stream argument's type.
|
|
4823
|
+
const s = e.args[e.fn === "stream.addAbortSignal" ? 0 : 1];
|
|
4824
|
+
if (!isStreamObject(s?.type) || !typeEquals(e.type, s.type)) {
|
|
4825
|
+
err(`libCall ${e.fn} must take and return a stream-hierarchy object`, e.loc);
|
|
4826
|
+
}
|
|
4827
|
+
return true;
|
|
4828
|
+
}
|
|
4752
4829
|
if (e.fn.endsWith(".new")) {
|
|
4753
4830
|
if (!isStreamObject(e.type)) {
|
|
4754
4831
|
err(`libCall ${e.fn} must return a stream class, got ${e.type.kind}`, e.loc);
|
|
@@ -4781,6 +4858,20 @@ function validateFunction(fn, functions, ffiByName, classes, records, recordVali
|
|
|
4781
4858
|
err(`libCall ${e.fn} must be void`, e.loc);
|
|
4782
4859
|
return true;
|
|
4783
4860
|
}
|
|
4861
|
+
if (e.fn === "stream.finishedOpts" || e.fn === "stream.finishedOptsSignal") {
|
|
4862
|
+
// (recv, readable, writable, error[, signal], cb) → the cleanup
|
|
4863
|
+
// closure; the callback is a func or a checked-dynamic value.
|
|
4864
|
+
if (!isStreamObject(e.args[0]?.type)) {
|
|
4865
|
+
err(`libCall ${e.fn} receiver must be a stream-hierarchy object`, e.loc);
|
|
4866
|
+
}
|
|
4867
|
+
const cbK = e.args[e.args.length - 1]?.type.kind;
|
|
4868
|
+
if (cbK !== "func" && cbK !== "dyn")
|
|
4869
|
+
err(`libCall ${e.fn} callback must be a func or dyn`, e.loc);
|
|
4870
|
+
if (e.type.kind !== "func") {
|
|
4871
|
+
err(`libCall ${e.fn} must return the cleanup closure, got ${e.type.kind}`, e.loc);
|
|
4872
|
+
}
|
|
4873
|
+
return true;
|
|
4874
|
+
}
|
|
4784
4875
|
if (e.fn === "stream.finished" || e.fn === "stream.finishedDyn") {
|
|
4785
4876
|
// (recv, cb) → the cleanup closure.
|
|
4786
4877
|
if (!isStreamObject(e.args[0]?.type)) {
|