@scriptc/compiler 0.2.5 → 0.2.6
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 +57 -30
- package/dist/backend/cycle-analysis.test.js +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +1 -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 +3 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +32 -4
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/byte-windows.d.ts +31 -0
- package/dist/backend/llvm/byte-windows.js +334 -0
- package/dist/backend/llvm/byte-windows.js.map +1 -0
- package/dist/backend/llvm/byte-windows.test.d.ts +1 -0
- package/dist/backend/llvm/byte-windows.test.js +244 -0
- package/dist/backend/llvm/byte-windows.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +2 -2
- package/dist/backend/llvm/call-lifetimes.js +17 -7
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +14 -1
- package/dist/backend/llvm/classes.js +80 -9
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.d.ts +1 -0
- package/dist/backend/llvm/classes.test.js +99 -0
- package/dist/backend/llvm/classes.test.js.map +1 -0
- package/dist/backend/llvm/constant-callbacks.d.ts +11 -0
- package/dist/backend/llvm/constant-callbacks.js +213 -0
- package/dist/backend/llvm/constant-callbacks.js.map +1 -0
- package/dist/backend/llvm/constant-callbacks.test.d.ts +1 -0
- package/dist/backend/llvm/constant-callbacks.test.js +124 -0
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +1 -1
- package/dist/backend/llvm/dyn.js +7 -34
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +19 -0
- package/dist/backend/llvm/emitter.js +274 -46
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +17 -11
- package/dist/backend/llvm/emitter.test.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-calls.js +91 -23
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +21 -9
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +36 -3
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +7 -0
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/integer-remainder.d.ts +7 -0
- package/dist/backend/llvm/integer-remainder.js +26 -0
- package/dist/backend/llvm/integer-remainder.js.map +1 -0
- package/dist/backend/llvm/layouts.js +1 -1
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +7 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +7 -22
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +15 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.d.ts +8 -2
- package/dist/backend/llvm/local-array-reads.js +89 -68
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +28 -4
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +11 -0
- package/dist/backend/llvm/loop-array-borrows.js +70 -0
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -0
- package/dist/backend/llvm/loop-array-borrows.test.d.ts +1 -0
- package/dist/backend/llvm/loop-array-borrows.test.js +145 -0
- package/dist/backend/llvm/loop-array-borrows.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +5 -0
- package/dist/backend/llvm/map-read-lifetimes.js +20 -5
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +1 -1
- package/dist/backend/llvm/reference-effects.d.ts +2 -1
- package/dist/backend/llvm/reference-effects.js +7 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +4 -1
- package/dist/backend/llvm/shapes.js +22 -7
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/split-loops.d.ts +48 -0
- package/dist/backend/llvm/split-loops.js +183 -0
- package/dist/backend/llvm/split-loops.js.map +1 -0
- package/dist/backend/llvm/split.js +0 -7
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +66 -2
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-callbacks.d.ts +14 -0
- package/dist/backend/llvm/stack-callbacks.js +73 -0
- package/dist/backend/llvm/stack-callbacks.js.map +1 -0
- package/dist/backend/llvm/stack-captures.d.ts +25 -0
- package/dist/backend/llvm/stack-captures.js +150 -0
- package/dist/backend/llvm/stack-captures.js.map +1 -0
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +8 -4
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +20 -0
- package/dist/backend/llvm/string-slices.js +87 -0
- package/dist/backend/llvm/string-slices.js.map +1 -0
- package/dist/backend/llvm/string-slices.test.d.ts +1 -0
- package/dist/backend/llvm/string-slices.test.js +98 -0
- package/dist/backend/llvm/string-slices.test.js.map +1 -0
- package/dist/backend/llvm/switch-dispatch.test.js +1 -1
- package/dist/backend/llvm/walkers.d.ts +4 -14
- package/dist/backend/llvm/walkers.js +53 -311
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +1 -1
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +2 -0
- package/dist/backend/native/executable.js +12 -4
- 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 +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +6 -0
- package/dist/backend/native-codegen-core.js +21 -0
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +4 -0
- package/dist/backend/native-codegen.js +34 -18
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +47 -2
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +1 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-tools.d.ts +3 -1
- package/dist/backend/native-tools.js +6 -4
- package/dist/backend/native-tools.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-core.d.ts +1 -0
- package/dist/backend/runtime-pack-core.js +8 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +41 -4
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +11 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +2 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +15 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/fork-target.d.ts +5 -0
- package/dist/frontend/fork-target.js +40 -8
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.d.ts +1 -0
- package/dist/frontend/fork-target.test.js +59 -0
- package/dist/frontend/fork-target.test.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.d.ts +2 -11
- package/dist/frontend/lowering/builtins/atomics.js +64 -28
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +3 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +51 -4
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +6 -1
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/workers.d.ts +5 -0
- package/dist/frontend/lowering/builtins/workers.js +65 -0
- package/dist/frontend/lowering/builtins/workers.js.map +1 -0
- package/dist/frontend/lowering/class-assertions.d.ts +7 -0
- package/dist/frontend/lowering/class-assertions.js +96 -0
- package/dist/frontend/lowering/class-assertions.js.map +1 -0
- package/dist/frontend/lowering/class-protocols.d.ts +17 -0
- package/dist/frontend/lowering/class-protocols.js +126 -0
- package/dist/frontend/lowering/class-protocols.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +7 -11
- package/dist/frontend/lowering/containers/array-callbacks.js +52 -87
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +12 -34
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +22 -3
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +2 -6
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +2 -5
- package/dist/frontend/lowering/generic-functions.js +13 -10
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/instantiation-path.d.ts +8 -0
- package/dist/frontend/lowering/instantiation-path.js +10 -0
- package/dist/frontend/lowering/instantiation-path.js.map +1 -0
- package/dist/frontend/lowering/instantiation-path.test.d.ts +1 -0
- package/dist/frontend/lowering/instantiation-path.test.js +23 -0
- package/dist/frontend/lowering/instantiation-path.test.js.map +1 -0
- package/dist/frontend/lowering/lower-builtin-values.js +11 -7
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +36 -3
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +5 -0
- package/dist/frontend/lowering/lower-classes.js +121 -53
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.js +1 -1
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +31 -10
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +1 -1
- package/dist/frontend/lowering/lower-functions.js +2 -2
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-island.js +1 -1
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -0
- package/dist/frontend/lowering/lower-modules.js +44 -9
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +13 -11
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +1 -1
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +13 -1
- package/dist/frontend/lowering/lowerer.js +51 -9
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.d.ts +7 -0
- package/dist/frontend/lowering/split-consumers.js +64 -0
- package/dist/frontend/lowering/split-consumers.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -4
- package/dist/frontend/lowering/surfaces.js +35 -7
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/module-source-candidates.d.ts +10 -0
- package/dist/frontend/module-source-candidates.js +40 -0
- package/dist/frontend/module-source-candidates.js.map +1 -0
- package/dist/frontend/module-source-candidates.test.d.ts +1 -0
- package/dist/frontend/module-source-candidates.test.js +53 -0
- package/dist/frontend/module-source-candidates.test.js.map +1 -0
- package/dist/frontend/pipeline.js +2 -2
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +2 -0
- package/dist/frontend/program-analysis.js +2 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.js +17 -29
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/ts7/ast-node.js +6 -8
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +42 -1
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +4 -0
- package/dist/frontend/ts7/ast-wire.js +28 -0
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +2 -1
- package/dist/frontend/ts7/ast.js +8 -4
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +8 -2
- package/dist/frontend/ts7/checker.js +41 -5
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +42 -0
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +7 -0
- package/dist/frontend/ts7/program-host.js +26 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +29 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +3 -0
- package/dist/frontend/type-mapper.js +44 -2
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/worker-target.d.ts +6 -0
- package/dist/frontend/worker-target.js +108 -0
- package/dist/frontend/worker-target.js.map +1 -0
- package/dist/frontend/worker-target.test.d.ts +1 -0
- package/dist/frontend/worker-target.test.js +71 -0
- package/dist/frontend/worker-target.test.js.map +1 -0
- package/dist/index.js +24 -7
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +12 -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 +13 -12
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/ir.d.ts +9 -10
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +8 -0
- package/dist/ir/numeric-call-specialization.js +198 -0
- package/dist/ir/numeric-call-specialization.js.map +1 -0
- package/dist/ir/runtime-features.js +4 -3
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +3 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.js +89 -23
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +91 -4
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +2 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/native/compiler.js +24 -11
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +7 -3
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/prepare.js +2 -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 +30 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { lowerWorkerMetadata } from "./builtins/workers.js";
|
|
1
2
|
import { dynUndefinedExpr, nodeThrowExpr, numLit, varRef } from "../../ir/build.js";
|
|
2
3
|
import { lowerBuiltinCall } from "./builtin-calls.js";
|
|
3
4
|
import { CoercionState } from "./coercions/state.js";
|
|
@@ -15,6 +16,7 @@ import { bindingInContext, captureContextBinding, declareContextLocal, declareCo
|
|
|
15
16
|
import { InternalCompilerError } from "../../errors.js";
|
|
16
17
|
import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "./optional-arguments.js";
|
|
17
18
|
import { ClassDynamicDispatch, trackClassFieldCreation } from "./class-dynamic-dispatch.js";
|
|
19
|
+
import { ClassProtocols } from "./class-protocols.js";
|
|
18
20
|
import { DeferredModuleInitializers } from "./deferred-module-initializers.js";
|
|
19
21
|
import { finalizeClassMethodValues } from "./class-method-values.js";
|
|
20
22
|
export { newFnCtx } from "./function-context.js";
|
|
@@ -44,7 +46,7 @@ import { provenanceActive } from "../provenance-registry.js";
|
|
|
44
46
|
import { ambientDtsPath, canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, fallbackDtsPath, isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isNodeEsmFile, isNodeTypesPath, locOf, orderedImportsOf, overridesDtsPath, npmStaticDepSf7, requireSpecOf, resolveImport, workspacePackageOfPath, } from "../program.js";
|
|
45
47
|
import { containsRecord, containsUnion, describeComponentBlocker, describeRecordMemberBlocker, formatIrType, ISLAND_AMBIENT_TYPES, isUnitOnlyTsType, jsOpenObjectType, mapType, ShapeRegistry, typeKey, UnionRegistry, withUndefinedArm as withUndefinedArmCanonical, } from "../type-mapper.js";
|
|
46
48
|
import { boundaryIntoIslandMsg, boundaryOutOfIslandMsg, builtinConstLit, builtinModuleConstOf, builtinModulesArrayLit, builtinFenceHintOf, builtinModuleFnOf, stdlibMemberFence, isStdlibMember, isStdlibSymbol, isStdlibGlobal, stdlibGlobalNameOf, stdlibGlobalMember, nodeTypesOnlySymbol, } from "./surfaces.js";
|
|
47
|
-
import { splitFiles, collectProgram, collectNpmImports, collectJsonImports, moduleArtifacts, collectGlobals, declSymbolOf, defaultExportSymbolOf, lowerFileInit, lowerDefaultExport, buildMain, appendDynamicImportModules, appendForkModules, } from "./lower-modules.js";
|
|
49
|
+
import { splitFiles, collectProgram, collectNpmImports, collectJsonImports, moduleArtifacts, collectGlobals, declSymbolOf, defaultExportSymbolOf, lowerFileInit, lowerDefaultExport, buildMain, appendDynamicImportModules, appendForkModules, appendWorkerModules, } from "./lower-modules.js";
|
|
48
50
|
import { prepareCjsModuleGraph } from "./lower-node-module.js";
|
|
49
51
|
import { registerBuiltinErrorClasses, registerBuiltinEmitterClass, registerBuiltinStreamClasses, builtinErrorInfoOf, builtinEmitterInfoOf, builtinStreamInfoOf, analyzeClassDecoration, classIteratorDrainCall, classIteratorNextCall, classIteratorOf, classIteratorOpenCall, classIteratorRestDrainCall, classMemberNameOf, classValueRef, collectClassShape, exactClassOfReceiver, collectClassShapeInner, ctorAbiEquals, findMethodOn, findStaticOn, genericClassInstanceType, isSubclassOf, inHierarchy, overrideBelow, staticShadowBelow, upcastTo, lowerClassMembers, lowerClassCtor, lowerClassExpression, lowerClassExpressionInfo, lowerClassMethodMember, lowerClassValueProperty, lowerStaticMethod, throwingSetterFn, fieldInitStmts, lowerStaticFieldInits, lowerStaticFieldRead, lowerDerivedCtorBody, superCallStmt, lowerSuperMethodCall, superThisRef, lowerSuperAccessorRead, lowerSuperAccessorWrite, inheritsBuiltinErrorCtor, inheritsBuiltinEmitterCtor, errorConstructorArgs, lowerNew, accessorCall, } from "./lower-classes.js";
|
|
50
52
|
import { mixinCallClassInfoOf, mixinIntersectionInstanceType, } from "./lower-mixins.js";
|
|
@@ -247,6 +249,7 @@ export function lowerToIr(program, entry, moduleOrder, options = {}) {
|
|
|
247
249
|
const extraModuleCycleDiags = [];
|
|
248
250
|
const cycleKeys = new Set();
|
|
249
251
|
const forkTargets = [];
|
|
252
|
+
const workerTargets = [];
|
|
250
253
|
const onExtraCycle = (cycle, reason) => {
|
|
251
254
|
const key = `${cycle}\0${reason}`;
|
|
252
255
|
if (cycleKeys.has(key))
|
|
@@ -258,6 +261,7 @@ export function lowerToIr(program, entry, moduleOrder, options = {}) {
|
|
|
258
261
|
const before = moduleOrder.length;
|
|
259
262
|
appendDynamicImportModules(program, moduleOrder, onExtraCycle);
|
|
260
263
|
appendForkModules(program, moduleOrder, forkTargets, onExtraCycle);
|
|
264
|
+
appendWorkerModules(program, moduleOrder, workerTargets, onExtraCycle);
|
|
261
265
|
if (moduleOrder.length === before)
|
|
262
266
|
break;
|
|
263
267
|
if (pass === 31)
|
|
@@ -274,6 +278,7 @@ export function lowerToIr(program, entry, moduleOrder, options = {}) {
|
|
|
274
278
|
ffiImports,
|
|
275
279
|
libraryCallbacks,
|
|
276
280
|
forkTargets,
|
|
281
|
+
workerTargets,
|
|
277
282
|
externalTypes,
|
|
278
283
|
externalTypeSpecifiersByFile,
|
|
279
284
|
});
|
|
@@ -293,6 +298,7 @@ export function lowerToIr(program, entry, moduleOrder, options = {}) {
|
|
|
293
298
|
ffiImports,
|
|
294
299
|
libraryCallbacks,
|
|
295
300
|
forkTargets,
|
|
301
|
+
workerTargets,
|
|
296
302
|
externalTypes,
|
|
297
303
|
externalTypeSpecifiersByFile,
|
|
298
304
|
ffiBindingSymbols: ffiValidation.symbolsByName,
|
|
@@ -322,6 +328,7 @@ export function lowerToIr(program, entry, moduleOrder, options = {}) {
|
|
|
322
328
|
ffiImports,
|
|
323
329
|
libraryCallbacks,
|
|
324
330
|
forkTargets,
|
|
331
|
+
workerTargets,
|
|
325
332
|
ffiBindingSymbols: ffiValidation.symbolsByName,
|
|
326
333
|
externalTypes,
|
|
327
334
|
externalTypeSpecifiersByFile,
|
|
@@ -345,6 +352,7 @@ export function lowerToIr(program, entry, moduleOrder, options = {}) {
|
|
|
345
352
|
ffiImports,
|
|
346
353
|
libraryCallbacks,
|
|
347
354
|
forkTargets,
|
|
355
|
+
workerTargets,
|
|
348
356
|
ffiBindingSymbols: ffiValidation.symbolsByName,
|
|
349
357
|
externalTypes,
|
|
350
358
|
externalTypeSpecifiersByFile,
|
|
@@ -927,6 +935,7 @@ export class Lowerer {
|
|
|
927
935
|
/** Monomorphization worklist: instances queued by call sites, drained in
|
|
928
936
|
* run() (processing an instance body can queue more). */
|
|
929
937
|
instantiationQueue = [];
|
|
938
|
+
genericInstantiationPath = null;
|
|
930
939
|
/** Historical emit rank of the retained declaration/init body currently
|
|
931
940
|
* lowering, and the earliest such owner that demanded each generic
|
|
932
941
|
* instance. Reachability can encounter a later caller first; the minimum
|
|
@@ -1234,6 +1243,17 @@ export class Lowerer {
|
|
|
1234
1243
|
while (ts.isParenthesizedExpression(origin))
|
|
1235
1244
|
origin = origin.expression;
|
|
1236
1245
|
let optionalOrigin = ts.isElementAccessExpression(origin) || ts.isPropertyAccessExpression(origin);
|
|
1246
|
+
if (ts.isCallExpression(origin)) {
|
|
1247
|
+
const name = ts.isPropertyAccessExpression(origin.expression)
|
|
1248
|
+
? origin.expression.name
|
|
1249
|
+
: origin.expression;
|
|
1250
|
+
const symbol = ts.isIdentifier(name) ? this.resolveValueSymbol(name) : undefined;
|
|
1251
|
+
const signature = symbol ? this.fnSigsBySymbol.get(symbol) : undefined;
|
|
1252
|
+
optionalOrigin =
|
|
1253
|
+
this.runtimeOptionalFunctionReturns.has(origin) ||
|
|
1254
|
+
(signature?.returnType.kind === "union" &&
|
|
1255
|
+
this.armTag(signature.returnType.unionId, UNDEFINED_T) >= 0);
|
|
1256
|
+
}
|
|
1237
1257
|
if (ts.isIdentifier(origin)) {
|
|
1238
1258
|
const local = this.resolveLocal(origin);
|
|
1239
1259
|
const root = local ? this.runtimeOptionalRootOf(local) : null;
|
|
@@ -1513,6 +1533,7 @@ export class Lowerer {
|
|
|
1513
1533
|
* (the ctx guard keeps hidden locals out of closures — a cross-function
|
|
1514
1534
|
* walk falls back to the plain array walk and the fence). */
|
|
1515
1535
|
matchAllDrainIndexes = new Map();
|
|
1536
|
+
splitIdentifierUses = new Map();
|
|
1516
1537
|
/** STORED numeric value iterators: `const it = numbers.values()` (and
|
|
1517
1538
|
* the equivalent `[Symbol.iterator]()` spelling) over number[] or a
|
|
1518
1539
|
* represented typed array has no first-class IR value, so its statically
|
|
@@ -1601,6 +1622,9 @@ export class Lowerer {
|
|
|
1601
1622
|
fileTag = new Map();
|
|
1602
1623
|
/** Embedded fork roots and their private startup ids. */
|
|
1603
1624
|
forkTargets;
|
|
1625
|
+
workerTargets;
|
|
1626
|
+
workerTargetIdByPath = new Map();
|
|
1627
|
+
usesWorkers = false;
|
|
1604
1628
|
forkTargetIdByPath = new Map();
|
|
1605
1629
|
/** Namespace ModuleBlocks this program lowers, filled by splitFiles:
|
|
1606
1630
|
* "flattened" — an instantiated namespace whose body joined the file's
|
|
@@ -1815,6 +1839,10 @@ export class Lowerer {
|
|
|
1815
1839
|
this.startupCrash = mode.startupCrash ?? null;
|
|
1816
1840
|
this.ffiImports = mode.ffiImports ?? [];
|
|
1817
1841
|
this.libraryCallbacks = mode.libraryCallbacks ?? false;
|
|
1842
|
+
this.workerTargets = mode.workerTargets ?? [];
|
|
1843
|
+
this.workerTargets.forEach((sf, id) => {
|
|
1844
|
+
this.workerTargetIdByPath.set(tsgoPath(resolve(sf.fileName)), id);
|
|
1845
|
+
});
|
|
1818
1846
|
this.forkTargets = mode.forkTargets ?? [];
|
|
1819
1847
|
this.forkTargets.forEach((sf, id) => {
|
|
1820
1848
|
this.forkTargetIdByPath.set(tsgoPath(resolve(sf.fileName)), id);
|
|
@@ -1881,6 +1909,7 @@ export class Lowerer {
|
|
|
1881
1909
|
return { kind: "object", className };
|
|
1882
1910
|
},
|
|
1883
1911
|
mixinIntersectionInstance: (widened) => mixinIntersectionInstanceType(this, widened),
|
|
1912
|
+
classImplementedProtocol: (type) => this.classImplementedProtocol(type),
|
|
1884
1913
|
isStdlibFile: this.isStdlibFile,
|
|
1885
1914
|
isNpmFile: this.isNpmFile,
|
|
1886
1915
|
isExternalTypeFile: (sf) => this.externalTypeSpecifiersByFile.has(tsgoPath(resolve(sf.fileName))),
|
|
@@ -1910,6 +1939,11 @@ export class Lowerer {
|
|
|
1910
1939
|
registerBuiltinErrorClasses() {
|
|
1911
1940
|
return registerBuiltinErrorClasses(this);
|
|
1912
1941
|
}
|
|
1942
|
+
classProtocols = null;
|
|
1943
|
+
classImplementedProtocol(type) {
|
|
1944
|
+
this.classProtocols ??= new ClassProtocols(this.checker, this.moduleOrder);
|
|
1945
|
+
return this.classProtocols.usesCheckedIdentity(type);
|
|
1946
|
+
}
|
|
1913
1947
|
/** The nominal identity of a checker module-namespace type. Program
|
|
1914
1948
|
* modules use their normalized absolute source name; supported builtins
|
|
1915
1949
|
* use the lowering tables' canonical bare name. */
|
|
@@ -2853,7 +2887,7 @@ export class Lowerer {
|
|
|
2853
2887
|
// facade's panic fence, then keep lookup free of lowering side effects:
|
|
2854
2888
|
// resolveValueSymbol also flushes deferred diagnostics and applies
|
|
2855
2889
|
// merged-namespace fences, whose authority remains ordinary lowering.
|
|
2856
|
-
this.checker.prefetchSymbolRoots(sourceFiles);
|
|
2890
|
+
this.checker.prefetchSymbolRoots(sourceFiles, true);
|
|
2857
2891
|
const symbolOf = (node) => {
|
|
2858
2892
|
const s = this.checker.getSymbolAtLocation(node);
|
|
2859
2893
|
if (!s)
|
|
@@ -3928,7 +3962,7 @@ export class Lowerer {
|
|
|
3928
3962
|
// generic classes, generic methods calling generic functions) — the
|
|
3929
3963
|
// index loops run to the joint fixpoint. Same-key recursion re-uses
|
|
3930
3964
|
// its own entry; polymorphic recursion is cut off by
|
|
3931
|
-
//
|
|
3965
|
+
// the recursive instantiation demand path.
|
|
3932
3966
|
{
|
|
3933
3967
|
let ec = 0;
|
|
3934
3968
|
let gc = 0;
|
|
@@ -4103,7 +4137,7 @@ export class Lowerer {
|
|
|
4103
4137
|
const module = this.diags.length > 0
|
|
4104
4138
|
? null
|
|
4105
4139
|
: {
|
|
4106
|
-
irVersion:
|
|
4140
|
+
irVersion: 14,
|
|
4107
4141
|
sourceFile: this.entry.fileName,
|
|
4108
4142
|
functions,
|
|
4109
4143
|
classes: artifacts.classes,
|
|
@@ -4112,6 +4146,7 @@ export class Lowerer {
|
|
|
4112
4146
|
globals: this.globalsList,
|
|
4113
4147
|
...(this.npmEmbedded ? { embedded: this.npmEmbedded } : {}),
|
|
4114
4148
|
entry: ENTRY_NAME,
|
|
4149
|
+
...(this.usesWorkers ? { workers: true } : {}),
|
|
4115
4150
|
...(this.ffiImports.length > 0 ? { ffiImports: [...this.ffiImports] } : {}),
|
|
4116
4151
|
};
|
|
4117
4152
|
if (module)
|
|
@@ -4712,6 +4747,7 @@ export class Lowerer {
|
|
|
4712
4747
|
// globals pre-register before their initializers lower) — an exact
|
|
4713
4748
|
// duplicate (code + span + message) adds noise, not information.
|
|
4714
4749
|
if (this.diags.some((p) => p.code === d.code &&
|
|
4750
|
+
p.loc.file === d.loc.file &&
|
|
4715
4751
|
p.loc.start === d.loc.start &&
|
|
4716
4752
|
p.loc.end === d.loc.end &&
|
|
4717
4753
|
p.message === d.message)) {
|
|
@@ -4914,9 +4950,8 @@ export class Lowerer {
|
|
|
4914
4950
|
'new Intl.NumberFormat("en-US").format(x) and x.toLocaleString("en-US") with default options; ' +
|
|
4915
4951
|
"the rest is ICU locale data the binary does not carry";
|
|
4916
4952
|
const typeHints = {
|
|
4917
|
-
ArrayBuffer: "
|
|
4918
|
-
|
|
4919
|
-
SharedArrayBuffer: "no shared-memory threads exist in a compiled program — Uint8Array is the byte storage",
|
|
4953
|
+
ArrayBuffer: "fixed ArrayBuffer storage and typed-array views are supported; resizable and detached storage are not modeled",
|
|
4954
|
+
SharedArrayBuffer: "fixed SharedArrayBuffer storage is supported; growable shared storage is not modeled",
|
|
4920
4955
|
NumberFormat: intlHint,
|
|
4921
4956
|
DateTimeFormat: intlHint,
|
|
4922
4957
|
DurationFormat: intlHint,
|
|
@@ -6957,6 +6992,8 @@ export class Lowerer {
|
|
|
6957
6992
|
* instance table. Filled by collectClassShapeInner's family mode;
|
|
6958
6993
|
* consulted by mapType's genericClassInstance hook. */
|
|
6959
6994
|
genericClassByDecl = new Map();
|
|
6995
|
+
/** Forward generic references may demand a family before its declaration turn. */
|
|
6996
|
+
collectingClassDeclarations = new Set();
|
|
6960
6997
|
/** Instantiations in demand order — the member-lowering worklist run()'s
|
|
6961
6998
|
* monomorphization fixpoint drains (an instantiation's methods can
|
|
6962
6999
|
* demand further instances of either kind). */
|
|
@@ -8167,8 +8204,8 @@ export class Lowerer {
|
|
|
8167
8204
|
lambdaSignature(node) {
|
|
8168
8205
|
return lambdaSignature(this, node);
|
|
8169
8206
|
}
|
|
8170
|
-
lowerLambda(node) {
|
|
8171
|
-
return lowerLambda(this, node);
|
|
8207
|
+
lowerLambda(node, checkedReceiver = false) {
|
|
8208
|
+
return lowerLambda(this, node, checkedReceiver);
|
|
8172
8209
|
}
|
|
8173
8210
|
lowerArrayMethodCall(call, access) {
|
|
8174
8211
|
return lowerArrayMethodCall(this, call, access);
|
|
@@ -8537,6 +8574,11 @@ export class Lowerer {
|
|
|
8537
8574
|
if (bi.module === "events" && bi.member === "defaultMaxListeners") {
|
|
8538
8575
|
return { kind: "libCall", fn: "emitter.getDefaultMax", args: [], type: F64, loc };
|
|
8539
8576
|
}
|
|
8577
|
+
if (bi.module === "worker_threads") {
|
|
8578
|
+
const value = lowerWorkerMetadata(bi.member, loc);
|
|
8579
|
+
if (value)
|
|
8580
|
+
return value;
|
|
8581
|
+
}
|
|
8540
8582
|
const c = builtinModuleConstOf(this, bi.module, bi.member);
|
|
8541
8583
|
if (c !== undefined)
|
|
8542
8584
|
return builtinConstLit(c, loc);
|