@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.
- package/CHANGELOG.md +27 -0
- package/dist/scripts/generate-naming-rules.d.ts +5 -0
- package/dist/scripts/generate-naming-rules.d.ts.map +1 -0
- package/dist/scripts/generate-naming-rules.js +35 -0
- package/dist/scripts/generate-naming-rules.js.map +1 -0
- package/dist/src/browser/schema.d.ts.map +1 -1
- package/dist/src/browser/schema.js +1 -3
- package/dist/src/browser/schema.js.map +1 -1
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +1 -3
- package/dist/src/browser.js.map +1 -1
- package/dist/src/compile-pipeline.d.ts.map +1 -1
- package/dist/src/compile-pipeline.js +1 -2
- package/dist/src/compile-pipeline.js.map +1 -1
- package/dist/src/config/lexicons/fallback-lexicon.d.ts +1 -1
- package/dist/src/config/lexicons/fallback-lexicon.d.ts.map +1 -1
- package/dist/src/config/lexicons/fallback-lexicon.js +1 -4
- package/dist/src/config/lexicons/fallback-lexicon.js.map +1 -1
- package/dist/src/config/lexicons/overlay-loader.d.ts +0 -13
- package/dist/src/config/lexicons/overlay-loader.d.ts.map +1 -1
- package/dist/src/config/lexicons/overlay-loader.js +0 -18
- package/dist/src/config/lexicons/overlay-loader.js.map +1 -1
- package/dist/src/config/lexicons/types.d.ts +0 -3
- package/dist/src/config/lexicons/types.d.ts.map +1 -1
- package/dist/src/config/lexicons/types.js.map +1 -1
- package/dist/src/core/lambda-captures.d.ts +14 -0
- package/dist/src/core/lambda-captures.d.ts.map +1 -0
- package/dist/src/core/lambda-captures.js +128 -0
- package/dist/src/core/lambda-captures.js.map +1 -0
- package/dist/src/lower_to_core.d.ts +0 -18
- package/dist/src/lower_to_core.d.ts.map +1 -1
- package/dist/src/lower_to_core.js +50 -90
- package/dist/src/lower_to_core.js.map +1 -1
- package/dist/src/mapping/mapping-ir.d.ts +2 -2
- package/dist/src/mapping/mapping-ir.js +2 -2
- package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
- package/dist/src/parser/expr-stmt-parser.js +14 -8
- package/dist/src/parser/expr-stmt-parser.js.map +1 -1
- package/dist/src/parser/field-variant-parser.js +3 -3
- package/dist/src/parser/field-variant-parser.js.map +1 -1
- package/dist/src/parser/naming-rules.d.ts +19 -0
- package/dist/src/parser/naming-rules.d.ts.map +1 -0
- package/dist/src/parser/naming-rules.generated.d.ts +7 -0
- package/dist/src/parser/naming-rules.generated.d.ts.map +1 -0
- package/dist/src/parser/naming-rules.generated.js +392 -0
- package/dist/src/parser/naming-rules.generated.js.map +1 -0
- package/dist/src/parser/naming-rules.js +2 -0
- package/dist/src/parser/naming-rules.js.map +1 -0
- package/dist/src/parser/type-inference.d.ts +29 -70
- package/dist/src/parser/type-inference.d.ts.map +1 -1
- package/dist/src/parser/type-inference.js +82 -212
- package/dist/src/parser/type-inference.js.map +1 -1
- package/dist/src/parser/type-parser.d.ts.map +1 -1
- package/dist/src/parser/type-parser.js +12 -19
- package/dist/src/parser/type-parser.js.map +1 -1
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +2 -5
- package/dist/src/parser.js.map +1 -1
- package/dist/src/typecheck/effects.js +11 -4
- package/dist/src/typecheck/effects.js.map +1 -1
- package/dist/src/types/type-inference.d.ts +1 -13
- package/dist/src/types/type-inference.d.ts.map +1 -1
- package/dist/src/types/type-inference.js +1 -2
- package/dist/src/types/type-inference.js.map +1 -1
- package/dist/test/helpers/locales-type-inference.d.ts +6 -0
- package/dist/test/helpers/locales-type-inference.d.ts.map +1 -0
- package/dist/test/helpers/locales-type-inference.js +14 -0
- package/dist/test/helpers/locales-type-inference.js.map +1 -0
- package/dist/test/integration/compliance/compliance-smoke.test.js +1 -2
- package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
- package/dist/test/unit/core/resolve-typed-references.test.js +3 -2
- package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -1
- package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts +2 -0
- package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts.map +1 -0
- package/dist/test/unit/effect/effect-caps-explicit-only.test.js +73 -0
- package/dist/test/unit/effect/effect-caps-explicit-only.test.js.map +1 -0
- package/dist/test/unit/lambda-capture-parity.test.js +43 -14
- package/dist/test/unit/lambda-capture-parity.test.js.map +1 -1
- package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts +1 -1
- package/dist/test/unit/lexicons/fallback-lexicon.test.js +2 -4
- package/dist/test/unit/lexicons/fallback-lexicon.test.js.map +1 -1
- package/dist/test/unit/parser/inferred-type-anchor.test.d.ts +2 -0
- package/dist/test/unit/parser/inferred-type-anchor.test.d.ts.map +1 -0
- package/dist/test/unit/parser/inferred-type-anchor.test.js +83 -0
- package/dist/test/unit/parser/inferred-type-anchor.test.js.map +1 -0
- package/dist/test/unit/parser/naming-rules-parity.test.d.ts +2 -0
- package/dist/test/unit/parser/naming-rules-parity.test.d.ts.map +1 -0
- package/dist/test/unit/parser/naming-rules-parity.test.js +26 -0
- package/dist/test/unit/parser/naming-rules-parity.test.js.map +1 -0
- package/dist/test/unit/parser/parser.test.js +6 -28
- package/dist/test/unit/parser/parser.test.js.map +1 -1
- package/dist/test/unit/parser/type-inference-vectors.test.d.ts +2 -0
- package/dist/test/unit/parser/type-inference-vectors.test.d.ts.map +1 -0
- package/dist/test/unit/parser/type-inference-vectors.test.js +40 -0
- package/dist/test/unit/parser/type-inference-vectors.test.js.map +1 -0
- package/dist/test/unit/parser/type-inference.test.d.ts +2 -1
- package/dist/test/unit/parser/type-inference.test.d.ts.map +1 -1
- package/dist/test/unit/parser/type-inference.test.js +93 -159
- package/dist/test/unit/parser/type-inference.test.js.map +1 -1
- package/dist/test/unit/regex-guard.test.js +6 -6
- package/dist/test/unit/regex-guard.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/config/lexicons/type-inference-rules.d.ts +0 -19
- package/dist/src/config/lexicons/type-inference-rules.d.ts.map +0 -1
- package/dist/src/config/lexicons/type-inference-rules.js +0 -63
- 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;
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
//
|
|
477
|
-
//
|
|
478
|
-
|
|
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
|
|
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
|
|
24
|
-
*
|
|
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
|
|
24
|
-
*
|
|
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,
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
1960
|
+
type = inferFieldType(name, constraints);
|
|
1955
1961
|
assignSpan(type, spanFromTokens(nameTok, nameTok));
|
|
1956
1962
|
}
|
|
1957
1963
|
const spanEnd = constraintEndToken || type;
|