@scriptc/compiler 0.4.3 → 0.4.4
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 +73 -29
- package/dist/backend/llvm/bytes-loop-versions.js +6 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +7 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/debug-info.js +2 -5
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +21 -9
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +2 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +16 -6
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +10 -0
- package/dist/backend/llvm/emitter.js +9 -5
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +11 -2
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +11 -13
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +14 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +14 -0
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +20 -11
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +16 -4
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +5 -0
- package/dist/backend/llvm/integer-values.js +27 -3
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +133 -3
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +37 -1
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +21 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/publish.js +3 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +3 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/shapes.js +2 -7
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/stack-captures.js +1 -5
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/union-repr.d.ts +4 -3
- package/dist/backend/llvm/union-repr.js +6 -5
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/walkers.js +13 -0
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +5 -3
- package/dist/backend/native-codegen-core.js +13 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +6 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +26 -0
- package/dist/backend/target-cpu.js +98 -0
- package/dist/backend/target-cpu.js.map +1 -0
- package/dist/backend/target-cpu.test.d.ts +1 -0
- package/dist/backend/target-cpu.test.js +38 -0
- package/dist/backend/target-cpu.test.js.map +1 -0
- package/dist/cli/command.js +20 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +4 -1
- package/dist/cli/usage.js +7 -0
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/diagnostics/diagnostic.js +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -0
- package/dist/executable/executable-cache.js +4 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +2 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/decl-projection.js +105 -10
- package/dist/frontend/decl-projection.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
- package/dist/frontend/lowering/builtins/async-context.js +62 -3
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +3 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.js +4 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +3 -3
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
- package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +6 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +1 -1
- package/dist/frontend/lowering/builtins/promises.js +149 -138
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +0 -1
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
- package/dist/frontend/lowering/cjs-inline-require.js +307 -4
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +10 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +114 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +54 -18
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +25 -0
- package/dist/frontend/lowering/class-protocols.js +183 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
- package/dist/frontend/lowering/completion-callbacks.js +146 -0
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
- package/dist/frontend/lowering/containers/array-callbacks.js +7 -6
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +5 -0
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +11 -3
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
- package/dist/frontend/lowering/containers/bytes.js +453 -45
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +11 -0
- package/dist/frontend/lowering/date-values.js +207 -0
- package/dist/frontend/lowering/date-values.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.js +6 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +64 -26
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +79 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +31 -1
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +56 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +6 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +17 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +15 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
- package/dist/frontend/lowering/indexed-unions.js +401 -0
- package/dist/frontend/lowering/indexed-unions.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.js +210 -32
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +104 -4
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +15 -3
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +19 -3
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +22 -47
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +205 -1
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +1 -1
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
- package/dist/frontend/lowering/lower-inspect.js +35 -11
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +21 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +100 -34
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +30 -2
- package/dist/frontend/lowering/lowerer.js +68 -7
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
- package/dist/frontend/lowering/object-factory-new.js +20 -6
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/overload-choice.d.ts +33 -0
- package/dist/frontend/lowering/overload-choice.js +190 -0
- package/dist/frontend/lowering/overload-choice.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +55 -2
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/pipeline.js +1 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +5 -1
- package/dist/frontend/program-analysis.js +5 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +13 -5
- package/dist/frontend/program.js +197 -14
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +3 -0
- package/dist/frontend/ts7/semantic-model.js +5 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +6 -1
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +1 -1
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/type-mapper.js +45 -16
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +8 -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 +56 -0
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +33 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loops.js +14 -4
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/ir.d.ts +13 -3
- package/dist/ir/ir.js +19 -5
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +2 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +2 -15
- package/dist/ir/js-ic.js +11 -79
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +0 -142
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/runtime-features.js +25 -1
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/validate.js +46 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/prepare.d.ts +1 -1
- package/dist/native/prepare.js +11 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +18 -2
- package/dist/native/prepare.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +2 -4
|
@@ -17,12 +17,318 @@
|
|
|
17
17
|
* representation; it keeps a named refusal (a first-class CommonJS module
|
|
18
18
|
* object is the two-tier design's S9 stage). */
|
|
19
19
|
import * as ts from "../ts7/adapter.js";
|
|
20
|
-
import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, cjsExportTargetLiteral, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, locOf, npmStaticDepSf7, requireSpecOf, resolveImport, } from "../program.js";
|
|
20
|
+
import { canonicalBuiltinModule, cjsExportAssignmentOf, cjsExportDiscardReason, cjsExportTargetLiteral, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, locOf, npmStaticDepSf7, requireBindingEarlyUse7, requireSpecOf, resolveImport, splitRequireCallOf, } from "../program.js";
|
|
21
21
|
import { createRequireCalleeFileOf } from "./builtins/module-bindings.js";
|
|
22
22
|
import { isCjsRequireGlobal } from "./lower-node-module.js";
|
|
23
23
|
import { DYN } from "../../ir/ir.js";
|
|
24
24
|
import { nodeThrowExpr } from "../../ir/build.js";
|
|
25
25
|
import { probeNodeRequireRefusal } from "../npm.js";
|
|
26
|
+
function symbolOfIdentifierValue(lowerer, ident) {
|
|
27
|
+
const parent = ident.parent;
|
|
28
|
+
// A destructuring shorthand target resolves to the property symbol at
|
|
29
|
+
// the name, but reads/writes the variable through its value symbol.
|
|
30
|
+
if (ts.isShorthandPropertyAssignment(parent) && parent.name === ident) {
|
|
31
|
+
return (lowerer.checker.getShorthandAssignmentValueSymbol(parent) ??
|
|
32
|
+
lowerer.checker.getSymbolAtLocation(ident));
|
|
33
|
+
}
|
|
34
|
+
return lowerer.checker.getSymbolAtLocation(ident);
|
|
35
|
+
}
|
|
36
|
+
function destructuringContainerOf(node) {
|
|
37
|
+
const parent = node.parent;
|
|
38
|
+
if (ts.isShorthandPropertyAssignment(parent) && parent.name === node)
|
|
39
|
+
return parent;
|
|
40
|
+
if (ts.isPropertyAssignment(parent) && parent.initializer === node)
|
|
41
|
+
return parent;
|
|
42
|
+
if (ts.isSpreadElement(parent) && parent.expression === node)
|
|
43
|
+
return parent;
|
|
44
|
+
if (ts.isSpreadAssignment(parent) && parent.expression === node)
|
|
45
|
+
return parent;
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
function writeTargetOf(node) {
|
|
49
|
+
let target = node;
|
|
50
|
+
for (;;) {
|
|
51
|
+
const parent = target.parent;
|
|
52
|
+
if (ts.isParenthesizedExpression(parent) ||
|
|
53
|
+
ts.isArrayLiteralExpression(parent) ||
|
|
54
|
+
ts.isObjectLiteralExpression(parent)) {
|
|
55
|
+
target = parent;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const container = destructuringContainerOf(target);
|
|
59
|
+
if (container === null)
|
|
60
|
+
break;
|
|
61
|
+
target = container;
|
|
62
|
+
}
|
|
63
|
+
const parent = target.parent;
|
|
64
|
+
if (ts.isBinaryExpression(parent) &&
|
|
65
|
+
parent.left === target &&
|
|
66
|
+
ts.isAssignmentOperator(parent.operatorToken.kind))
|
|
67
|
+
return parent;
|
|
68
|
+
if ((ts.isPrefixUnaryExpression(parent) || ts.isPostfixUnaryExpression(parent)) &&
|
|
69
|
+
parent.operand === target &&
|
|
70
|
+
(parent.operator === ts.SyntaxKind.PlusPlusToken ||
|
|
71
|
+
parent.operator === ts.SyntaxKind.MinusMinusToken))
|
|
72
|
+
return parent;
|
|
73
|
+
if ((ts.isForInStatement(parent) || ts.isForOfStatement(parent)) && parent.initializer === target)
|
|
74
|
+
return parent;
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
/** The split form of a top-level require binding: `var m; m = require("./x")`.
|
|
78
|
+
* Exactly one write, at a top-level `m = require("<literal>")` statement.
|
|
79
|
+
* Null for the ordinary `const m = require("./x")` declaration and for
|
|
80
|
+
* every form that needs runtime module selection. */
|
|
81
|
+
export function splitRequireBindingOf(lowerer, decl) {
|
|
82
|
+
// Cheap shape gate before the cache: ordinary declarations never enter the
|
|
83
|
+
// per-Lowerer map.
|
|
84
|
+
if (decl.initializer !== undefined || !ts.isIdentifier(decl.name))
|
|
85
|
+
return null;
|
|
86
|
+
const list = decl.parent;
|
|
87
|
+
if ((list.flags & ts.NodeFlags.Const) !== 0)
|
|
88
|
+
return null;
|
|
89
|
+
const stmt = list.parent;
|
|
90
|
+
if (!ts.isVariableStatement(stmt) || !ts.isSourceFile(stmt.parent))
|
|
91
|
+
return null;
|
|
92
|
+
const cached = lowerer.cjsSplitRequireBindings.get(decl);
|
|
93
|
+
if (cached !== undefined)
|
|
94
|
+
return cached;
|
|
95
|
+
const result = computeSplitRequireBinding(lowerer, decl);
|
|
96
|
+
lowerer.cjsSplitRequireBindings.set(decl, result);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
function computeSplitRequireBinding(lowerer, decl) {
|
|
100
|
+
const sf = ts.getSourceFileOfNode(decl);
|
|
101
|
+
if (!isCjsJsFile(sf, lowerer.program))
|
|
102
|
+
return null;
|
|
103
|
+
if (!sf.text.includes("require"))
|
|
104
|
+
return null;
|
|
105
|
+
const symbol = lowerer.checker.getSymbolAtLocation(decl.name);
|
|
106
|
+
if (symbol === undefined)
|
|
107
|
+
return null;
|
|
108
|
+
// Merged declarations make the binding's initialization order ambiguous;
|
|
109
|
+
// keep ordinary storage instead of guessing.
|
|
110
|
+
let declarations = 0;
|
|
111
|
+
for (const other of symbol.declarations) {
|
|
112
|
+
if (!ts.isVariableDeclaration(other) || ++declarations > 1)
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
if (declarations !== 1)
|
|
116
|
+
return null;
|
|
117
|
+
// Find the one top-level `m = ...` statement first: most uninitialized
|
|
118
|
+
// variables never reach that shape, so they avoid the full-file write scan.
|
|
119
|
+
let assign = null;
|
|
120
|
+
for (const stmt of sf.statements.nodes) {
|
|
121
|
+
if (!ts.isExpressionStatement(stmt))
|
|
122
|
+
continue;
|
|
123
|
+
const expr = stmt.expression;
|
|
124
|
+
if (!ts.isBinaryExpression(expr) ||
|
|
125
|
+
expr.operatorToken.kind !== ts.SyntaxKind.EqualsToken ||
|
|
126
|
+
!ts.isIdentifier(expr.left) ||
|
|
127
|
+
expr.left.text !== decl.name.text ||
|
|
128
|
+
lowerer.checker.getSymbolAtLocation(expr.left) !== symbol)
|
|
129
|
+
continue;
|
|
130
|
+
if (assign !== null)
|
|
131
|
+
return null;
|
|
132
|
+
assign = expr;
|
|
133
|
+
}
|
|
134
|
+
if (assign === null)
|
|
135
|
+
return null;
|
|
136
|
+
const req = inlineProgramRequireOf(lowerer, assign.right);
|
|
137
|
+
if (req === null)
|
|
138
|
+
return null;
|
|
139
|
+
// Preflight treats the same bindings as require declarations (module edge,
|
|
140
|
+
// cycle admission, early-read fence); a binding it does not know keeps
|
|
141
|
+
// ordinary storage.
|
|
142
|
+
if (splitRequireCallOf(lowerer.program, decl) !== req.call)
|
|
143
|
+
return null;
|
|
144
|
+
// Any other write makes the value depend on runtime control flow.
|
|
145
|
+
let writes = 0;
|
|
146
|
+
ts.walkPreorder(sf, (node) => {
|
|
147
|
+
if (!ts.isIdentifier(node) || node.text !== decl.name.text)
|
|
148
|
+
return;
|
|
149
|
+
if (symbolOfIdentifierValue(lowerer, node) !== symbol)
|
|
150
|
+
return;
|
|
151
|
+
if (writeTargetOf(node) === null)
|
|
152
|
+
return;
|
|
153
|
+
if (++writes > 1)
|
|
154
|
+
return "stop";
|
|
155
|
+
});
|
|
156
|
+
if (writes !== 1)
|
|
157
|
+
return null;
|
|
158
|
+
return { decl, assign, call: req.call, spec: req.spec, dep: req.dep };
|
|
159
|
+
}
|
|
160
|
+
/** The split binding an identifier names, or null. */
|
|
161
|
+
export function splitRequireBindingOfIdent(lowerer, ident) {
|
|
162
|
+
const symbol = symbolOfIdentifierValue(lowerer, ident);
|
|
163
|
+
return symbol === undefined ? null : splitBindingOfSymbol(lowerer, symbol);
|
|
164
|
+
}
|
|
165
|
+
/** The exact top-level assignment statement that initializes `expr`, or null. */
|
|
166
|
+
export function splitRequireAssignmentOf(lowerer, expr) {
|
|
167
|
+
if (!ts.isBinaryExpression(expr) ||
|
|
168
|
+
expr.operatorToken.kind !== ts.SyntaxKind.EqualsToken ||
|
|
169
|
+
!ts.isIdentifier(expr.left))
|
|
170
|
+
return null;
|
|
171
|
+
const bindingOfIdent = splitRequireBindingOfIdent(lowerer, expr.left);
|
|
172
|
+
return bindingOfIdent !== null && bindingOfIdent.assign === expr ? bindingOfIdent : null;
|
|
173
|
+
}
|
|
174
|
+
/** The whole-export symbol a module's `module.exports = <value>` names,
|
|
175
|
+
* or null when the module is a table. */
|
|
176
|
+
export function wholeExportSymbolOfModule(lowerer, dep) {
|
|
177
|
+
const cached = lowerer.cjsWholeExportSymbols.get(dep);
|
|
178
|
+
if (cached !== undefined)
|
|
179
|
+
return cached;
|
|
180
|
+
if (cjsNamespaceModule(lowerer, dep)) {
|
|
181
|
+
lowerer.cjsWholeExportSymbols.set(dep, null);
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
const moduleSymbol = lowerer.checker.getSymbolAtLocation(dep);
|
|
185
|
+
let symbol = moduleSymbol?.getExports()?.get("export=");
|
|
186
|
+
if (symbol === undefined) {
|
|
187
|
+
lowerer.cjsWholeExportSymbols.set(dep, null);
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
if (symbol.flags & ts.SymbolFlags.Alias)
|
|
191
|
+
symbol = lowerer.checker.getAliasedSymbol(symbol);
|
|
192
|
+
lowerer.cjsWholeExportSymbols.set(dep, symbol);
|
|
193
|
+
return symbol;
|
|
194
|
+
}
|
|
195
|
+
function splitBindingOfSymbol(lowerer, symbol) {
|
|
196
|
+
const decl = symbol.declarations.find(ts.isVariableDeclaration);
|
|
197
|
+
return decl === undefined ? null : splitRequireBindingOf(lowerer, decl);
|
|
198
|
+
}
|
|
199
|
+
/** The target whole-export symbol behind a split-binding symbol. */
|
|
200
|
+
function splitWholeExportSymbolOfSymbol(lowerer, symbol) {
|
|
201
|
+
const binding = splitBindingOfSymbol(lowerer, symbol);
|
|
202
|
+
return binding === null ? null : wholeExportSymbolOfModule(lowerer, binding.dep);
|
|
203
|
+
}
|
|
204
|
+
/** True when a CommonJS module has a live member export (`exports.x` or
|
|
205
|
+
* `module.exports.x`) after all `module.exports =` replacements. Those
|
|
206
|
+
* members need a mutable whole-export root. */
|
|
207
|
+
export function cjsHasLiveMemberExports(lowerer, sf) {
|
|
208
|
+
const cached = lowerer.cjsLiveMemberExports.get(sf);
|
|
209
|
+
if (cached !== undefined)
|
|
210
|
+
return cached;
|
|
211
|
+
const stmts = sf.statements.nodes;
|
|
212
|
+
let lastTable = -1;
|
|
213
|
+
for (let i = 0; i < stmts.length; i++) {
|
|
214
|
+
if (cjsExportAssignmentOf(stmts[i])?.kind === "table")
|
|
215
|
+
lastTable = i;
|
|
216
|
+
}
|
|
217
|
+
let live = false;
|
|
218
|
+
// Only members attached after the last replacement survive in Node.
|
|
219
|
+
if (lastTable >= 0) {
|
|
220
|
+
for (let i = lastTable + 1; i < stmts.length; i++) {
|
|
221
|
+
const stmt = stmts[i];
|
|
222
|
+
if (cjsExportAssignmentOf(stmt)?.kind === "member" && cjsExportDiscardReason(stmt) === null) {
|
|
223
|
+
live = true;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
lowerer.cjsLiveMemberExports.set(sf, live);
|
|
229
|
+
return live;
|
|
230
|
+
}
|
|
231
|
+
/** The wrapper's export= symbol when a split binding is re-exported whole
|
|
232
|
+
* (`module.exports = m`) and that assignment owns storage for later member
|
|
233
|
+
* writes. Importers must read the wrapper's storage, not the split
|
|
234
|
+
* binding's underlying value. */
|
|
235
|
+
function splitWholeExportStorageSymbolOf(lowerer, symbol) {
|
|
236
|
+
const binding = splitBindingOfSymbol(lowerer, symbol);
|
|
237
|
+
if (binding === null)
|
|
238
|
+
return null;
|
|
239
|
+
if (wholeExportSymbolOfModule(lowerer, binding.dep) === null)
|
|
240
|
+
return null;
|
|
241
|
+
const sf = ts.getSourceFileOfNode(binding.decl);
|
|
242
|
+
if (!cjsHasLiveMemberExports(lowerer, sf))
|
|
243
|
+
return null;
|
|
244
|
+
const whole = cjsWholeExportValueOf(sf);
|
|
245
|
+
if (whole === null)
|
|
246
|
+
return null;
|
|
247
|
+
let rhs = whole.rhs;
|
|
248
|
+
while (ts.isParenthesizedExpression(rhs))
|
|
249
|
+
rhs = rhs.expression;
|
|
250
|
+
if (!ts.isIdentifier(rhs) || lowerer.checker.getSymbolAtLocation(rhs) !== symbol)
|
|
251
|
+
return null;
|
|
252
|
+
const moduleSymbol = lowerer.checker.getSymbolAtLocation(sf);
|
|
253
|
+
let exportSymbol = moduleSymbol?.getExports()?.get("export=");
|
|
254
|
+
if (exportSymbol === undefined)
|
|
255
|
+
return null;
|
|
256
|
+
if (exportSymbol.flags & ts.SymbolFlags.Alias)
|
|
257
|
+
exportSymbol = lowerer.checker.getAliasedSymbol(exportSymbol);
|
|
258
|
+
return exportSymbol;
|
|
259
|
+
}
|
|
260
|
+
/** The source file whose `module.exports =` assignment declares `symbol`. */
|
|
261
|
+
function moduleExportSourceFileOf(symbol) {
|
|
262
|
+
for (const decl of symbol.declarations) {
|
|
263
|
+
if (ts.isBinaryExpression(decl) &&
|
|
264
|
+
isModuleExportsAccess(decl.left) &&
|
|
265
|
+
ts.isExpressionStatement(decl.parent) &&
|
|
266
|
+
ts.isSourceFile(decl.parent.parent))
|
|
267
|
+
return decl.getSourceFile();
|
|
268
|
+
}
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
/** One hop from a wrapper's export= symbol to the value it re-exports
|
|
272
|
+
* (`module.exports = require(...)` or `= <split binding>`), or null. A
|
|
273
|
+
* wrapper with live members owns storage for them, so it is not followed. */
|
|
274
|
+
function wholeReexportTargetOf(lowerer, symbol) {
|
|
275
|
+
const sf = moduleExportSourceFileOf(symbol);
|
|
276
|
+
if (sf === null)
|
|
277
|
+
return null;
|
|
278
|
+
// A wrapper with live members owns storage for them; importers must keep
|
|
279
|
+
// reading that root rather than the inner value.
|
|
280
|
+
if (cjsHasLiveMemberExports(lowerer, sf))
|
|
281
|
+
return null;
|
|
282
|
+
const whole = cjsWholeExportValueOf(sf);
|
|
283
|
+
if (whole === null)
|
|
284
|
+
return null;
|
|
285
|
+
const inner = inlineProgramRequireOf(lowerer, whole.rhs);
|
|
286
|
+
if (inner !== null)
|
|
287
|
+
return wholeExportSymbolOfModule(lowerer, inner.dep);
|
|
288
|
+
let rhs = whole.rhs;
|
|
289
|
+
while (ts.isParenthesizedExpression(rhs))
|
|
290
|
+
rhs = rhs.expression;
|
|
291
|
+
if (!ts.isIdentifier(rhs))
|
|
292
|
+
return null;
|
|
293
|
+
const rhsSymbol = lowerer.checker.getSymbolAtLocation(rhs);
|
|
294
|
+
return rhsSymbol === undefined ? null : splitWholeExportSymbolOfSymbol(lowerer, rhsSymbol);
|
|
295
|
+
}
|
|
296
|
+
/** Follow split bindings and whole re-exports to the ultimate value symbol. */
|
|
297
|
+
function followSplitWholeTarget(lowerer, candidate) {
|
|
298
|
+
if (candidate === null)
|
|
299
|
+
return null;
|
|
300
|
+
let symbol = candidate;
|
|
301
|
+
const seen = new Set();
|
|
302
|
+
for (let depth = 0; depth < 32 && !seen.has(symbol); depth++) {
|
|
303
|
+
seen.add(symbol);
|
|
304
|
+
const next = splitWholeExportSymbolOfSymbol(lowerer, symbol) ?? wholeReexportTargetOf(lowerer, symbol);
|
|
305
|
+
if (next === null)
|
|
306
|
+
break;
|
|
307
|
+
symbol = next;
|
|
308
|
+
}
|
|
309
|
+
return symbol;
|
|
310
|
+
}
|
|
311
|
+
/** The target whole-export symbol behind `module.exports = <split binding>`,
|
|
312
|
+
* letting importers of that wrapper resolve to the real value symbol. */
|
|
313
|
+
export function splitWholeExportAliasTargetOf(lowerer, symbol) {
|
|
314
|
+
const storage = splitWholeExportStorageSymbolOf(lowerer, symbol);
|
|
315
|
+
if (storage !== null)
|
|
316
|
+
return followSplitWholeTarget(lowerer, storage);
|
|
317
|
+
const direct = followSplitWholeTarget(lowerer, splitWholeExportSymbolOfSymbol(lowerer, symbol));
|
|
318
|
+
if (direct !== null)
|
|
319
|
+
return direct;
|
|
320
|
+
return followSplitWholeTarget(lowerer, wholeReexportTargetOf(lowerer, symbol));
|
|
321
|
+
}
|
|
322
|
+
/** The first read of a split binding that code before its assignment can
|
|
323
|
+
* reach, using the same reachability model as ordinary require bindings. */
|
|
324
|
+
export function splitRequireEarlyReadOf(lowerer, binding) {
|
|
325
|
+
const sf = ts.getSourceFileOfNode(binding.decl);
|
|
326
|
+
const stmt = binding.assign.parent;
|
|
327
|
+
// `binding` was recognized only from a top-level `m = require(...)`
|
|
328
|
+
// statement, so the statement index is always present.
|
|
329
|
+
const index = sf.statements.nodes.indexOf(stmt);
|
|
330
|
+
return requireBindingEarlyUse7(lowerer.program, sf, index, binding.decl, []);
|
|
331
|
+
}
|
|
26
332
|
/** A `require("<literal>")` call of the CommonJS global in a CommonJS JS
|
|
27
333
|
* file whose target is a compiled program module (relative, aliased, or an
|
|
28
334
|
* opted-in --npm-static package). Builtins, JSON documents and
|
|
@@ -87,9 +393,6 @@ export function inlineNamespaceRequireOf(lowerer, expr) {
|
|
|
87
393
|
/** `value` evaluated after the required module's run-once %init (and its
|
|
88
394
|
* module-registry link) at the require's own position. */
|
|
89
395
|
export function withRequireInit(lowerer, req, value) {
|
|
90
|
-
if (lowerer.inlineRequireCycleCalls.has(req.call)) {
|
|
91
|
-
lowerer.unsupported("SC1090", req.call, `require() of '${req.spec}' while it is still evaluating (a require cycle: Node answers its partial exports, which the static export table does not model)`);
|
|
92
|
-
}
|
|
93
396
|
// Every inline program require is a preflight module edge, so its module
|
|
94
397
|
// has an initializer; never read its exports without evaluating it.
|
|
95
398
|
if (!lowerer.initNameOf.has(req.dep)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cjs-inline-require.js","sourceRoot":"","sources":["../../../src/frontend/lowering/cjs-inline-require.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cjs-inline-require.js","sourceRoot":"","sources":["../../../src/frontend/lowering/cjs-inline-require.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,16 @@ export declare function classPropertiesHelper(lowerer: Lowerer, loc: SrcLoc, rea
|
|
|
11
11
|
* Declared fields of a compiled class live in its native layout rather
|
|
12
12
|
* than that table, so a miss rechecks the instance itself. */
|
|
13
13
|
export declare function classForInHasKey(lowerer: Lowerer, value: IrExpr, key: IrExpr, loc: SrcLoc): IrExpr;
|
|
14
|
+
/** Box class instances at their exact class. `%dyn.class.normalize` turns a
|
|
15
|
+
* capsule of a class with subclasses into a capsule of the instance's own
|
|
16
|
+
* class before any member table reads it, so every such box was followed
|
|
17
|
+
* by a second capsule. Each conversion of a value whose static class has a
|
|
18
|
+
* normalization branch now selects the exact class at the conversion, with
|
|
19
|
+
* the same tests in the same order (%dyn.class.boxExact:C), and the
|
|
20
|
+
* normalization of the resulting capsule falls through. Only JavaScript
|
|
21
|
+
* class hierarchies, whose instances live in untyped code, take the exact
|
|
22
|
+
* box. */
|
|
23
|
+
export declare function boxClassInstancesExactly(lowerer: Lowerer, functions: IrFunction[]): void;
|
|
14
24
|
/** Record field creation after the dispatch worklist closes, including writes
|
|
15
25
|
* in generated member tables. Native values stay in their slots; the bag
|
|
16
26
|
* owns only their property presence, attributes, and insertion position. */
|
|
@@ -580,6 +580,111 @@ export function classForInHasKey(lowerer, value, key, loc) {
|
|
|
580
580
|
}
|
|
581
581
|
return { kind: "call", callee: name, args: [value, key], type: BOOL, loc };
|
|
582
582
|
}
|
|
583
|
+
/** Box class instances at their exact class. `%dyn.class.normalize` turns a
|
|
584
|
+
* capsule of a class with subclasses into a capsule of the instance's own
|
|
585
|
+
* class before any member table reads it, so every such box was followed
|
|
586
|
+
* by a second capsule. Each conversion of a value whose static class has a
|
|
587
|
+
* normalization branch now selects the exact class at the conversion, with
|
|
588
|
+
* the same tests in the same order (%dyn.class.boxExact:C), and the
|
|
589
|
+
* normalization of the resulting capsule falls through. Only JavaScript
|
|
590
|
+
* class hierarchies, whose instances live in untyped code, take the exact
|
|
591
|
+
* box. */
|
|
592
|
+
export function boxClassInstancesExactly(lowerer, functions) {
|
|
593
|
+
const normalize = lowerer.liftedFnNamed("%dyn.class.normalize");
|
|
594
|
+
if (!normalize)
|
|
595
|
+
return;
|
|
596
|
+
// Static class → its constructible descendants in normalization order.
|
|
597
|
+
const branches = new Map();
|
|
598
|
+
for (const stmt of normalize.body) {
|
|
599
|
+
if (stmt.kind !== "if" || stmt.cond.kind !== "libCall" || stmt.cond.fn !== "dyn.typedRefIs")
|
|
600
|
+
continue;
|
|
601
|
+
const key = stmt.cond.args[1];
|
|
602
|
+
if (key?.kind !== "strLit" || !key.value.startsWith("object:"))
|
|
603
|
+
continue;
|
|
604
|
+
const children = [];
|
|
605
|
+
for (const inner of stmt.then) {
|
|
606
|
+
if (inner.kind !== "if" || inner.cond.kind !== "instanceOf")
|
|
607
|
+
continue;
|
|
608
|
+
children.push(inner.cond.className);
|
|
609
|
+
}
|
|
610
|
+
// TypeScript hierarchies keep their static-class capsules: their boxes
|
|
611
|
+
// are rarer, and an exact box would emit each subclass's checked view.
|
|
612
|
+
const className = key.value.slice("object:".length);
|
|
613
|
+
const decl = lowerer.classes.get(className)?.decl;
|
|
614
|
+
if (!decl || !isJsSourceFile(ts.getSourceFileOfNode(decl)))
|
|
615
|
+
continue;
|
|
616
|
+
if (children.length)
|
|
617
|
+
branches.set(className, children);
|
|
618
|
+
}
|
|
619
|
+
if (branches.size === 0)
|
|
620
|
+
return;
|
|
621
|
+
const loc = normalize.loc;
|
|
622
|
+
const helpers = new Map();
|
|
623
|
+
const helperFor = (className) => {
|
|
624
|
+
const known = helpers.get(className);
|
|
625
|
+
if (known !== undefined)
|
|
626
|
+
return known;
|
|
627
|
+
const name = `%dyn.class.boxExact:${className}`;
|
|
628
|
+
helpers.set(className, name);
|
|
629
|
+
const type = { kind: "object", className };
|
|
630
|
+
const value = varRef("value", type, loc);
|
|
631
|
+
functions.push({
|
|
632
|
+
name,
|
|
633
|
+
params: [{ localId: "value", name: "value", type }],
|
|
634
|
+
returnType: DYN,
|
|
635
|
+
locals: [{ id: "value", name: "value", type, mutable: false }],
|
|
636
|
+
body: [
|
|
637
|
+
...branches.get(className).map((child) => ({
|
|
638
|
+
kind: "if",
|
|
639
|
+
cond: { kind: "instanceOf", value, className: child, type: BOOL, loc },
|
|
640
|
+
then: [
|
|
641
|
+
{
|
|
642
|
+
kind: "return",
|
|
643
|
+
value: {
|
|
644
|
+
kind: "dynFrom",
|
|
645
|
+
value: {
|
|
646
|
+
kind: "downcast",
|
|
647
|
+
value,
|
|
648
|
+
type: { kind: "object", className: child },
|
|
649
|
+
loc,
|
|
650
|
+
},
|
|
651
|
+
type: DYN,
|
|
652
|
+
loc,
|
|
653
|
+
},
|
|
654
|
+
loc,
|
|
655
|
+
},
|
|
656
|
+
],
|
|
657
|
+
else_: null,
|
|
658
|
+
loc,
|
|
659
|
+
})),
|
|
660
|
+
{ kind: "return", value: { kind: "dynFrom", value, type: DYN, loc }, loc },
|
|
661
|
+
],
|
|
662
|
+
loc,
|
|
663
|
+
});
|
|
664
|
+
return name;
|
|
665
|
+
};
|
|
666
|
+
const rewrite = (fn) => {
|
|
667
|
+
fn.body = transformStmtList(fn.body, {
|
|
668
|
+
stmt: (statement) => statement,
|
|
669
|
+
expr: (expression) => expression.kind === "dynFrom" &&
|
|
670
|
+
expression.value.type.kind === "object" &&
|
|
671
|
+
branches.has(expression.value.type.className)
|
|
672
|
+
? {
|
|
673
|
+
kind: "call",
|
|
674
|
+
callee: helperFor(expression.value.type.className),
|
|
675
|
+
args: [expression.value],
|
|
676
|
+
type: DYN,
|
|
677
|
+
loc: expression.loc,
|
|
678
|
+
}
|
|
679
|
+
: expression,
|
|
680
|
+
});
|
|
681
|
+
};
|
|
682
|
+
for (const fn of [...functions]) {
|
|
683
|
+
if (fn === normalize || fn.name.startsWith("%dyn.class.boxExact:"))
|
|
684
|
+
continue;
|
|
685
|
+
rewrite(fn);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
583
688
|
/** Record field creation after the dispatch worklist closes, including writes
|
|
584
689
|
* in generated member tables. Native values stay in their slots; the bag
|
|
585
690
|
* owns only their property presence, attributes, and insertion position. */
|
|
@@ -1462,6 +1567,15 @@ export class ClassDynamicDispatch {
|
|
|
1462
1567
|
this.deletedNames = deletedPropertyNames(lowerer.moduleOrder);
|
|
1463
1568
|
if (!root.base?.def.runtime && !fixedFieldFamily(root, this.deletedNames))
|
|
1464
1569
|
track(root);
|
|
1570
|
+
// An Error family's bag records where `name` and `message` were
|
|
1571
|
+
// created, which the error slots do not.
|
|
1572
|
+
if (root.base?.def.name === "%Error") {
|
|
1573
|
+
const order = (current) => {
|
|
1574
|
+
current.def.errorBagOrder = true;
|
|
1575
|
+
current.subclasses.forEach(order);
|
|
1576
|
+
};
|
|
1577
|
+
order(info);
|
|
1578
|
+
}
|
|
1465
1579
|
}
|
|
1466
1580
|
const loc = this.propertyBag.loc;
|
|
1467
1581
|
const { receiver, condition } = this.propertyReceiver(plan, loc);
|