@aster-cloud/aster-lang-ts 2.0.0 → 3.0.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 (106) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/scripts/generate-naming-rules.d.ts +5 -0
  3. package/dist/scripts/generate-naming-rules.d.ts.map +1 -0
  4. package/dist/scripts/generate-naming-rules.js +35 -0
  5. package/dist/scripts/generate-naming-rules.js.map +1 -0
  6. package/dist/src/browser/schema.d.ts.map +1 -1
  7. package/dist/src/browser/schema.js +1 -3
  8. package/dist/src/browser/schema.js.map +1 -1
  9. package/dist/src/browser.d.ts.map +1 -1
  10. package/dist/src/browser.js +1 -3
  11. package/dist/src/browser.js.map +1 -1
  12. package/dist/src/compile-pipeline.d.ts.map +1 -1
  13. package/dist/src/compile-pipeline.js +1 -2
  14. package/dist/src/compile-pipeline.js.map +1 -1
  15. package/dist/src/config/lexicons/fallback-lexicon.d.ts +1 -1
  16. package/dist/src/config/lexicons/fallback-lexicon.d.ts.map +1 -1
  17. package/dist/src/config/lexicons/fallback-lexicon.js +1 -4
  18. package/dist/src/config/lexicons/fallback-lexicon.js.map +1 -1
  19. package/dist/src/config/lexicons/overlay-loader.d.ts +0 -13
  20. package/dist/src/config/lexicons/overlay-loader.d.ts.map +1 -1
  21. package/dist/src/config/lexicons/overlay-loader.js +0 -18
  22. package/dist/src/config/lexicons/overlay-loader.js.map +1 -1
  23. package/dist/src/config/lexicons/types.d.ts +0 -3
  24. package/dist/src/config/lexicons/types.d.ts.map +1 -1
  25. package/dist/src/config/lexicons/types.js.map +1 -1
  26. package/dist/src/core/lambda-captures.d.ts +14 -0
  27. package/dist/src/core/lambda-captures.d.ts.map +1 -0
  28. package/dist/src/core/lambda-captures.js +128 -0
  29. package/dist/src/core/lambda-captures.js.map +1 -0
  30. package/dist/src/lower_to_core.d.ts +0 -18
  31. package/dist/src/lower_to_core.d.ts.map +1 -1
  32. package/dist/src/lower_to_core.js +50 -90
  33. package/dist/src/lower_to_core.js.map +1 -1
  34. package/dist/src/mapping/mapping-ir.d.ts +2 -2
  35. package/dist/src/mapping/mapping-ir.js +2 -2
  36. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  37. package/dist/src/parser/expr-stmt-parser.js +14 -8
  38. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  39. package/dist/src/parser/field-variant-parser.js +3 -3
  40. package/dist/src/parser/field-variant-parser.js.map +1 -1
  41. package/dist/src/parser/naming-rules.d.ts +19 -0
  42. package/dist/src/parser/naming-rules.d.ts.map +1 -0
  43. package/dist/src/parser/naming-rules.generated.d.ts +7 -0
  44. package/dist/src/parser/naming-rules.generated.d.ts.map +1 -0
  45. package/dist/src/parser/naming-rules.generated.js +392 -0
  46. package/dist/src/parser/naming-rules.generated.js.map +1 -0
  47. package/dist/src/parser/naming-rules.js +2 -0
  48. package/dist/src/parser/naming-rules.js.map +1 -0
  49. package/dist/src/parser/type-inference.d.ts +29 -70
  50. package/dist/src/parser/type-inference.d.ts.map +1 -1
  51. package/dist/src/parser/type-inference.js +82 -212
  52. package/dist/src/parser/type-inference.js.map +1 -1
  53. package/dist/src/parser/type-parser.d.ts.map +1 -1
  54. package/dist/src/parser/type-parser.js +12 -19
  55. package/dist/src/parser/type-parser.js.map +1 -1
  56. package/dist/src/parser.d.ts.map +1 -1
  57. package/dist/src/parser.js +2 -5
  58. package/dist/src/parser.js.map +1 -1
  59. package/dist/src/typecheck/effects.js +11 -4
  60. package/dist/src/typecheck/effects.js.map +1 -1
  61. package/dist/src/types/type-inference.d.ts +1 -13
  62. package/dist/src/types/type-inference.d.ts.map +1 -1
  63. package/dist/src/types/type-inference.js +1 -2
  64. package/dist/src/types/type-inference.js.map +1 -1
  65. package/dist/test/helpers/locales-type-inference.d.ts +6 -0
  66. package/dist/test/helpers/locales-type-inference.d.ts.map +1 -0
  67. package/dist/test/helpers/locales-type-inference.js +14 -0
  68. package/dist/test/helpers/locales-type-inference.js.map +1 -0
  69. package/dist/test/integration/compliance/compliance-smoke.test.js +1 -2
  70. package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
  71. package/dist/test/unit/core/resolve-typed-references.test.js +3 -2
  72. package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -1
  73. package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts +2 -0
  74. package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts.map +1 -0
  75. package/dist/test/unit/effect/effect-caps-explicit-only.test.js +73 -0
  76. package/dist/test/unit/effect/effect-caps-explicit-only.test.js.map +1 -0
  77. package/dist/test/unit/lambda-capture-parity.test.js +43 -14
  78. package/dist/test/unit/lambda-capture-parity.test.js.map +1 -1
  79. package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts +1 -1
  80. package/dist/test/unit/lexicons/fallback-lexicon.test.js +2 -4
  81. package/dist/test/unit/lexicons/fallback-lexicon.test.js.map +1 -1
  82. package/dist/test/unit/parser/inferred-type-anchor.test.d.ts +2 -0
  83. package/dist/test/unit/parser/inferred-type-anchor.test.d.ts.map +1 -0
  84. package/dist/test/unit/parser/inferred-type-anchor.test.js +83 -0
  85. package/dist/test/unit/parser/inferred-type-anchor.test.js.map +1 -0
  86. package/dist/test/unit/parser/naming-rules-parity.test.d.ts +2 -0
  87. package/dist/test/unit/parser/naming-rules-parity.test.d.ts.map +1 -0
  88. package/dist/test/unit/parser/naming-rules-parity.test.js +26 -0
  89. package/dist/test/unit/parser/naming-rules-parity.test.js.map +1 -0
  90. package/dist/test/unit/parser/parser.test.js +6 -28
  91. package/dist/test/unit/parser/parser.test.js.map +1 -1
  92. package/dist/test/unit/parser/type-inference-vectors.test.d.ts +2 -0
  93. package/dist/test/unit/parser/type-inference-vectors.test.d.ts.map +1 -0
  94. package/dist/test/unit/parser/type-inference-vectors.test.js +40 -0
  95. package/dist/test/unit/parser/type-inference-vectors.test.js.map +1 -0
  96. package/dist/test/unit/parser/type-inference.test.d.ts +2 -1
  97. package/dist/test/unit/parser/type-inference.test.d.ts.map +1 -1
  98. package/dist/test/unit/parser/type-inference.test.js +93 -159
  99. package/dist/test/unit/parser/type-inference.test.js.map +1 -1
  100. package/dist/test/unit/regex-guard.test.js +6 -6
  101. package/dist/test/unit/regex-guard.test.js.map +1 -1
  102. package/package.json +1 -1
  103. package/dist/src/config/lexicons/type-inference-rules.d.ts +0 -19
  104. package/dist/src/config/lexicons/type-inference-rules.d.ts.map +0 -1
  105. package/dist/src/config/lexicons/type-inference-rules.js +0 -63
  106. package/dist/src/config/lexicons/type-inference-rules.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-captures.js","sourceRoot":"","sources":["../../../src/core/lambda-captures.ts"],"names":[],"mappings":"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"}
@@ -18,23 +18,5 @@
18
18
  */
19
19
  import type { Core } from './types.js';
20
20
  import type { Module } from './types.js';
21
- /**
22
- * 将 AST Module 降级为 Core IR Module。
23
- *
24
- * 这是 Aster 编译管道的第四步,将高级的抽象语法树转换为更简洁、更严格的 Core IR,
25
- * 以便进行类型检查和后续的代码生成。
26
- *
27
- * **降级转换**:
28
- * - 展开语法糖(`User?` → `Maybe of User`、`Result of A and B` → 标准 Result 类型)
29
- * - 规范化函数体为 Block 和 Statement 序列
30
- * - 将模式匹配转换为 Core IR 的 Case 结构
31
- * - 保留原始位置信息用于错误报告
32
- *
33
- * @param ast - AST Module 节点(通过 parser.parse 生成)
34
- * @returns Core IR Module 节点,包含所有声明的规范化表示
35
- *
36
- * @internal 不从包入口导出:未经 R1 的 AST 降级后名字保持原写法(可能是本地化名)。
37
- * 外部调用方使用 resolveAndLowerChecked(compile-pipeline)或 browser `compile`。
38
- */
39
21
  export declare function lowerModule(ast: Module): Core.Module;
40
22
  //# sourceMappingURL=lower_to_core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lower_to_core.d.ts","sourceRoot":"","sources":["../../src/lower_to_core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,KAAK,EAAc,IAAI,EAAkB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EACV,MAAM,EAYP,MAAM,YAAY,CAAC;AAqHpB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAIpD"}
1
+ {"version":3,"file":"lower_to_core.d.ts","sourceRoot":"","sources":["../../src/lower_to_core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,KAAK,EAAc,IAAI,EAAkB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EACV,MAAM,EAYP,MAAM,YAAY,CAAC;AAiKpB,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAKpD"}
@@ -22,7 +22,7 @@ import { markForResolution, withResolvedOrigin } from './core/resolution-mark.js
22
22
  import { KEYWORD_CTORS } from './frontend/resolution-choice.js';
23
23
  import { inferCapabilityFromName } from './config/semantic.js';
24
24
  import { Diagnostics } from './diagnostics/diagnostics.js';
25
- import { DefaultAstVisitor } from './ast/ast_visitor.js';
25
+ import { collectLambdaCaptures } from './core/lambda-captures.js';
26
26
  import { DefaultCoreVisitor, createVisitorContext } from './core/visitor.js';
27
27
  /**
28
28
  * 从 AST 节点提取元数据(span 和 file)。
@@ -133,7 +133,34 @@ const AUTHORIZING_EFFECTS = new Set(['io', 'cpu']);
133
133
  * @internal 不从包入口导出:未经 R1 的 AST 降级后名字保持原写法(可能是本地化名)。
134
134
  * 外部调用方使用 resolveAndLowerChecked(compile-pipeline)或 browser `compile`。
135
135
  */
136
+ /**
137
+ * 降级函数体时可见的局部绑定(形参、此前的 Let / Start、Match 模式绑定、外层 lambda 形参),按块分层。
138
+ * 只用于判定 lambda 的 captures 是否为外层局部(ADR 0056 §4.2,见 core/lambda-captures.ts)。
139
+ * lowering 是同步的,每层都在 finally 中出栈,lowerModule 结束时栈必为空;lowerModule 入口据此拒绝重入。
140
+ */
141
+ const localScopes = [];
142
+ function inLocalScope(names, fn) {
143
+ localScopes.push(new Set(names));
144
+ try {
145
+ return fn();
146
+ }
147
+ finally {
148
+ localScopes.pop();
149
+ }
150
+ }
151
+ function bindLocal(name) {
152
+ localScopes[localScopes.length - 1]?.add(name);
153
+ }
154
+ function visibleLocals() {
155
+ const out = new Set();
156
+ for (const scope of localScopes)
157
+ for (const n of scope)
158
+ out.add(n);
159
+ return out;
160
+ }
136
161
  export function lowerModule(ast) {
162
+ if (localScopes.length > 0)
163
+ throw new Error('lowerModule 不可重入:局部作用域栈非空');
137
164
  const decls = ast.decls.map(lowerDecl);
138
165
  const m = CoreIR.Module(ast.name, decls, ast.profile ?? null);
139
166
  return withOrigin(m, ast);
@@ -161,18 +188,25 @@ function lowerFunc(f) {
161
188
  const params = f.params.map(p => CoreIR.Param(p.name, lowerType(p.type, tvars, p), lowerConstraints(p.constraints), p.typeInferred === true));
162
189
  const ret = lowerType(f.retType, tvars, f);
163
190
  const effectParams = f.effectParams ?? [];
164
- const body = f.body ? lowerBlock(f.body) : withOrigin(CoreIR.Block([]), f);
191
+ const body = f.body ? inLocalScope(params.map(p => p.name), () => lowerBlock(f.body)) : withOrigin(CoreIR.Block([]), f);
165
192
  const out = CoreIR.Func(canonicalOf(f.name, f.resolved), f.typeParams ?? [], params, ret, lowerEffects(f.effects ?? [], effectParams), body, f.effectCaps, f.effectCapsExplicit, effectParams, lowerAnnotations(f.annotations));
166
193
  out.retTypeInferred = f.retTypeInferred === true;
167
194
  return withResolution(withOrigin(out, f), f.resolved);
168
195
  }
169
196
  function lowerBlock(b) {
170
- return withOrigin(CoreIR.Block(b.statements.map(lowerStmt)), b);
197
+ return withOrigin(CoreIR.Block(lowerStatements(b.statements)), b);
198
+ }
199
+ /** 块内语句在新的一层局部作用域内降级:块内 Let 出块后不可见。 */
200
+ function lowerStatements(statements) {
201
+ return inLocalScope([], () => statements.map(lowerStmt));
171
202
  }
172
203
  function lowerStmt(s) {
173
204
  switch (s.kind) {
174
- case 'Let':
175
- return withOrigin(CoreIR.Let(s.name, lowerExpr(s.expr)), s);
205
+ case 'Let': {
206
+ const let_ = withOrigin(CoreIR.Let(s.name, lowerExpr(s.expr)), s);
207
+ bindLocal(s.name);
208
+ return let_;
209
+ }
176
210
  case 'Set': {
177
211
  // Set 目标属于 FIELD_REF,R1 不解析:保留原写法交给 R2
178
212
  const set = withOrigin(CoreIR.Set(s.name, lowerExpr(s.expr)), s);
@@ -185,15 +219,17 @@ function lowerStmt(s) {
185
219
  return withOrigin(CoreIR.If(lowerExpr(s.cond), lowerBlock(s.thenBlock), s.elseBlock ? lowerBlock(s.elseBlock) : null), s);
186
220
  // Scope sugar lowering placeholder: if a Block starts with a special marker, we could emit Scope. For now none.
187
221
  case 'Match':
188
- return withOrigin(CoreIR.Match(lowerExpr(s.expr), s.cases.map(c => withOrigin(CoreIR.Case(lowerPattern(c.pattern), lowerCaseBody(c.body)), c))), s);
222
+ return withOrigin(CoreIR.Match(lowerExpr(s.expr), s.cases.map(c => withOrigin(CoreIR.Case(lowerPattern(c.pattern), inLocalScope(patternBindings(c.pattern), () => lowerCaseBody(c.body))), c))), s);
189
223
  case 'Start':
224
+ // 与 R1 一致:Start 的任务名先入作用域,此后的 lambda 可以捕获它
225
+ bindLocal(s.name);
190
226
  return withOrigin(CoreIR.Start(s.name, lowerExpr(s.expr)), s);
191
227
  case 'Wait':
192
228
  return withOrigin(CoreIR.Wait(s.names), s);
193
229
  case 'workflow':
194
230
  return lowerWorkflow(s);
195
231
  case 'Block':
196
- return withOrigin(CoreIR.Scope(s.statements.map(lowerStmt)), s);
232
+ return withOrigin(CoreIR.Scope(lowerStatements(s.statements)), s);
197
233
  case 'Call':
198
234
  // 裸表达式语句(`File.write("...").`):求值并丢弃结果,降为 `Let _ be <call>`。
199
235
  //
@@ -473,92 +509,16 @@ function lowerExpr(e) {
473
509
  // ADR 0024 C0:列表字面量 → Core IR ListLit(元素递归 lower)。
474
510
  return withOrigin(CoreIR.ListLit(e.elements.map(lowerExpr)), e);
475
511
  case 'Lambda': {
476
- // 捕获变量收集:只收**自由变量**(引用了、但在 lambda 内部没被绑定的名字)。
477
- //
478
- // ★此前这里没有作用域栈,只排除当前 lambda 自己的形参,于是把
479
- // lambda 体内 `Let` 声明的局部、以及嵌套 lambda 的名字/形参
480
- // 一并当成了捕获(over-capture)。Java 侧 CoreLowering.collectCaptures
481
- // 有完整的 ArrayDeque<Set<String>> scopes + Stmt.Let 入栈,
482
- // 两侧对同一段源码产出不同的 captures:
483
- //
484
- // Let f be function with x, produce:
485
- // Let localA be 1.
486
- // Return If x then outer else localA.
487
- //
488
- // Java → [outer] TS(修前)→ [outer, localA]
489
- //
490
- // captures 不是元数据:Truffle 的 Loader 按它建 FrameDescriptor 并按位置
491
- // 传实参,多算一个名字就多一个槽位、且 NameNodeEnv 解析不到时会返回
492
- // **名字本身的字符串**——与本轮修掉的 under-capture 是同一套故障机制。
493
- const scopes = [new Set(e.params.map(p => p.name))];
494
- const names = new Set();
495
- const isBound = (n) => scopes.some(s => s.has(n));
496
- class CaptureVisitor extends DefaultAstVisitor {
497
- visitBlock(b, ctx) {
498
- // 块级作用域:进块压栈、出块弹栈(与 Java 的 traverseBlock 同构)。
499
- scopes.push(new Set());
500
- try {
501
- super.visitBlock(b, ctx);
502
- }
503
- finally {
504
- scopes.pop();
505
- }
506
- }
507
- visitStatement(s, ctx) {
508
- if (s.kind === 'Match') {
509
- // ★Match 的模式会**绑定**新名字,这些名字在该 case 体内不是自由变量。
510
- // 此前只递归不绑定,于是 `When bound, Return bound.` 里的 bound
511
- // 被当成捕获(Java 侧 CoreLowering:820-832 有 patternBindings,
512
- // 两侧因此分叉:Java [] vs TS ["bound"])。
513
- this.visitExpression(s.expr, ctx);
514
- for (const c of s.cases) {
515
- scopes.push(patternBindings(c.pattern));
516
- try {
517
- if (c.body.kind === 'Return')
518
- this.visitExpression(c.body.expr, ctx);
519
- else
520
- this.visitBlock(c.body, ctx);
521
- }
522
- finally {
523
- scopes.pop();
524
- }
525
- }
526
- return;
527
- }
528
- super.visitStatement(s, ctx);
529
- // ★先递归再绑定:`Let x be x + 1` 里右侧的 x 指的是**外层**的 x,
530
- // 先绑定会把它误判成已绑定而漏掉这次捕获。
531
- if (s.kind === 'Let') {
532
- scopes[scopes.length - 1].add(s.name);
533
- }
534
- }
535
- visitExpression(ex, ctx) {
536
- if (ex.kind === 'Lambda') {
537
- // 嵌套 lambda:内层形参在内层作用域内有效;内层引用的外部变量
538
- // 必须**穿透**记到外层 captures(外层不捕获,内层就拿不到)。
539
- scopes.push(new Set(ex.params.map(p => p.name)));
540
- try {
541
- this.visitBlock(ex.body, ctx);
542
- }
543
- finally {
544
- scopes.pop();
545
- }
546
- return;
547
- }
548
- // 以 R1 规范名记录捕获(未解析时即原写法;R2 再按其解析结果改写)
549
- const captured = ex.kind === 'Name' ? canonicalOf(ex.name, ex.resolved) : '';
550
- if (ex.kind === 'Name' && !isBound(captured) && !captured.includes('.')) {
551
- names.add(captured);
552
- }
553
- super.visitExpression(ex, ctx);
554
- }
555
- }
556
- new CaptureVisitor().visitBlock(e.body, undefined);
557
- const captures = Array.from(names);
512
+ // captures 只列外层局部(ADR 0056 §4.2):先取 lambda 所在位置可见的局部,再在 lambda 形参作用域内降级函数体,
513
+ // 最后在降级后的 IR 上判定(方法调用已改写,与 aster-lang-core 一致)
514
+ const outer = visibleLocals();
558
515
  const coreParams = e.params.map(p => CoreIR.Param(p.name, lowerType(p.type, NO_TYPE_VARS, p), [],
559
516
  // 解析器对未标注类型的 lambda 参数同样写入 typeInferred(Parameter),BaseParameter 未声明该字段
560
517
  p.typeInferred === true));
561
- const lambda = CoreIR.Lambda(coreParams, lowerType(e.retType, NO_TYPE_VARS, e), lowerBlock(e.body), captures);
518
+ const paramNames = e.params.map(p => p.name);
519
+ const body = inLocalScope(paramNames, () => lowerBlock(e.body));
520
+ const captures = collectLambdaCaptures(paramNames, body, outer);
521
+ const lambda = CoreIR.Lambda(coreParams, lowerType(e.retType, NO_TYPE_VARS, e), body, captures);
562
522
  return withOrigin(lambda, e);
563
523
  }
564
524
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"lower_to_core.js","sourceRoot":"","sources":["../../src/lower_to_core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lower_to_core.js","sourceRoot":"","sources":["../../src/lower_to_core.ts"],"names":[],"mappings":"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"}
@@ -20,8 +20,8 @@
20
20
  *
21
21
  * <h2>★硬约束:只能读两引擎已经一致的那部分(ADR §5 / §5.1)</h2>
22
22
  *
23
- * Core IR v2(ADR 0055)起两引擎同形,但值层仍在分期收紧(§6):推断出的类型子树(V1)、
24
- * 推断出的 effectCaps(V2)、Lambda.captures(V3)与部分 origin 结束行(V4)两侧可能不同:
23
+ * Core IR v2(ADR 0055)起两引擎同形,ADR 0056 起值层也已统一。但下列字段是推断 / 派生出来的,
24
+ * 不是源码写下的值,不能作为「文本与节点对应」的证据:
25
25
  *
26
26
  * ```
27
27
  * type(typeInferred), ret(retTypeInferred), effectCaps(effectCapsExplicit=false), captures
@@ -20,8 +20,8 @@
20
20
  *
21
21
  * <h2>★硬约束:只能读两引擎已经一致的那部分(ADR §5 / §5.1)</h2>
22
22
  *
23
- * Core IR v2(ADR 0055)起两引擎同形,但值层仍在分期收紧(§6):推断出的类型子树(V1)、
24
- * 推断出的 effectCaps(V2)、Lambda.captures(V3)与部分 origin 结束行(V4)两侧可能不同:
23
+ * Core IR v2(ADR 0055)起两引擎同形,ADR 0056 起值层也已统一。但下列字段是推断 / 派生出来的,
24
+ * 不是源码写下的值,不能作为「文本与节点对应」的证据:
25
25
  *
26
26
  * ```
27
27
  * type(typeInferred), ret(retTypeInferred), effectCaps(effectCapsExplicit=false), captures
@@ -1 +1 @@
1
- {"version":3,"file":"expr-stmt-parser.d.ts","sourceRoot":"","sources":["../../../src/parser/expr-stmt-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAGL,UAAU,EAEV,SAAS,EACT,OAAO,EAGP,SAAS,EAET,KAAK,EACL,IAAI,EAIL,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAclD,OAAO,EAA4C,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA2DhH,oCAAoC;AACpC,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AA8BjE;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,KAAK,CAqDP;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,KAAK,CAiBP;AAiMD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,EACnB,kBAAkB,GAAE,gBAAwB,GAC3C,SAAS,CAuMX;AA+ND;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,UAAU,CAiBZ;AAy/BD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,UAAU,EAAE,CAcd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,OAAO,CAkDT;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,SAAS,EAAE,CAsIb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CA2BzD"}
1
+ {"version":3,"file":"expr-stmt-parser.d.ts","sourceRoot":"","sources":["../../../src/parser/expr-stmt-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAGL,UAAU,EAEV,SAAS,EACT,OAAO,EAGP,SAAS,EAET,KAAK,EACL,IAAI,EAIL,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAclD,OAAO,EAA4C,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA2DhH,oCAAoC;AACpC,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AA8BjE;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,KAAK,CAqDP;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,KAAK,CAiBP;AAiMD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,EACnB,kBAAkB,GAAE,gBAAwB,GAC3C,SAAS,CAyMX;AA+ND;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,UAAU,CAiBZ;AA2/BD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,UAAU,EAAE,CAcd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,OAAO,CAkDT;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,GAClB,SAAS,EAAE,CAwIb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CA2BzD"}
@@ -5,7 +5,7 @@ import { TokenKind, KW } from '../frontend/tokens.js';
5
5
  import { Node } from '../ast/ast.js';
6
6
  import { parseType, parseEffectList } from './type-parser.js';
7
7
  import { parseConstraints } from './constraint-parser.js';
8
- import { inferFieldType, refineInferredType } from './type-inference.js';
8
+ import { inferFieldType } from './type-inference.js';
9
9
  import { assignSpan, cloneSpan, lastNonLayoutToken, spanFromSources, spanFromTokens, } from './span-utils.js';
10
10
  import { Issue, kwParam, lit, tokenLit, tokenName } from './parse-issue.js';
11
11
  const WAIT_FOR_PARTS = kwParts(KW.WAIT_FOR);
@@ -358,11 +358,13 @@ export function parseStatement(ctx, error, reportOutcomeError = error) {
358
358
  const functionTok = ctx.nextWord(); // 'function'
359
359
  const params = parseParamList(ctx, error);
360
360
  expectCommaOr(ctx);
361
+ const produceTok = ctx.peek();
361
362
  expectKeyword(ctx, error, KW.PRODUCE, Issue.expected(kwParam(KW.PRODUCE), `Expected ${kwq(ctx, KW.PRODUCE)} and return type`));
362
363
  let retType;
363
364
  if (ctx.at(TokenKind.COLON)) {
365
+ // 推断返回类型的占位锚定在 produce 关键词(ADR 0056 §3.3,与 aster-lang-core 一致)
364
366
  retType = Node.TypeName('Unknown');
365
- assignSpan(retType, spanFromTokens(ctx.peek(), ctx.peek()));
367
+ assignSpan(retType, spanFromTokens(produceTok, produceTok));
366
368
  }
367
369
  else {
368
370
  retType = parseType(ctx, error);
@@ -1430,11 +1432,13 @@ function parsePrimary(ctx, error) {
1430
1432
  const functionTok = ctx.nextWord(); // 'function'
1431
1433
  const params = parseParamList(ctx, error);
1432
1434
  expectCommaOr(ctx);
1435
+ const produceTok = ctx.peek();
1433
1436
  expectKeyword(ctx, error, KW.PRODUCE, Issue.expected(kwParam(KW.PRODUCE), `Expected ${kwq(ctx, KW.PRODUCE)} and return type`));
1434
1437
  let retType;
1435
1438
  if (ctx.at(TokenKind.COLON)) {
1439
+ // 推断返回类型的占位锚定在 produce 关键词(ADR 0056 §3.3,与 aster-lang-core 一致)
1436
1440
  retType = Node.TypeName('Unknown');
1437
- assignSpan(retType, spanFromTokens(ctx.peek(), ctx.peek()));
1441
+ assignSpan(retType, spanFromTokens(produceTok, produceTok));
1438
1442
  }
1439
1443
  else {
1440
1444
  retType = parseType(ctx, error);
@@ -1479,7 +1483,7 @@ function parsePrimary(ctx, error) {
1479
1483
  }
1480
1484
  else {
1481
1485
  typeInferred = true;
1482
- ptype = inferFieldType(pname, [], ctx.lexicon);
1486
+ ptype = inferFieldType(pname);
1483
1487
  assignSpan(ptype, spanFromTokens(nameTok, nameTok));
1484
1488
  }
1485
1489
  const param = {
@@ -1882,13 +1886,14 @@ export function parseParamList(ctx, error) {
1882
1886
  }
1883
1887
  else {
1884
1888
  typeInferred = true;
1885
- type = inferFieldType(name, [], ctx.lexicon);
1889
+ type = inferFieldType(name);
1886
1890
  assignSpan(type, spanFromTokens(nameTok, nameTok));
1887
1891
  }
1888
1892
  // 解析可选的约束列表(在类型之后)
1889
1893
  const { constraints, lastToken: constraintEndToken } = parseConstraints(ctx, error);
1894
+ // 推断类型按约束修正(ADR 0056 §3.2 第 5 步),仍锚定在名字 token
1890
1895
  if (typeInferred && constraints.length > 0) {
1891
- type = refineInferredType(type, constraints);
1896
+ type = inferFieldType(name, constraints);
1892
1897
  assignSpan(type, spanFromTokens(nameTok, nameTok));
1893
1898
  }
1894
1899
  const spanEnd = constraintEndToken || type;
@@ -1945,13 +1950,14 @@ export function parseParamList(ctx, error) {
1945
1950
  }
1946
1951
  else {
1947
1952
  typeInferred = true;
1948
- type = inferFieldType(name, [], ctx.lexicon);
1953
+ type = inferFieldType(name);
1949
1954
  assignSpan(type, spanFromTokens(nameTok, nameTok));
1950
1955
  }
1951
1956
  // 解析可选的约束列表(在类型之后)
1952
1957
  const { constraints, lastToken: constraintEndToken } = parseConstraints(ctx, error);
1958
+ // 推断类型按约束修正(ADR 0056 §3.2 第 5 步),仍锚定在名字 token
1953
1959
  if (typeInferred && constraints.length > 0) {
1954
- type = refineInferredType(type, constraints);
1960
+ type = inferFieldType(name, constraints);
1955
1961
  assignSpan(type, spanFromTokens(nameTok, nameTok));
1956
1962
  }
1957
1963
  const spanEnd = constraintEndToken || type;