@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.
Files changed (232) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +73 -29
  2. package/dist/backend/llvm/bytes-loop-versions.js +6 -0
  3. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  4. package/dist/backend/llvm/bytes-loop-versions.test.js +7 -2
  5. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  6. package/dist/backend/llvm/debug-info.js +2 -5
  7. package/dist/backend/llvm/debug-info.js.map +1 -1
  8. package/dist/backend/llvm/dyn.d.ts +4 -0
  9. package/dist/backend/llvm/dyn.js +21 -9
  10. package/dist/backend/llvm/dyn.js.map +1 -1
  11. package/dist/backend/llvm/emit-function.js +2 -8
  12. package/dist/backend/llvm/emit-function.js.map +1 -1
  13. package/dist/backend/llvm/emit-module.js +16 -6
  14. package/dist/backend/llvm/emit-module.js.map +1 -1
  15. package/dist/backend/llvm/emitter.d.ts +10 -0
  16. package/dist/backend/llvm/emitter.js +9 -5
  17. package/dist/backend/llvm/emitter.js.map +1 -1
  18. package/dist/backend/llvm/emitter.test.js +11 -2
  19. package/dist/backend/llvm/emitter.test.js.map +1 -1
  20. package/dist/backend/llvm/expr-async.js +11 -13
  21. package/dist/backend/llvm/expr-async.js.map +1 -1
  22. package/dist/backend/llvm/expr-bytes.js +14 -8
  23. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  24. package/dist/backend/llvm/expr-containers.js +14 -0
  25. package/dist/backend/llvm/expr-containers.js.map +1 -1
  26. package/dist/backend/llvm/expr-primitives.js +20 -11
  27. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  28. package/dist/backend/llvm/expr-stream-bridges.js +16 -4
  29. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  30. package/dist/backend/llvm/integer-values.d.ts +5 -0
  31. package/dist/backend/llvm/integer-values.js +27 -3
  32. package/dist/backend/llvm/integer-values.js.map +1 -1
  33. package/dist/backend/llvm/lib-dispatch.js +133 -3
  34. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  35. package/dist/backend/llvm/lib-process.js +37 -1
  36. package/dist/backend/llvm/lib-process.js.map +1 -1
  37. package/dist/backend/llvm/lib-shared.js +21 -0
  38. package/dist/backend/llvm/lib-shared.js.map +1 -1
  39. package/dist/backend/llvm/publish.js +3 -3
  40. package/dist/backend/llvm/publish.js.map +1 -1
  41. package/dist/backend/llvm/reference-effects.js +3 -0
  42. package/dist/backend/llvm/reference-effects.js.map +1 -1
  43. package/dist/backend/llvm/shapes.js +2 -7
  44. package/dist/backend/llvm/shapes.js.map +1 -1
  45. package/dist/backend/llvm/stack-captures.js +1 -5
  46. package/dist/backend/llvm/stack-captures.js.map +1 -1
  47. package/dist/backend/llvm/union-repr.d.ts +4 -3
  48. package/dist/backend/llvm/union-repr.js +6 -5
  49. package/dist/backend/llvm/union-repr.js.map +1 -1
  50. package/dist/backend/llvm/walkers.js +13 -0
  51. package/dist/backend/llvm/walkers.js.map +1 -1
  52. package/dist/backend/native-codegen-core.d.ts +5 -3
  53. package/dist/backend/native-codegen-core.js +13 -6
  54. package/dist/backend/native-codegen-core.js.map +1 -1
  55. package/dist/backend/native-codegen.test.js +6 -4
  56. package/dist/backend/native-codegen.test.js.map +1 -1
  57. package/dist/backend/target-cpu.d.ts +26 -0
  58. package/dist/backend/target-cpu.js +98 -0
  59. package/dist/backend/target-cpu.js.map +1 -0
  60. package/dist/backend/target-cpu.test.d.ts +1 -0
  61. package/dist/backend/target-cpu.test.js +38 -0
  62. package/dist/backend/target-cpu.test.js.map +1 -0
  63. package/dist/cli/command.js +20 -1
  64. package/dist/cli/command.js.map +1 -1
  65. package/dist/cli/usage.d.ts +4 -1
  66. package/dist/cli/usage.js +7 -0
  67. package/dist/cli/usage.js.map +1 -1
  68. package/dist/compile-types.d.ts +7 -0
  69. package/dist/diagnostics/diagnostic.js +1 -1
  70. package/dist/diagnostics/diagnostic.js.map +1 -1
  71. package/dist/executable/executable-cache.d.ts +3 -0
  72. package/dist/executable/executable-cache.js +4 -0
  73. package/dist/executable/executable-cache.js.map +1 -1
  74. package/dist/executable/executable-cache.test.js +2 -0
  75. package/dist/executable/executable-cache.test.js.map +1 -1
  76. package/dist/frontend/decl-projection.js +105 -10
  77. package/dist/frontend/decl-projection.js.map +1 -1
  78. package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
  79. package/dist/frontend/lowering/builtins/async-context.js +62 -3
  80. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  81. package/dist/frontend/lowering/builtins/crypto.js +3 -1
  82. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  83. package/dist/frontend/lowering/builtins/dates.js +4 -1
  84. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  85. package/dist/frontend/lowering/builtins/filesystem-calls.js +3 -3
  86. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  87. package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
  88. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  89. package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
  90. package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
  91. package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
  92. package/dist/frontend/lowering/builtins/module-calls.js +6 -3
  93. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  94. package/dist/frontend/lowering/builtins/promises.d.ts +1 -1
  95. package/dist/frontend/lowering/builtins/promises.js +149 -138
  96. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  97. package/dist/frontend/lowering/call-signatures.js +0 -1
  98. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  99. package/dist/frontend/lowering/cjs-exports-object.js +1 -1
  100. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  101. package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
  102. package/dist/frontend/lowering/cjs-inline-require.js +307 -4
  103. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  104. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +10 -0
  105. package/dist/frontend/lowering/class-dynamic-dispatch.js +114 -0
  106. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  107. package/dist/frontend/lowering/class-method-mutations.js +54 -18
  108. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  109. package/dist/frontend/lowering/class-protocols.d.ts +25 -0
  110. package/dist/frontend/lowering/class-protocols.js +183 -1
  111. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  112. package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
  113. package/dist/frontend/lowering/completion-callbacks.js +146 -0
  114. package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
  115. package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
  116. package/dist/frontend/lowering/containers/array-callbacks.js +7 -6
  117. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  118. package/dist/frontend/lowering/containers/array-construction.js +5 -0
  119. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  120. package/dist/frontend/lowering/containers/array-methods.js +11 -3
  121. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  122. package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
  123. package/dist/frontend/lowering/containers/bytes.js +453 -45
  124. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  125. package/dist/frontend/lowering/date-values.d.ts +11 -0
  126. package/dist/frontend/lowering/date-values.js +207 -0
  127. package/dist/frontend/lowering/date-values.js.map +1 -0
  128. package/dist/frontend/lowering/expressions/array-literals.js +6 -0
  129. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  130. package/dist/frontend/lowering/expressions/binary.js +64 -26
  131. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  132. package/dist/frontend/lowering/expressions/element-access.js +79 -0
  133. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  134. package/dist/frontend/lowering/expressions/identifiers.js +31 -1
  135. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  136. package/dist/frontend/lowering/expressions/property-access.js +56 -0
  137. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  138. package/dist/frontend/lowering/expressions/typeof.js +6 -0
  139. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  140. package/dist/frontend/lowering/expressions/updates.js +17 -0
  141. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  142. package/dist/frontend/lowering/function-returns.js +15 -0
  143. package/dist/frontend/lowering/function-returns.js.map +1 -1
  144. package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
  145. package/dist/frontend/lowering/indexed-unions.js +401 -0
  146. package/dist/frontend/lowering/indexed-unions.js.map +1 -0
  147. package/dist/frontend/lowering/key-order-witness.js +210 -32
  148. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  149. package/dist/frontend/lowering/key-order-witness.test.js +104 -4
  150. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  151. package/dist/frontend/lowering/lower-assert.js +15 -3
  152. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  153. package/dist/frontend/lowering/lower-calls.js +19 -3
  154. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  155. package/dist/frontend/lowering/lower-classes.js +22 -47
  156. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  157. package/dist/frontend/lowering/lower-exprs.js +205 -1
  158. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  159. package/dist/frontend/lowering/lower-generators.js +1 -1
  160. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  161. package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
  162. package/dist/frontend/lowering/lower-inspect.js +35 -11
  163. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  164. package/dist/frontend/lowering/lower-modules.js +21 -5
  165. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  166. package/dist/frontend/lowering/lower-stmts.js +100 -34
  167. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  168. package/dist/frontend/lowering/lowerer.d.ts +30 -2
  169. package/dist/frontend/lowering/lowerer.js +68 -7
  170. package/dist/frontend/lowering/lowerer.js.map +1 -1
  171. package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
  172. package/dist/frontend/lowering/object-factory-new.js +20 -6
  173. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  174. package/dist/frontend/lowering/overload-choice.d.ts +33 -0
  175. package/dist/frontend/lowering/overload-choice.js +190 -0
  176. package/dist/frontend/lowering/overload-choice.js.map +1 -0
  177. package/dist/frontend/lowering/surfaces.js +55 -2
  178. package/dist/frontend/lowering/surfaces.js.map +1 -1
  179. package/dist/frontend/pipeline.js +1 -1
  180. package/dist/frontend/pipeline.js.map +1 -1
  181. package/dist/frontend/program-analysis.d.ts +5 -1
  182. package/dist/frontend/program-analysis.js +5 -0
  183. package/dist/frontend/program-analysis.js.map +1 -1
  184. package/dist/frontend/program.d.ts +13 -5
  185. package/dist/frontend/program.js +197 -14
  186. package/dist/frontend/program.js.map +1 -1
  187. package/dist/frontend/ts7/semantic-model.d.ts +3 -0
  188. package/dist/frontend/ts7/semantic-model.js +5 -0
  189. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  190. package/dist/frontend/ts7/semantic-model.test.js +6 -1
  191. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  192. package/dist/frontend/ts7/semantic-types.d.ts +1 -1
  193. package/dist/frontend/ts7/semantic-types.js +1 -1
  194. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  195. package/dist/frontend/type-mapper.js +45 -16
  196. package/dist/frontend/type-mapper.js.map +1 -1
  197. package/dist/index.js +12 -0
  198. package/dist/index.js.map +1 -1
  199. package/dist/ir/builtin-effects.js +8 -0
  200. package/dist/ir/builtin-effects.js.map +1 -1
  201. package/dist/ir/builtin-signatures.d.ts +1 -1
  202. package/dist/ir/builtin-signatures.js +56 -0
  203. package/dist/ir/builtin-signatures.js.map +1 -1
  204. package/dist/ir/int32-slots.js +7 -0
  205. package/dist/ir/int32-slots.js.map +1 -1
  206. package/dist/ir/int32-slots.test.js +33 -0
  207. package/dist/ir/int32-slots.test.js.map +1 -1
  208. package/dist/ir/integer-loops.js +14 -4
  209. package/dist/ir/integer-loops.js.map +1 -1
  210. package/dist/ir/ir.d.ts +13 -3
  211. package/dist/ir/ir.js +19 -5
  212. package/dist/ir/ir.js.map +1 -1
  213. package/dist/ir/ir.test.js +2 -1
  214. package/dist/ir/ir.test.js.map +1 -1
  215. package/dist/ir/js-ic.d.ts +2 -15
  216. package/dist/ir/js-ic.js +11 -79
  217. package/dist/ir/js-ic.js.map +1 -1
  218. package/dist/ir/js-ic.test.js +0 -142
  219. package/dist/ir/js-ic.test.js.map +1 -1
  220. package/dist/ir/runtime-features.js +25 -1
  221. package/dist/ir/runtime-features.js.map +1 -1
  222. package/dist/ir/validate.js +46 -5
  223. package/dist/ir/validate.js.map +1 -1
  224. package/dist/library/ir-policy.js +1 -0
  225. package/dist/library/ir-policy.js.map +1 -1
  226. package/dist/native/prepare.d.ts +1 -1
  227. package/dist/native/prepare.js +11 -1
  228. package/dist/native/prepare.js.map +1 -1
  229. package/dist/native/prepare.test.js +18 -2
  230. package/dist/native/prepare.test.js.map +1 -1
  231. package/package.json +20 -20
  232. 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);