@scriptc/compiler 0.0.9 → 0.0.10

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 (62) hide show
  1. package/dist/backend/emission/emit-exprs.js +136 -12
  2. package/dist/backend/emission/emit-exprs.js.map +1 -1
  3. package/dist/backend/emission/emit-walkers.js +29 -2
  4. package/dist/backend/emission/emit-walkers.js.map +1 -1
  5. package/dist/backend/llvm/dyn.d.ts +1 -0
  6. package/dist/backend/llvm/dyn.js +83 -1
  7. package/dist/backend/llvm/dyn.js.map +1 -1
  8. package/dist/backend/llvm/emitter.js +151 -9
  9. package/dist/backend/llvm/emitter.js.map +1 -1
  10. package/dist/diagnostics/diagnostic.d.ts +21 -7
  11. package/dist/diagnostics/diagnostic.js +35 -16
  12. package/dist/diagnostics/diagnostic.js.map +1 -1
  13. package/dist/diagnostics/render.js +8 -0
  14. package/dist/diagnostics/render.js.map +1 -1
  15. package/dist/frontend/lowering/lib-boundary.js +11 -1
  16. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  17. package/dist/frontend/lowering/lower-builtins.d.ts +13 -0
  18. package/dist/frontend/lowering/lower-builtins.js +146 -1
  19. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  20. package/dist/frontend/lowering/lower-calls.d.ts +41 -0
  21. package/dist/frontend/lowering/lower-calls.js +524 -10
  22. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  23. package/dist/frontend/lowering/lower-containers.d.ts +17 -0
  24. package/dist/frontend/lowering/lower-containers.js +193 -10
  25. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  26. package/dist/frontend/lowering/lower-dgram.js +92 -17
  27. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  28. package/dist/frontend/lowering/lower-exprs.js +179 -10
  29. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  30. package/dist/frontend/lowering/lower-modules.js +33 -2
  31. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  32. package/dist/frontend/lowering/lower-namespaces.d.ts +25 -11
  33. package/dist/frontend/lowering/lower-namespaces.js +50 -15
  34. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  35. package/dist/frontend/lowering/lower-server.js +211 -4
  36. package/dist/frontend/lowering/lower-server.js.map +1 -1
  37. package/dist/frontend/lowering/lower-stmts.d.ts +1 -5
  38. package/dist/frontend/lowering/lower-stmts.js +216 -7
  39. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  40. package/dist/frontend/lowering/lower-stream.js +65 -4
  41. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  42. package/dist/frontend/lowering/lowerer.d.ts +36 -1
  43. package/dist/frontend/lowering/lowerer.js +106 -3
  44. package/dist/frontend/lowering/lowerer.js.map +1 -1
  45. package/dist/frontend/types.d.ts +13 -0
  46. package/dist/frontend/types.js +84 -7
  47. package/dist/frontend/types.js.map +1 -1
  48. package/dist/index.js +20 -8
  49. package/dist/index.js.map +1 -1
  50. package/dist/ir/nodes.d.ts +99 -5
  51. package/dist/ir/nodes.js +44 -3
  52. package/dist/ir/nodes.js.map +1 -1
  53. package/dist/ir/validate.js +53 -3
  54. package/dist/ir/validate.js.map +1 -1
  55. package/dist/library/fence-eval.d.ts +77 -0
  56. package/dist/library/fence-eval.js +385 -0
  57. package/dist/library/fence-eval.js.map +1 -0
  58. package/dist/library/profile.d.ts +11 -1
  59. package/dist/library/profile.js +102 -18
  60. package/dist/library/profile.js.map +1 -1
  61. package/package.json +2 -2
  62. package/surface-manifest.json +1 -1
@@ -8,8 +8,9 @@
8
8
  * (portless's mDNS publishes through dns-sd/avahi child processes, not
9
9
  * dgram multicast); its members fence with a named hint. */
10
10
  import * as ts from "../ts7/adapter.js";
11
- import { locOf } from "../program.js";
12
- import { BOOL, DGRAMSOCK_T, F64, STRING, VOID } from "../../ir/nodes.js";
11
+ import { ladderFenceExpr } from "./lowerer.js";
12
+ import { isJsSourceFile, locOf } from "../program.js";
13
+ import { BOOL, canBoxFuncIntoDyn, DGRAMSOCK_T, DYN, F64, funcOf, STRING, UNDEFINED_T, VOID } from "../../ir/nodes.js";
13
14
  import { DNS_LOOKUP_DOCUMENTED_OPTIONS, fenceOrDropOptionKey } from "./surfaces.js";
14
15
  const DGRAM_SURFACE_HINT = "bind, connect, send, address, close, unref/ref, and on/once of " +
15
16
  "message/listening/close/connect/error are the supported dgram.Socket members";
@@ -30,7 +31,13 @@ function requireStatementPosition(L, call, what) {
30
31
  * satisfying `paramOk` (indexed). The lower-server helper's shape,
31
32
  * re-stated here so the spoke stays self-contained. */
32
33
  function lowerCallbackArg(L, node, what, maxParams, paramOk, paramHint) {
33
- const cb = L.lowerExpr(node);
34
+ let cb = L.lowerExpr(node);
35
+ // A checked-dynamic callback (test/common's mustCall wrapper — a dyn
36
+ // value): the zero-parameter slots adapt through the dynCheck function
37
+ // boundary, the lower-server listen-callback precedent.
38
+ if (cb.type.kind === "dyn" && maxParams === 0) {
39
+ cb = { kind: "dynCheck", value: cb, type: funcOf([], VOID), loc: locOf(node) };
40
+ }
34
41
  if (cb.type.kind !== "func" || cb.type.params.length > maxParams) {
35
42
  L.unsupported("SC1090", node, `${what} with more than ${maxParams} parameter${maxParams === 1 ? "" : "s"} (${paramHint})`);
36
43
  }
@@ -123,6 +130,29 @@ export function lowerDgramDnsModuleCall(L, expr, bi, loc) {
123
130
  else if (name === "reuseAddr") {
124
131
  reuseAddr = L.lowerExprExpecting(prop.initializer, BOOL);
125
132
  }
133
+ else if (name === "signal" && isJsSourceFile(expr.getSourceFile())) {
134
+ // A provably-non-AbortSignal signal (the invalid-input probes:
135
+ // strings, numbers, plain records) throws Node's
136
+ // validateAbortSignal ladder; plausible signal values keep the
137
+ // fence — abort-driven close has no lowering yet.
138
+ const raw = L.lowerExpr(prop.initializer);
139
+ const provablyNot = raw.type.kind === "string" || raw.type.kind === "f64" ||
140
+ raw.type.kind === "bool" || raw.type.kind === "record" || raw.type.kind === "array";
141
+ if (provablyNot && L.dynConvertible(raw.type)) {
142
+ return {
143
+ kind: "libCall",
144
+ fn: "error.propTypeThrow",
145
+ args: [
146
+ { kind: "strLit", value: "options.signal", type: STRING, loc },
147
+ { kind: "strLit", value: "an instance of AbortSignal", type: STRING, loc },
148
+ { kind: "dynFrom", value: raw, type: DYN, loc },
149
+ ],
150
+ type: DGRAMSOCK_T,
151
+ loc,
152
+ };
153
+ }
154
+ L.noLowering(`createSocket option 'signal'`, prop, "abort-driven close has no lowering yet — type and reuseAddr are the supported options");
155
+ }
126
156
  else {
127
157
  L.noLowering(`createSocket option '${name}'`, prop, "type and reuseAddr are the supported options");
128
158
  }
@@ -235,22 +265,67 @@ export function lowerDgramMethodCall(L, call, access) {
235
265
  }
236
266
  if (name === "send") {
237
267
  requireStatementPosition(L, call, "socket.send(...)");
238
- // send(msg, port, address) — one datagram to an explicit destination.
239
- // The connected send and callback forms have no lowering yet.
240
- if (args.length !== 3) {
241
- L.noLowering(`send with ${args.length} arguments`, call, "the supported form is send(msg, port, address) — one string or Buffer datagram");
242
- }
243
- const receiver = L.lowerExpr(access.expression);
244
- const data = L.lowerExpr(args[0]);
245
- const port = L.lowerExprExpecting(args[1], F64);
246
- const host = L.lowerExprExpecting(args[2], STRING);
247
- if (data.type.kind === "string") {
248
- return { kind: "libCall", fn: "dgram.sendStr", args: [receiver, data, port, host], type: VOID, loc };
268
+ // send(msg, port, address) — one datagram to an explicit destination
269
+ // (the static fast path). Every OTHER shape in a JS source rides the
270
+ // checked-dynamic ladder (dgram.sendChk): Node's signature shuffle,
271
+ // slice bounds, list/type contracts, port/address validation, and
272
+ // the connected-state errors — with the compiler-rendered fence as
273
+ // the post-validation tail for the callback/list/connected forms.
274
+ const staticShape = args.length === 3 && !args.some(ts.isSpreadElement) &&
275
+ (() => {
276
+ const dataT = L.mapTypeOf(L.typeOf(args[0]));
277
+ const portT = L.mapTypeOf(L.typeOf(args[1]));
278
+ const hostT = L.mapTypeOf(L.typeOf(args[2]));
279
+ return (dataT?.kind === "string" || (dataT?.kind === "bytes" && dataT.elem === "u8")) &&
280
+ portT?.kind === "f64" && hostT?.kind === "string";
281
+ })();
282
+ if (staticShape) {
283
+ const receiver = L.lowerExpr(access.expression);
284
+ const data = L.lowerExpr(args[0]);
285
+ const port = L.lowerExprExpecting(args[1], F64);
286
+ const host = L.lowerExprExpecting(args[2], STRING);
287
+ const fn = data.type.kind === "string" ? "dgram.sendStr" : "dgram.sendBytes";
288
+ return { kind: "libCall", fn, args: [receiver, data, port, host], type: VOID, loc };
249
289
  }
250
- if (data.type.kind === "bytes" && data.type.elem === "u8") {
251
- return { kind: "libCall", fn: "dgram.sendBytes", args: [receiver, data, port, host], type: VOID, loc };
290
+ if (isJsSourceFile(call.getSourceFile()) && args.length <= 5 && !args.some(ts.isSpreadElement)) {
291
+ const receiver = L.lowerExpr(access.expression);
292
+ const slots = [];
293
+ let ok = true;
294
+ for (let i = 0; i < 5; i++) {
295
+ const n = args[i];
296
+ if (!n) {
297
+ slots.push({
298
+ kind: "dynFrom",
299
+ value: { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc },
300
+ type: DYN,
301
+ loc,
302
+ });
303
+ continue;
304
+ }
305
+ const raw = L.lowerExpr(n);
306
+ if (raw.type.kind === "dyn")
307
+ slots.push(raw);
308
+ else if (raw.kind === "unitLit" || L.dynConvertible(raw.type) ||
309
+ (raw.type.kind === "func" &&
310
+ canBoxFuncIntoDyn(raw.type, (id) => L.shapes.get(id), (id) => L.unions.get(id)))) {
311
+ slots.push({ kind: "dynFrom", value: raw, type: DYN, loc });
312
+ }
313
+ else {
314
+ ok = false;
315
+ break;
316
+ }
317
+ }
318
+ if (ok) {
319
+ return {
320
+ kind: "libCall",
321
+ fn: "dgram.sendChk",
322
+ args: [receiver, ...slots, ladderFenceExpr(L, `send in this form`, call, "send(msg, port, address) — one string or Buffer datagram — is the lowered form; callback, list, and connected sends have no lowering yet")],
323
+ type: VOID,
324
+ loc,
325
+ };
326
+ }
252
327
  }
253
- L.noLowering(`send of '${L.fmt(data.type)}' data`, args[0] ?? call, "send takes one string or one Uint8Array/Buffer datagram (narrow unions first)");
328
+ L.noLowering(`send with ${args.length} arguments`, call, "the supported form is send(msg, port, address) — one string or Buffer datagram");
254
329
  }
255
330
  if (name === "address") {
256
331
  if (args.length !== 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"lower-dgram.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-dgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lower-dgram.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-dgram.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { BOOL, CAUGHT, DYN, DYN_HANDLE_KINDS, F64, JSVAL, NULL_T, REF_TRUTHY_KIN
10
10
  import { cjsClassExprWholeExportOf, cjsExportAssignmentOf, cjsExportDiscardReason, isCjsExportTableLiteral, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, isNodeEsmFile, locOf } from "../program.js";
11
11
  import { ARRAY_METHODS, builtinConstLit, builtinFenceHintOf, builtinModuleConstOf, builtinModuleFnOf, ISLAND_SURFACE, isChildSurfaceMember, MAP_METHODS, NARROW_FIRST, SET_METHODS, STR_METHODS, UNSUPPORTED_EXPR, sideEffectFreeOptionValue, stdlibGlobalNameOf } from "./surfaces.js";
12
12
  import { blockedBindingUseDiag, recordShapeMismatchDiag, requiresDynamicPackageDiag, unsupportedDiag } from "../../diagnostics/diagnostic.js";
13
- import { PoisonError, dynUndefinedExpr, jsFuncNameOf, neverTaintedJsType, own } from "./lowerer.js";
13
+ import { PoisonError, dynUndefinedExpr, jsFuncNameOf, neverTaintedJsType, nodeThrowExpr, own } from "./lowerer.js";
14
14
  import { lowerIndexMergeHelper, lowerNpmStaticSafeIndexRead, strCharsCall } from "./lower-containers.js";
15
15
  import { npmStaticPackageOfPath } from "../npm-static.js";
16
16
  import { unsupportedModuleFeatureOf } from "../shared.js";
@@ -19,7 +19,7 @@ import { ambientNsRootOf, ambientUndefReadType, ambientUndefVarRootOf, ambientUn
19
19
  import { expandoMemberRead, expandoWritableTarget } from "./lower-expando.js";
20
20
  import { lowerSocketInstanceOf } from "./lower-server.js";
21
21
  import { findGenericMethodOn, lowerStaticFieldRead } from "./lower-classes.js";
22
- import { bindingNeverReassigned, implicitMonoFile, lowerTaggedTemplate, objLitGenericFnInfoOf, objLitGenericFnNodeOf, requireObjLitGenericReceiver } from "./lower-calls.js";
22
+ import { bindingNeverReassigned, implicitMonoFile, lowerTaggedTemplate, nullishGenericBindingUnitOf, objLitGenericFnInfoOf, objLitGenericFnNodeOf, requireObjLitGenericReceiver } from "./lower-calls.js";
23
23
  import { mixinFnOfCallee } from "./lower-mixins.js";
24
24
  import { isConstAssertionTypeNode, isGenericCallableMemberType, underConstAssertion, unitOnlyUnion } from "../types.js";
25
25
  import { lowerYield } from "./lower-generators.js";
@@ -796,6 +796,18 @@ function lowerExprInner(L, expr) {
796
796
  return nsUndefRead(L, expr.text, expr, t);
797
797
  }
798
798
  }
799
+ // A read of a TRAP binding — a declaration whose own initializer
800
+ // provably threw (module init unwound there), so this reference can
801
+ // never execute: any lowering is sound, and the trap keeps the
802
+ // shape honest. Typed by the use site when it maps, the F64 dummy
803
+ // otherwise (never observed — never even reached).
804
+ {
805
+ const sym = L.resolveValueSymbol(expr);
806
+ if (sym !== null && L.trapBindings.has(sym)) {
807
+ const t = ambientUndefReadType(L, expr) ?? contextualUndefReadType(L, expr) ?? F64;
808
+ return nsUndefRead(L, expr.text, expr, t);
809
+ }
810
+ }
799
811
  // A program CLASS NAME as a value: the classRef over the class's
800
812
  // immortal class object (member accesses and construction never
801
813
  // reach here — their hooks claim the property/new forms first).
@@ -1406,12 +1418,25 @@ function lowerExprInner(L, expr) {
1406
1418
  // read (ARR answers length; everything else JS's own-property
1407
1419
  // answer). Mapped receivers keep the fence-first order: their
1408
1420
  // members' gaps are real surface gaps ([1,2].entries), not
1409
- // representation artifacts.
1410
- if (isJsSourceFile(expr.getSourceFile()) &&
1421
+ // representation artifacts. `.length` on a receiver whose checker
1422
+ // ARRAY type lowers to the checked-dynamic representation —
1423
+ // `unknown[]`, the collapsed `(string | object)[]`, and the `any[]`
1424
+ // an Array.isArray guard narrows a collapsed union to — is the DOM
1425
+ // array's OWN length (a keyed read the ARR kind answers exactly),
1426
+ // never an `Array.prototype` surface gap; both source languages.
1427
+ // Prototype-method VALUE reads (`ps.map` unparenthesized) keep the
1428
+ // fence-first order: a stored-member undefined would mis-answer
1429
+ // them, and calls dispatch through the dyn method machinery
1430
+ // instead.
1431
+ if ((isJsSourceFile(expr.getSourceFile()) &&
1411
1432
  (L.mapTypeOf(L.typeOf(expr.expression)) === null ||
1412
1433
  // A never-tainted receiver type maps (never rides as f64) but
1413
1434
  // its VALUE lowered checked-dynamic — same DOM read.
1414
- neverTaintedJsType(L, expr.expression, L.typeOf(expr.expression)))) {
1435
+ neverTaintedJsType(L, expr.expression, L.typeOf(expr.expression)))) ||
1436
+ (expr.name.text === "length" &&
1437
+ (L.checkerAnyArray(expr.expression) ||
1438
+ (L.checker.isArrayType(L.typeOf(expr.expression)) &&
1439
+ L.mapTypeOf(L.typeOf(expr.expression))?.kind === "dyn")))) {
1415
1440
  const recv = L.lowerExpr(expr.expression);
1416
1441
  if (recv.type.kind === "dyn") {
1417
1442
  const key = { kind: "strLit", value: expr.name.text, type: STRING, loc: locOf(expr.name) };
@@ -1479,6 +1504,17 @@ function lowerExprInner(L, expr) {
1479
1504
  return nsUndefRead(L, ambientRoot.text, expr, t);
1480
1505
  }
1481
1506
  }
1507
+ // A member read through a NULLISH generic binding (`const i: I<A &
1508
+ // B> = null as any; const _i: I<A> = i.something` — the receiver
1509
+ // provably holds null/undefined forever): the read throws Node's
1510
+ // exact TypeError at the access.
1511
+ if (ts.isIdentifier(expr.expression) && expr.questionDotToken === undefined) {
1512
+ const unit = nullishGenericBindingUnitOf(L, L.resolveValueSymbol(expr.expression));
1513
+ if (unit !== null) {
1514
+ const t = ambientUndefReadType(L, expr) ?? contextualUndefReadType(L, expr) ?? F64;
1515
+ return nodeThrowExpr(1, "", `Cannot read properties of ${unit} (reading '${expr.name.text}')`, t, loc);
1516
+ }
1517
+ }
1482
1518
  // The lib fence's PROPERTY chokepoint: a stdlib-declared member that
1483
1519
  // no lowering above claimed ([1,2].entries, Math.SQRT2, Promise.all,
1484
1520
  // re.exec as a value, ...) reports SC2020 here.
@@ -2154,7 +2190,18 @@ function pureCondExpr(e) {
2154
2190
  export function lowerNullishCoalesce(L, expr, loc) {
2155
2191
  const left = L.lowerExpr(expr.left);
2156
2192
  if (left.type.kind === "dyn") {
2157
- L.unsupported("SC1100", expr, "nullish coalescing on 'unknown' values");
2193
+ // `a ?? b` on a CHECKED-DYNAMIC left: the deciding test is the
2194
+ // runtime kind (scr_dyn_is_nullish — UNDEF/NULL take the default;
2195
+ // a wrapped island value routes to the engine's test, defensively:
2196
+ // the wrap constructor scalar-normalizes engine null/undefined
2197
+ // away). Both sides live in the DOM — the right converts through
2198
+ // the usual boundary and evaluates lazily in its branch; a default
2199
+ // with no dyn representation keeps the fence.
2200
+ const right = L.coerceToExpected(L.lowerExpr(expr.right), DYN);
2201
+ if (right.type.kind !== "dyn") {
2202
+ L.unsupported("SC1100", expr, "nullish coalescing on 'unknown' values against defaults with no dynamic representation");
2203
+ }
2204
+ return { kind: "nullish", left, right, type: DYN, loc };
2158
2205
  }
2159
2206
  if (left.type.kind === "jsval") {
2160
2207
  // `a ?? b` on an ISLAND value: the engine's own nullish test — the
@@ -2988,6 +3035,24 @@ export function lowerIntrinsicProperty(L, expr) {
2988
3035
  return read;
2989
3036
  return { kind: "jsExit", value: read, type: F64, loc: locOf(expr) };
2990
3037
  }
3038
+ // A CHECKED-DYNAMIC value behind an array-typed checker spelling
3039
+ // (`Object.keys(u).length` — the dyn walk answers a DOM array while
3040
+ // tsc spells string[]): the runtime-world dispatch — a DOM keyed
3041
+ // read validated into the declared number (a lying length throws
3042
+ // the catchable TypeError, the dynCheck stance).
3043
+ if (receiver.type.kind === "dyn") {
3044
+ const read = {
3045
+ kind: "dynKeyGet",
3046
+ key: { kind: "strLit", value: "length", type: STRING, loc: locOf(expr) },
3047
+ ...(expr.questionDotToken ? { optional: true } : {}),
3048
+ value: receiver,
3049
+ type: DYN,
3050
+ loc: locOf(expr),
3051
+ };
3052
+ if (expr.questionDotToken)
3053
+ return read;
3054
+ return { kind: "dynCheck", value: read, type: F64, loc: locOf(expr) };
3055
+ }
2991
3056
  return kind === "string"
2992
3057
  ? { kind: "strIntrinsic", method: "length", receiver, args: [], type: F64, loc: locOf(expr) }
2993
3058
  : { kind: "arrIntrinsic", method: "length", receiver, args: [], type: F64, loc: locOf(expr) };
@@ -3148,8 +3213,12 @@ export function lowerArrayLiteral(L, expr, expected) {
3148
3213
  // []) builds as a DOM ARRAY — one dyn value whose elements each
3149
3214
  // convert through the usual boundary (dynFrom's JSON-safe domain);
3150
3215
  // an element that cannot convert fences per element. length/index
3151
- // reads and dynamic consumers ride the keyed-DOM paths.
3152
- if (isJsSourceFile(expr.getSourceFile())) {
3216
+ // reads and dynamic consumers ride the keyed-DOM paths. TS literals
3217
+ // take the same build when the slot ITSELF is checked-dynamic — an
3218
+ // `unknown[]` annotation or a collapsed `(string | object)[]` maps
3219
+ // to DYN wholesale now (mapType's dyn-element array rule), so the
3220
+ // literal IS the DOM array.
3221
+ if (isJsSourceFile(expr.getSourceFile()) || mapped?.kind === "dyn") {
3153
3222
  const elems = expr.elements.map((el) => {
3154
3223
  if (ts.isSpreadElement(el)) {
3155
3224
  L.unsupported("SC1090", el, "spread elements in a dynamic (unknown[]) array literal");
@@ -5053,7 +5122,24 @@ export function lowerElementAccess(L, expr) {
5053
5122
  ? null
5054
5123
  : L.mapTypeOf(L.typeOf(expr.expression));
5055
5124
  if (receiverIr?.kind === "jsval") {
5056
- return islandElementRead(L, expr, L.lowerExpr(expr.expression));
5125
+ // Dispatch follows the RUNTIME world (383(d)): a checker-'any'
5126
+ // receiver whose value LOWERED checked-dynamic (`bag.list[0]` where
5127
+ // bag.list is a routed keyed read off a wrapped island value) takes
5128
+ // the DOM keyed read below — the routed JSVAL arm reads the real
5129
+ // engine element; a jsval-lowered receiver keeps the island read.
5130
+ const recv = L.lowerExpr(expr.expression);
5131
+ if (recv.type.kind !== "dyn")
5132
+ return islandElementRead(L, expr, recv);
5133
+ const rawKey = L.lowerExpr(expr.argumentExpression);
5134
+ const key = rawKey.type.kind === "string"
5135
+ ? rawKey
5136
+ : rawKey.type.kind === "f64"
5137
+ ? { kind: "toString", operand: rawKey, type: STRING, loc: rawKey.loc }
5138
+ : null;
5139
+ if (key) {
5140
+ const opt = chainGuardedByQuestionDot(expr.expression);
5141
+ return L.maybeNarrow({ kind: "dynKeyGet", key, ...(opt ? { optional: true } : {}), value: recv, type: DYN, loc: locOf(expr) }, expr);
5142
+ }
5057
5143
  }
5058
5144
  // Typed-array element read `b[i]` — like arrayGet with a scalar
5059
5145
  // result; any invalid index traps (the array discipline; JS would
@@ -5131,9 +5217,12 @@ export function lowerElementAccess(L, expr) {
5131
5217
  const obj = L.lowerExpr(expr.expression);
5132
5218
  if (obj.type.kind === "dyn") {
5133
5219
  const rawKey = L.lowerExpr(expr.argumentExpression);
5220
+ // Number, bool, and DYN keys stringify (ToPropertyKey) — the
5221
+ // dyn-keyed read `catchWarning[warning.name]` where the property
5222
+ // chain itself lowered dyn.
5134
5223
  const key = rawKey.type.kind === "string"
5135
5224
  ? rawKey
5136
- : rawKey.type.kind === "f64"
5225
+ : rawKey.type.kind === "f64" || rawKey.type.kind === "bool" || rawKey.type.kind === "dyn"
5137
5226
  ? { kind: "toString", operand: rawKey, type: STRING, loc: rawKey.loc }
5138
5227
  : null;
5139
5228
  if (key) {
@@ -5499,11 +5588,58 @@ export function lowerElementWrite(L, expr) {
5499
5588
  const receiverIr = L.mapTypeOf(L.typeOf(target.expression));
5500
5589
  if (receiverIr?.kind === "jsval") {
5501
5590
  const obj = L.lowerExpr(target.expression);
5591
+ // Dispatch follows the RUNTIME world (383(d)): a checker-'any'
5592
+ // receiver whose value LOWERED checked-dynamic takes the DOM keyed
5593
+ // write — the routed JSVAL arm lands it on the real engine object.
5594
+ if (obj.type.kind === "dyn") {
5595
+ const loc = locOf(expr);
5596
+ const rawKey = L.lowerExpr(target.argumentExpression);
5597
+ const key = rawKey.type.kind === "f64" || rawKey.type.kind === "bool" || rawKey.type.kind === "dyn"
5598
+ ? { kind: "toString", operand: rawKey, type: STRING, loc: rawKey.loc }
5599
+ : rawKey;
5600
+ if (key.type.kind !== "string") {
5601
+ L.unsupported("SC1090", target.argumentExpression, `'${L.fmt(key.type)}'-typed keys in keyed writes through 'unknown' values`);
5602
+ }
5603
+ const value = L.coerceToExpected(L.lowerExpr(expr.right), DYN);
5604
+ if (value.type.kind !== "dyn") {
5605
+ L.unsupported("SC1100", expr.right, `assigning '${L.fmt(value.type)}' values through 'unknown' receivers`);
5606
+ }
5607
+ return {
5608
+ kind: "exprStmt",
5609
+ expr: { kind: "libCall", fn: "dyn.keySet", args: [obj, key, value], type: VOID, loc },
5610
+ loc,
5611
+ };
5612
+ }
5502
5613
  const key = L.jsvalIn(L.lowerExpr(target.argumentExpression), target.argumentExpression);
5503
5614
  const value = L.jsvalIn(L.lowerExpr(expr.right), expr.right);
5504
5615
  const loc = locOf(expr);
5505
5616
  return { kind: "exprStmt", expr: { kind: "jsOp", op: "setIdx", args: [obj, key, value], type: VOID, loc }, loc };
5506
5617
  }
5618
+ // A checked-dynamic receiver TYPE (`unknown[]` and the collapsed
5619
+ // `(string | object)[]` map to DYN wholesale now): the DOM keyed
5620
+ // write — dyn.keySet. Number keys canonicalize through the JS-exact
5621
+ // formatter; ARR receivers take canonical index keys as element
5622
+ // set/extend (undefined-hole padding, JS's length growth exactly),
5623
+ // OBJ receivers set the member, and the runtime throws Node's
5624
+ // TypeErrors on every other kind. Values convert into the DOM;
5625
+ // unconvertible ones fence per site (the dynFrom stance).
5626
+ if (receiverIr?.kind === "dyn") {
5627
+ const obj = L.lowerExpr(target.expression);
5628
+ if (obj.type.kind === "dyn") {
5629
+ const loc = locOf(expr);
5630
+ let key = L.lowerExpr(target.argumentExpression);
5631
+ if (key.type.kind === "f64")
5632
+ key = L.ensureString(key, target.argumentExpression);
5633
+ if (key.type.kind !== "string") {
5634
+ L.unsupported("SC1090", target.argumentExpression, "indexing with non-string or non-number keys");
5635
+ }
5636
+ const value = L.coerceToExpected(L.lowerExpr(expr.right), DYN);
5637
+ if (value.type.kind !== "dyn") {
5638
+ L.unsupported("SC1101", expr.right, `storing '${L.fmt(value.type)}' values in a checked-dynamic array (the value cannot convert into the DOM)`);
5639
+ }
5640
+ return { kind: "exprStmt", expr: { kind: "libCall", fn: "dyn.keySet", args: [obj, key, value], type: VOID, loc }, loc };
5641
+ }
5642
+ }
5507
5643
  // Typed-array element write `b[i] = v` — bytesSet: the value is an f64
5508
5644
  // the runtime coerces JS-exactly; invalid indices trap (no appends —
5509
5645
  // typed arrays are fixed-length; JS would ignore the write).
@@ -5680,6 +5816,39 @@ export function lowerElementWrite(L, expr) {
5680
5816
  };
5681
5817
  }
5682
5818
  }
5819
+ // Keyed write `d[k] = v` on a CHECKED-DYNAMIC receiver (a JS `any`
5820
+ // dictionary — the Object.create(null) memo-table idiom writes
5821
+ // `result[key] = value`): dyn.keySet, exactly the record-mapped dyn
5822
+ // arm above — later writes win in insertion order, number keys
5823
+ // canonicalize through the JS-exact formatter (ToPropertyKey's string
5824
+ // side), index keys on DOM arrays set/extend elements, and non-object
5825
+ // receivers throw Node's TypeErrors at runtime. An UNMAPPED checker
5826
+ // type (static `any` — mapTypeOf answers null without --dynamic)
5827
+ // probes the receiver's own lowered world: a dyn value takes the same
5828
+ // write, anything else falls through to the fences.
5829
+ if (receiverIr?.kind === "dyn" || receiverIr === null) {
5830
+ const obj = receiverIr !== null ? L.lowerExpr(target.expression) : probeLower(L, target.expression);
5831
+ if (obj !== null && obj.type.kind === "dyn") {
5832
+ const loc = locOf(expr);
5833
+ const litKey = recordKeyLiteralText(target.argumentExpression);
5834
+ let key = litKey !== null
5835
+ ? { kind: "strLit", value: litKey, type: STRING, loc: locOf(target.argumentExpression) }
5836
+ : L.lowerExpr(target.argumentExpression);
5837
+ if (key.type.kind === "f64")
5838
+ key = L.ensureString(key, target.argumentExpression);
5839
+ if (key.type.kind === "bool" || key.type.kind === "dyn") {
5840
+ key = { kind: "toString", operand: key, type: STRING, loc: locOf(target.argumentExpression) };
5841
+ }
5842
+ if (key.type.kind !== "string") {
5843
+ L.unsupported("SC1090", target.argumentExpression, "indexing checked-dynamic values with non-string or non-number keys");
5844
+ }
5845
+ const value = L.coerceToExpected(L.lowerExpr(expr.right), DYN);
5846
+ if (value.type.kind !== "dyn") {
5847
+ L.unsupported("SC1101", expr.right, `storing '${L.fmt(value.type)}' values in a checked-dynamic object (the value cannot convert into the DOM)`);
5848
+ }
5849
+ return { kind: "exprStmt", expr: { kind: "libCall", fn: "dyn.keySet", args: [obj, key, value], type: VOID, loc }, loc };
5850
+ }
5851
+ }
5683
5852
  if (receiverIr?.kind !== "array") {
5684
5853
  L.unsupported("SC1090", target, "assignment to non-array elements");
5685
5854
  }