parseman 0.48.0 → 0.49.0

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 (45) hide show
  1. package/dist/analysis/diagnostics.js +158 -51
  2. package/dist/analysis/diagnostics.js.map +2 -2
  3. package/dist/cli/index.js +160 -52
  4. package/dist/cli/index.js.map +2 -2
  5. package/dist/combinators/choice.d.ts.map +1 -1
  6. package/dist/compiler/ir-serialize.d.ts.map +1 -1
  7. package/dist/compiler/linker.d.ts.map +1 -1
  8. package/dist/index.js +169 -55
  9. package/dist/index.js.map +2 -2
  10. package/dist/language-service/index.js.map +1 -1
  11. package/dist/plugin/direct-builder-static.d.ts +20 -0
  12. package/dist/plugin/direct-builder-static.d.ts.map +1 -1
  13. package/dist/plugin/evaluator.d.ts +13 -0
  14. package/dist/plugin/evaluator.d.ts.map +1 -1
  15. package/dist/plugin/index.d.ts.map +1 -1
  16. package/dist/plugin/index.js +365 -71
  17. package/dist/plugin/index.js.map +2 -2
  18. package/dist/spec/index.js +12 -2
  19. package/dist/spec/index.js.map +2 -2
  20. package/dist/table/assemble.d.ts.map +1 -1
  21. package/dist/table/emit-assembly.d.ts.map +1 -1
  22. package/dist/table/encode.d.ts.map +1 -1
  23. package/dist/table/exec.d.ts.map +1 -1
  24. package/dist/table/index.js +158 -51
  25. package/dist/table/index.js.map +1 -1
  26. package/dist/table/lex-program.d.ts.map +1 -1
  27. package/dist/table/ops.d.ts +4 -4
  28. package/dist/types.d.ts +6 -1
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/version.d.ts +1 -1
  31. package/package.json +1 -1
  32. package/src/combinators/choice.ts +10 -1
  33. package/src/compiler/ir-serialize.ts +15 -3
  34. package/src/compiler/linker.ts +14 -1
  35. package/src/plugin/direct-builder-static.ts +116 -12
  36. package/src/plugin/evaluator.ts +50 -2
  37. package/src/plugin/index.ts +140 -1
  38. package/src/table/assemble.ts +82 -59
  39. package/src/table/emit-assembly.ts +10 -5
  40. package/src/table/encode.ts +6 -10
  41. package/src/table/exec.ts +13 -18
  42. package/src/table/lex-program.ts +15 -6
  43. package/src/table/ops.ts +4 -4
  44. package/src/types.ts +1 -1
  45. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lex-program.d.ts","sourceRoot":"","sources":["../../src/table/lex-program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjE;;0EAE0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAOjE;AAsQD;2EAC2E;AAC3E,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,QAAQ,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GACvC,gBAAgB,CAyHlB"}
1
+ {"version":3,"file":"lex-program.d.ts","sourceRoot":"","sources":["../../src/table/lex-program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjE;;0EAE0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAOjE;AA+QD;2EAC2E;AAC3E,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,QAAQ,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GACvC,gBAAgB,CAyHlB"}
@@ -29,10 +29,10 @@ export declare const OP_SEQV = 4;
29
29
  * `CHOICE d n fx c1 … cn` — `d` indexes a dispatch table (or −1 for ordered
30
30
  * try); `fx` indexes the choice's OWN expected set.
31
31
  *
32
- * Both shipped engines report the UNION of the arms' expectations when a choice
33
- * fails. The driver reported whatever the last attempted arm left behind — or,
34
- * on a dispatch miss with no arm claiming the lead character, NOTHING, so a user
35
- * got an error naming nothing at all.
32
+ * Ordered failure keeps the expected sets at the deepest arm offset, merging
33
+ * exact ties in source order. Exclusive dispatch propagates its sole selected
34
+ * arm. A pure dispatch miss uses `fx`, the static union of every arm opener, so
35
+ * the result never names nothing merely because no arm claimed the lead.
36
36
  */
37
37
  export declare const OP_CHOICE = 5;
38
38
  /**
package/dist/types.d.ts CHANGED
@@ -152,7 +152,12 @@ export type ParserDef = {
152
152
  buildSigSrc?: string; /** Declared positional arity of `build`: author-declared via `node(..., { buildArity })`, or resolved from the reducer's declaration. Wins over source inspection. */
153
153
  buildArity?: number; /** Why arity could not be resolved, for the diagnostic. */
154
154
  buildArityUnresolved?: string;
155
- buildStaticError?: readonly string[];
155
+ buildStaticError?: readonly string[]; /** Import provenance for a direct builder's free names — each `{ local, source, imported }` lets a downstream compose() re-emit `import { imported as local } from source` so the inlined builder source can bind. Carried through the IR round-trip. */
156
+ buildImports?: ReadonlyArray<{
157
+ local: string;
158
+ source: string;
159
+ imported: string;
160
+ }>;
156
161
  unwrap?: boolean;
157
162
  collapse?: boolean;
158
163
  project?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -13,5 +13,5 @@
13
13
  * Kept in sync with `package.json` by `test/unit/version-sync.test.ts`, which fails
14
14
  * the build if this constant drifts from the published version.
15
15
  */
16
- export declare const PARSEMAN_VERSION = "0.48.0";
16
+ export declare const PARSEMAN_VERSION = "0.49.0";
17
17
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parseman",
3
- "version": "0.48.0",
3
+ "version": "0.49.0",
4
4
  "packageManager": "pnpm@10.15.1",
5
5
  "engines": {
6
6
  "node": "^20.19.0 || >=22.13.0"
@@ -85,6 +85,7 @@ export function choice<T extends [Combinator<unknown> | GatedArm<unknown>, ...(C
85
85
  },
86
86
  parse(input: string, pos: number, ctx: ParseContext): ParseResult<UnionArms<T>> {
87
87
  const expected: string[] = []
88
+ let expectedAt = pos
88
89
 
89
90
  // ── Disjoint: O(1) first-char dispatch (arms may be gated) ────────────
90
91
  //
@@ -164,7 +165,9 @@ export function choice<T extends [Combinator<unknown> | GatedArm<unknown>, ...(C
164
165
  const result = parsers[i]!.parse(input, pos, ctx)
165
166
  if (!result.ok) {
166
167
  rollbackTrivia(ctx, mark)
167
- expected.push(...result.expected)
168
+ const at = result.span.start
169
+ if (at > expectedAt) { expectedAt = at; expected.length = 0 }
170
+ if (at === expectedAt) expected.push(...result.expected)
168
171
  if (result.committed) return { ok: false, expected, span: result.span, committed: true }
169
172
  continue
170
173
  }
@@ -175,6 +178,12 @@ export function choice<T extends [Combinator<unknown> | GatedArm<unknown>, ...(C
175
178
  }
176
179
  return result as ParseResult<UnionArms<T>>
177
180
  }
181
+ // A nested gated choice can decline every arm after an enclosing arm has
182
+ // already advanced. Do not let that empty dynamic set erase both the
183
+ // shallower arms and the choice's own static opener contract.
184
+ if (expected.length === 0) {
185
+ for (const parser of parsers) expected.push(...deriveExpected(parser))
186
+ }
178
187
  return { ok: false, expected, span: { start: pos, end: pos } }
179
188
  },
180
189
  }
@@ -179,8 +179,12 @@ export function evalRuleMapIR(ir: string): Array<[string, Comb]> {
179
179
  ;(l._def as { fnSrc?: string }).fnSrc = src
180
180
  return l as Comb
181
181
  }
182
- const _nd = (type: string, child: Comb, src: string, opts?: unknown, staticError?: readonly string[], sigSrc?: string): Comb => {
182
+ const _nd = (type: string, child: Comb, src: string, opts?: unknown, staticError?: readonly string[], sigSrc?: string, buildImports?: ReadonlyArray<{ local: string; source: string; imported: string }>): Comb => {
183
183
  if (staticError !== undefined && staticError.length > 0) {
184
+ // Fail closed: a builder with an un-rescuable binding is NOT fused. The
185
+ // plugin catches this and leaves the runtime compose() in place rather than
186
+ // shipping a fused table that would ReferenceError on import. Import-rescued
187
+ // free names never reach here — they ride in `buildImports`, not `staticError`.
184
188
  throw new Error(`IR direct node builder for ${type} must be macro-static and self-contained; unsupported binding(s): ${staticError.join(', ')}`)
185
189
  }
186
190
  // A serialized direct builder needs an inert sentinel as well as buildSrc.
@@ -196,6 +200,10 @@ export function evalRuleMapIR(ir: string): Array<[string, Comb]> {
196
200
  // re-lowered composed artifact silently re-acquires the fail-open capture cost the
197
201
  // authoring module had already resolved away.
198
202
  if (sigSrc !== undefined) (n._def as { buildSigSrc?: string }).buildSigSrc = sigSrc
203
+ // Re-attach the direct-builder import provenance so the plugin's re-lower pass
204
+ // can re-emit the imports into the consuming module. Plain data — this runtime
205
+ // module never resolves or emits imports itself.
206
+ if (buildImports !== undefined) (n._def as { buildImports?: ReadonlyArray<{ local: string; source: string; imported: string }> }).buildImports = buildImports
199
207
  return n as Comb
200
208
  }
201
209
  // `_gch` rebuilds a GATED choice AND restores its `_def.gateSrcs` (parallel to the
@@ -569,11 +577,15 @@ class Serializer {
569
577
  // Trailing optionals, emitted only when present so an artifact that carries
570
578
  // neither is byte-identical to what previous versions produced.
571
579
  const tail: string[] = []
572
- if (def.buildStaticError !== undefined || def.buildSigSrc !== undefined) {
580
+ // Positional args to `_nd`: (…, staticError, sigSrc, buildImports). A later
581
+ // arg being present forces the earlier ones to be emitted (as `undefined`)
582
+ // so the positions line up.
583
+ if (def.buildStaticError !== undefined || def.buildSigSrc !== undefined || def.buildImports !== undefined) {
573
584
  if (!opts) tail.push('undefined')
574
585
  tail.push(def.buildStaticError === undefined ? 'undefined' : JSON.stringify(def.buildStaticError))
575
586
  }
576
- if (def.buildSigSrc !== undefined) tail.push(JSON.stringify(def.buildSigSrc))
587
+ if (def.buildSigSrc !== undefined || def.buildImports !== undefined) tail.push(def.buildSigSrc === undefined ? 'undefined' : JSON.stringify(def.buildSigSrc))
588
+ if (def.buildImports !== undefined) tail.push(JSON.stringify(def.buildImports))
577
589
  const trailing = tail.length > 0 ? `, ${tail.join(', ')}` : ''
578
590
  return `_nd(${JSON.stringify(def.type)}, ${kid(def.parser)}, ${JSON.stringify(def.buildSrc)}${opts}${trailing})`
579
591
  }
@@ -281,8 +281,21 @@ function materializeDirectBuilders(ruleMap: ReadonlyArray<readonly [string, Comb
281
281
  const visit = (p: Combinator<unknown>): void => {
282
282
  if (seen.has(p)) return
283
283
  seen.add(p)
284
- const d = p._def as { tag: string; build?: unknown; buildSrc?: string }
284
+ const d = p._def as { tag: string; type?: string; build?: unknown; buildSrc?: string; buildImports?: ReadonlyArray<{ local: string; source: string; imported: string }> }
285
285
  if (d.tag === 'node' && typeof d.buildSrc === 'string') {
286
+ // FAIL CLOSED for the runtime fuse: a builder whose free names are module
287
+ // imports can be re-bound by the MACRO plugin (it re-emits the imports into the
288
+ // generated module), but an in-process `(0, eval)` here has no import to give it,
289
+ // so the builder would throw ReferenceError at parse time — wrong output deferred.
290
+ // Refuse now, with a message that points at the build-time path. The macro never
291
+ // reaches this function (it prints `buildSrc`, see the doc above).
292
+ if (d.buildImports !== undefined && d.buildImports.length > 0) {
293
+ throw new Error(
294
+ `IR direct node builder for ${d.type ?? '<anonymous>'} references module import(s) `
295
+ + `${d.buildImports.map(bi => bi.local).join(', ')} that a runtime compose() cannot supply; `
296
+ + `compose at build time via the parseman macro plugin, which re-emits the imports.`,
297
+ )
298
+ }
286
299
  try {
287
300
  // eslint-disable-next-line no-eval
288
301
  const fn = (0, eval)(`(${d.buildSrc})`) as unknown
@@ -8,6 +8,13 @@ import { parseSync } from 'oxc-parser'
8
8
  const STATIC_BUILDER_GLOBALS = new Set([
9
9
  'Array', 'Boolean', 'Date', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'String',
10
10
  'Infinity', 'parseFloat', 'parseInt', 'undefined',
11
+ // Frozen intrinsic error constructors. Reducers pervasively `throw new TypeError(…)`;
12
+ // once the statement walker walks a `throw` argument these surface as free names, and
13
+ // refusing them would re-refuse the very productions the block-body lift clears. They
14
+ // carry no closure state, so admitting them cannot make an unanalyzable builder
15
+ // analyzable by accident. A MODULE-SCOPE custom error stays a free name (rescued by
16
+ // provenance or refused) — unchanged.
17
+ 'Error', 'TypeError', 'RangeError', 'SyntaxError',
11
18
  ])
12
19
 
13
20
  type Ast = { type: string; [key: string]: unknown }
@@ -33,30 +40,70 @@ function unwrapCallbackExpression(node: Ast | undefined): Ast | undefined {
33
40
  * AST binding check, never a source-text heuristic: property names and plain
34
41
  * object keys are not lexical reads. The result becomes inert metadata on the
35
42
  * macro-produced node and is enforced later by the runtime IR re-lowerer.
43
+ *
44
+ * Kept as the combined `structural ++ free` list so every existing caller and the
45
+ * standalone unit gate see one flat array. `directBuilderBindings` exposes the
46
+ * split the provenance path needs.
36
47
  */
37
48
  export function directBuilderUnsupportedBindings(src: string): string[] {
49
+ const r = directBuilderBindings(src)
50
+ return [...r.structural, ...r.free]
51
+ }
52
+
53
+ /**
54
+ * The analysis, SPLIT into two kinds of unsupported binding:
55
+ *
56
+ * - `structural` — a refusal no provenance can rescue: an un-analyzable node
57
+ * kind, a non-Identifier parameter, `this` / `arguments`, an async or generator
58
+ * reducer. These fail closed and fall back to the interpreter.
59
+ * - `free` — a plain lexical read of a name declared OUTSIDE the builder. Such a
60
+ * name is a refusal on its own, but it CAN be re-bound in a downstream module if
61
+ * that module re-emits the import it came from. The evaluator resolves each free
62
+ * name against the authoring module's imports: one that resolves is carried as
63
+ * import provenance; one that does not stays a refusal.
64
+ */
65
+ export function directBuilderBindings(src: string): { structural: string[]; free: string[] } {
38
66
  let init: Ast | undefined
39
67
  try {
40
68
  const parsed = parseSync('parseman-direct-builder.ts', `const _direct = (${src})`)
41
- if (parsed.errors.length > 0) return ['invalid callback source']
69
+ if (parsed.errors.length > 0) return { structural: ['invalid callback source'], free: [] }
42
70
  const program = parsed.program as unknown as Ast
43
- const statement = (program.body as Ast[] | undefined)?.[0]
44
- const declaration = (statement?.declarations as Ast[] | undefined)?.[0]
71
+ const statementNode = (program.body as Ast[] | undefined)?.[0]
72
+ const declaration = (statementNode?.declarations as Ast[] | undefined)?.[0]
45
73
  init = unwrapCallbackExpression(declaration?.init as Ast | undefined)
46
74
  } catch {
47
- return ['invalid callback source']
75
+ return { structural: ['invalid callback source'], free: [] }
48
76
  }
49
- if (init?.type !== 'ArrowFunctionExpression' || !Array.isArray(init.params)) return ['unsupported callback shape']
77
+ // A direct builder is an arrow OR a resolved `function` reducer (a bare reference
78
+ // to a top-level `function foldOperation(…) {…}` resolves to a FunctionExpression
79
+ // here). Both inline verbatim into the fused table. An async or generator reducer
80
+ // is NOT a pure synchronous builder and stays refused.
81
+ if (init === undefined) return { structural: ['unsupported callback shape'], free: [] }
82
+ const isCallable = init.type === 'ArrowFunctionExpression'
83
+ || init.type === 'FunctionExpression'
84
+ || init.type === 'FunctionDeclaration'
85
+ if (!isCallable || !Array.isArray(init.params)) return { structural: ['unsupported callback shape'], free: [] }
86
+ if (init.async === true || init.generator === true) return { structural: ['unsupported callback shape'], free: [] }
50
87
  const allowed = new Set(STATIC_BUILDER_GLOBALS)
51
88
  for (const param of init.params as Ast[]) {
52
- if (param.type !== 'Identifier' || typeof param.name !== 'string') return ['unsupported parameter pattern']
89
+ if (param.type !== 'Identifier' || typeof param.name !== 'string') return { structural: ['unsupported parameter pattern'], free: [] }
53
90
  allowed.add(param.name)
54
91
  }
55
- const unsupported = new Set<string>()
56
- const reportUnsupportedNode = (ast: Ast): void => { unsupported.add(`unsupported ${ast.type}`) }
92
+ // A named function expression binds its own name inside its body (recursion), so
93
+ // an inlined `function foldOperation(…) { … foldOperation(…) … }` is self-contained.
94
+ const selfName = astChild(init.id)
95
+ if (selfName?.type === 'Identifier' && typeof selfName.name === 'string') allowed.add(selfName.name)
96
+
97
+ const structural = new Set<string>()
98
+ const free = new Set<string>()
99
+ const reportUnsupportedNode = (ast: Ast): void => { structural.add(`unsupported ${ast.type}`) }
57
100
  const read = (ast: Ast, allowedNames: ReadonlySet<string>): void => {
58
101
  if (typeof ast.name === 'string' && allowedNames.has(ast.name)) return
59
- unsupported.add(typeof ast.name === 'string' ? ast.name : 'identifier')
102
+ // `arguments` is a function-only binding that no import can supply; refuse it
103
+ // structurally rather than letting it masquerade as a rescuable free name.
104
+ if (ast.name === 'arguments') { structural.add('unsupported arguments'); return }
105
+ if (typeof ast.name === 'string') free.add(ast.name)
106
+ else structural.add('unsupported identifier')
60
107
  }
61
108
  const expression = (node: unknown, allowedNames: ReadonlySet<string>): void => {
62
109
  const ast = astChild(node)
@@ -89,14 +136,71 @@ export function directBuilderUnsupportedBindings(src: string): string[] {
89
136
  if (param.type !== 'Identifier' || typeof param.name !== 'string') { reportUnsupportedNode(param); continue }
90
137
  nested.add(param.name)
91
138
  }
92
- if (astChild(ast.body)?.type === 'BlockStatement') { reportUnsupportedNode(astChild(ast.body)!); return }
139
+ // A nested arrow with a block body is carried as source and inlined verbatim,
140
+ // exactly like the top-level builder — walk it, do not refuse it.
141
+ const nestedBody = astChild(ast.body)
142
+ if (nestedBody?.type === 'BlockStatement') { statement(nestedBody, nested); return }
93
143
  expression(ast.body, nested)
94
144
  return
95
145
  }
96
146
  default: reportUnsupportedNode(ast); return
97
147
  }
98
148
  }
99
- if (astChild(init.body)?.type === 'BlockStatement') unsupported.add('unsupported BlockStatement')
149
+ // A block body is not a SERIALIZATION limit — `buildSrc` is carried as text and
150
+ // inlined verbatim downstream, so a statement inlines exactly as an expression
151
+ // does. The refusal was an ANALYZER gap: the walker only knew expressions. Walk
152
+ // statements too and the refusal disappears for the shapes grammar reducers use.
153
+ const statement = (node: unknown, names: Set<string>): void => {
154
+ const ast = astChild(node)
155
+ if (!ast) return
156
+ switch (ast.type) {
157
+ case 'VariableDeclaration':
158
+ for (const d of astArray(ast.declarations)) {
159
+ expression(d.init, names)
160
+ const idAst = astChild(d.id)
161
+ if (idAst?.type === 'Identifier' && typeof idAst.name === 'string') names.add(idAst.name)
162
+ else reportUnsupportedNode(idAst ?? ast)
163
+ }
164
+ return
165
+ case 'ReturnStatement': expression(ast.argument, names); return
166
+ case 'ExpressionStatement': expression(ast.expression, names); return
167
+ case 'ThrowStatement': expression(ast.argument, names); return
168
+ case 'IfStatement':
169
+ expression(ast.test, names)
170
+ statement(ast.consequent, new Set(names))
171
+ if (ast.alternate) statement(ast.alternate, new Set(names))
172
+ return
173
+ case 'ForStatement': {
174
+ // The init's bindings (`index`) are visible to test / update / body but must
175
+ // not leak to the enclosing scope — hence the child set.
176
+ const inner = new Set(names)
177
+ if (ast.init) {
178
+ const initAst = astChild(ast.init)
179
+ if (initAst?.type === 'VariableDeclaration') statement(initAst, inner)
180
+ else expression(initAst, inner)
181
+ }
182
+ if (ast.test) expression(ast.test, inner)
183
+ if (ast.update) expression(ast.update, inner)
184
+ statement(ast.body, inner)
185
+ return
186
+ }
187
+ case 'ForOfStatement': case 'ForInStatement': {
188
+ // The iterable (`ast.right`) is read in the OUTER scope; the loop variable is
189
+ // in scope only for the body. A non-declaration target (`for (x of …)`, a
190
+ // destructuring or member target) is refused by the statement walker.
191
+ const inner = new Set(names)
192
+ statement(ast.left, inner)
193
+ expression(ast.right, names)
194
+ statement(ast.body, inner)
195
+ return
196
+ }
197
+ case 'BlockStatement': { const inner = new Set(names); for (const s of astArray(ast.body)) statement(s, inner); return }
198
+ case 'BreakStatement': case 'ContinueStatement': case 'EmptyStatement': return
199
+ default: reportUnsupportedNode(ast); return
200
+ }
201
+ }
202
+ const bodyAst = astChild(init.body)
203
+ if (bodyAst?.type === 'BlockStatement') statement(bodyAst, allowed)
100
204
  else expression(init.body, allowed)
101
- return [...unsupported]
205
+ return { structural: [...structural], free: [...free] }
102
206
  }
@@ -18,7 +18,7 @@ import type { DispatchArm } from '../combinators/dispatch.ts'
18
18
  import { ref } from '../combinators/ref.ts'
19
19
  import { rules, type RulesOptions } from '../combinators/parser.ts'
20
20
  import * as parseman from '../index.ts'
21
- import { directBuilderUnsupportedBindings } from './direct-builder-static.ts'
21
+ import { directBuilderBindings } from './direct-builder-static.ts'
22
22
  import type { ReducerResolver } from './reducer-resolver.ts'
23
23
 
24
24
  /**
@@ -124,6 +124,20 @@ export function setReducerResolver(r: ReducerResolver | null, entrySource: strin
124
124
  _entrySource = entrySource
125
125
  }
126
126
 
127
+ /**
128
+ * Map a free lexical name read by a direct node builder to the import it came from
129
+ * in the AUTHORING module. A name that resolves is no longer a refusal — the node
130
+ * carries `{ source, imported }` provenance, and a downstream `compose()` re-binds
131
+ * it by re-emitting the same import into the consuming module. A name that does not
132
+ * resolve (a module-private const, a genuinely undefined read) stays a refusal.
133
+ */
134
+ export type BuilderImportResolver = (name: string) => { source: string; imported: string } | null
135
+ let _builderImports: BuilderImportResolver | null = null
136
+ /** Install (or clear, with `null`) the import-provenance resolver for the module being transformed. */
137
+ export function setBuilderImportResolver(r: BuilderImportResolver | null): void {
138
+ _builderImports = r
139
+ }
140
+
127
141
  // ---------------------------------------------------------------------------
128
142
  // Scope types
129
143
  //
@@ -700,8 +714,42 @@ function exprToCombi(node: Expression, scope: XScope, code?: string, mfs?: strin
700
714
  if (combi._def.buildArity === undefined && resolved.arity !== null) combi._def.buildArity = resolved.arity
701
715
  if (resolved.reason !== undefined) combi._def.buildArityUnresolved = resolved.reason
702
716
  }
703
- const staticError = directBuilderUnsupportedBindings(buildSrc)
717
+ // Analyze the REDUCER BODY, not the call-site reference. A named `function`
718
+ // reducer (`node(..., foldOperation)`) arrives here as the bare identifier
719
+ // `foldOperation`, which the analyzer can only read as `unsupported callback
720
+ // shape`. `buildSigSrc` is the resolved declaration source (see the resolver
721
+ // above and `buildAnalysisSrc`), so preferring it lets the function-reducer
722
+ // lift walk the real body and report its real free names. An inline builder
723
+ // has no `buildSigSrc`, so this is exactly `buildSrc` for that case.
724
+ const analysisSrc = combi._def.buildSigSrc ?? buildSrc
725
+ const report = directBuilderBindings(analysisSrc)
726
+ // Import-provenance rescue and free-name refusals apply ONLY to an INLINE
727
+ // builder body, whose source (`buildSrc`) is exactly what the table inlines and
728
+ // a downstream compose re-emits verbatim. A NAMED reducer (`buildSigSrc` set —
729
+ // `node(..., foldOperation)`) is emitted as a live `f:[foldOperation]` binding
730
+ // that runs in ITS OWN module's scope; its body is never inlined here. So its
731
+ // body's free names are not this (entry) module's to resolve — doing so bound a
732
+ // coincidental same-named entry import to the wrong helper (wrong provenance) —
733
+ // and carrying their imports is dead: the emitted source is the NAME, not the
734
+ // body, so re-emitting those imports satisfies nothing. Analyse-only fields
735
+ // (`buildArity`/`buildSigSrc`) are already set above and are unaffected.
736
+ const isInlineBuilder = combi._def.buildSigSrc === undefined
737
+ // A free name that this module IMPORTED is not a refusal: carry its
738
+ // provenance so a downstream compose() re-emits the import. Only structural
739
+ // refusals and free names with NO import provenance become the fail-closed
740
+ // `buildStaticError` — which the runtime re-lowerer still throws on.
741
+ const carriedImports: Array<{ local: string; source: string; imported: string }> = []
742
+ const unresolved: string[] = []
743
+ if (isInlineBuilder) {
744
+ for (const name of report.free) {
745
+ const prov = _builderImports?.(name) ?? null
746
+ if (prov) carriedImports.push({ local: name, source: prov.source, imported: prov.imported })
747
+ else unresolved.push(name)
748
+ }
749
+ }
750
+ const staticError = [...report.structural, ...unresolved]
704
751
  if (staticError.length > 0) combi._def.buildStaticError = staticError
752
+ if (carriedImports.length > 0) combi._def.buildImports = carriedImports
705
753
  }
706
754
  return combi
707
755
  } catch { return null }