@aster-cloud/aster-lang-ts 1.0.14 → 1.0.17
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/dist/scripts/generate_error_code_docs.js +19 -9
- package/dist/scripts/generate_error_code_docs.js.map +1 -1
- package/dist/scripts/generate_error_codes.js +84 -5
- package/dist/scripts/generate_error_codes.js.map +1 -1
- package/dist/scripts/verify-lexicon-sync.js +51 -0
- package/dist/scripts/verify-lexicon-sync.js.map +1 -1
- package/dist/src/cli/commands/search.js +17 -1
- package/dist/src/cli/commands/search.js.map +1 -1
- package/dist/src/config/effect_config.d.ts.map +1 -1
- package/dist/src/config/effect_config.js +6 -4
- package/dist/src/config/effect_config.js.map +1 -1
- package/dist/src/config/lexicons/diagnostic-messages.d.ts +2 -0
- package/dist/src/config/lexicons/diagnostic-messages.d.ts.map +1 -1
- package/dist/src/config/lexicons/diagnostic-messages.js +9 -3
- package/dist/src/config/lexicons/diagnostic-messages.js.map +1 -1
- package/dist/src/config/lexicons/type-inference-rules.d.ts.map +1 -1
- package/dist/src/config/lexicons/type-inference-rules.js +8 -1
- package/dist/src/config/lexicons/type-inference-rules.js.map +1 -1
- package/dist/src/config/semantic.d.ts +13 -0
- package/dist/src/config/semantic.d.ts.map +1 -1
- package/dist/src/config/semantic.js +22 -0
- package/dist/src/config/semantic.js.map +1 -1
- package/dist/src/config/token-kind.js +1 -1
- package/dist/src/config/token-kind.js.map +1 -1
- package/dist/src/core/interpreter.js +17 -0
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/diagnostics/diagnostics.d.ts +6 -0
- package/dist/src/diagnostics/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics/diagnostics.js +20 -0
- package/dist/src/diagnostics/diagnostics.js.map +1 -1
- package/dist/src/diagnostics/error_codes.d.ts +4 -2
- package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
- package/dist/src/diagnostics/error_codes.js +8 -4
- package/dist/src/diagnostics/error_codes.js.map +1 -1
- package/dist/src/effects/effect_inference.d.ts.map +1 -1
- package/dist/src/effects/effect_inference.js +62 -4
- package/dist/src/effects/effect_inference.js.map +1 -1
- package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
- package/dist/src/frontend/canonicalizer.js +95 -51
- package/dist/src/frontend/canonicalizer.js.map +1 -1
- package/dist/src/frontend/lexer.d.ts.map +1 -1
- package/dist/src/frontend/lexer.js +41 -5
- package/dist/src/frontend/lexer.js.map +1 -1
- package/dist/src/manifest.d.ts +4 -1
- package/dist/src/manifest.d.ts.map +1 -1
- package/dist/src/manifest.js.map +1 -1
- package/dist/src/package/manifest-parser.d.ts.map +1 -1
- package/dist/src/package/manifest-parser.js +3 -2
- package/dist/src/package/manifest-parser.js.map +1 -1
- package/dist/src/package/package-installer.d.ts.map +1 -1
- package/dist/src/package/package-installer.js +24 -1
- package/dist/src/package/package-installer.js.map +1 -1
- package/dist/src/parser/type-inference.d.ts.map +1 -1
- package/dist/src/parser/type-inference.js +15 -3
- package/dist/src/parser/type-inference.js.map +1 -1
- package/dist/src/stability/stability_gate.d.ts +68 -0
- package/dist/src/stability/stability_gate.d.ts.map +1 -0
- package/dist/src/stability/stability_gate.js +242 -0
- package/dist/src/stability/stability_gate.js.map +1 -0
- package/dist/src/typecheck/context.d.ts +19 -0
- package/dist/src/typecheck/context.d.ts.map +1 -1
- package/dist/src/typecheck/context.js +1 -1
- package/dist/src/typecheck/context.js.map +1 -1
- package/dist/src/typecheck/effects.d.ts.map +1 -1
- package/dist/src/typecheck/effects.js +13 -15
- package/dist/src/typecheck/effects.js.map +1 -1
- package/dist/src/typecheck/module.d.ts.map +1 -1
- package/dist/src/typecheck/module.js +6 -1
- package/dist/src/typecheck/module.js.map +1 -1
- package/dist/src/typecheck/pure.d.ts.map +1 -1
- package/dist/src/typecheck/pure.js +11 -7
- package/dist/src/typecheck/pure.js.map +1 -1
- package/dist/src/typecheck/workflow.js +4 -4
- package/dist/src/typecheck/workflow.js.map +1 -1
- package/dist/test/cli/commands/search.test.js +33 -0
- package/dist/test/cli/commands/search.test.js.map +1 -1
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js +19 -44
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js.map +1 -1
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js +25 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js.map +1 -1
- package/dist/test/unit/config/capability-parity.test.d.ts +19 -0
- package/dist/test/unit/config/capability-parity.test.d.ts.map +1 -0
- package/dist/test/unit/config/capability-parity.test.js +117 -0
- package/dist/test/unit/config/capability-parity.test.js.map +1 -0
- package/dist/test/unit/config/config-service.test.js +7 -3
- package/dist/test/unit/config/config-service.test.js.map +1 -1
- package/dist/test/unit/diagnostics/error-codes-parity.test.d.ts +15 -0
- package/dist/test/unit/diagnostics/error-codes-parity.test.d.ts.map +1 -0
- package/dist/test/unit/diagnostics/error-codes-parity.test.js +149 -0
- package/dist/test/unit/diagnostics/error-codes-parity.test.js.map +1 -0
- package/dist/test/unit/effect/effect-inference.test.js +43 -0
- package/dist/test/unit/effect/effect-inference.test.js.map +1 -1
- package/dist/test/unit/interpreter/interpreter.test.js +30 -0
- package/dist/test/unit/interpreter/interpreter.test.js.map +1 -1
- package/dist/test/unit/lexer/lexer.test.js +30 -0
- package/dist/test/unit/lexer/lexer.test.js.map +1 -1
- package/dist/test/unit/manifest-parser.test.js +4 -2
- package/dist/test/unit/manifest-parser.test.js.map +1 -1
- package/dist/test/unit/parser/entry-annotations.test.js +2 -2
- package/dist/test/unit/parser/entry-annotations.test.js.map +1 -1
- package/dist/test/unit/parser/type-inference.test.js +61 -0
- package/dist/test/unit/parser/type-inference.test.js.map +1 -1
- package/dist/test/unit/stability/stability-gate.parity.test.d.ts +2 -0
- package/dist/test/unit/stability/stability-gate.parity.test.d.ts.map +1 -0
- package/dist/test/unit/stability/stability-gate.parity.test.js +34 -0
- package/dist/test/unit/stability/stability-gate.parity.test.js.map +1 -0
- package/dist/test/unit/stability/stability-gate.test.d.ts +2 -0
- package/dist/test/unit/stability/stability-gate.test.d.ts.map +1 -0
- package/dist/test/unit/stability/stability-gate.test.js +210 -0
- package/dist/test/unit/stability/stability-gate.test.js.map +1 -0
- package/dist/test/unit/typecheck/effect-prefix-injection.test.d.ts +2 -0
- package/dist/test/unit/typecheck/effect-prefix-injection.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/effect-prefix-injection.test.js +71 -0
- package/dist/test/unit/typecheck/effect-prefix-injection.test.js.map +1 -0
- package/dist/test/unit/typecheck/effects-and-capabilities.test.js +21 -0
- package/dist/test/unit/typecheck/effects-and-capabilities.test.js.map +1 -1
- package/dist/test/unit/typecheck/regression-fixes.test.js +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StabilityGate — 编译器强制 Stable/Experimental 边界(ADR 0031,P0-C)。
|
|
3
|
+
*
|
|
4
|
+
* spec-1.0-freeze 把语言特性分 Stable / Experimental / Excluded,承诺「Stable 集 1.x 内
|
|
5
|
+
* 语法+语义不变」。但编译器对 Experimental 特性零拦截 → 客户可能无意依赖 Experimental
|
|
6
|
+
* 特性,下版本语义变了规则悄悄坏。本 gate 扫 **Core IR**(非 typecheck、非表面 AST)找
|
|
7
|
+
* 5 类 Experimental 特性,产 W600 诊断,warn 默认 + strict surface 可拒。
|
|
8
|
+
*
|
|
9
|
+
* ★为何扫 Core IR(ADR 0031 §3.2):aster-api 生产路径不走 typecheck(PolicyCompiler.compile
|
|
10
|
+
* 只 parse+lower)——gate 若挂 typecheck,服务端 compile/激活看不到 Experimental 使用,
|
|
11
|
+
* strict 拒不了=假门禁。StabilityGate 是独立 pass,接所有产 Core IR 的 enforcement surface。
|
|
12
|
+
*
|
|
13
|
+
* ★遍历用 {@link DefaultCoreVisitor}(显式 switch + assertNever 穷尽守卫),非结构化反射
|
|
14
|
+
* 遍历(Codex 审查纠正)——Java 侧可用同款显式 switch 复刻,Core union 新增 kind 时两边都
|
|
15
|
+
* 编译期强制更新,漏报变编译错误而非运行时沉默。
|
|
16
|
+
*
|
|
17
|
+
* ★5 类信号全部实证在 lowered Core IR 保真:
|
|
18
|
+
* Workflow(Start/Wait/workflow/Await) / Import.version / Func.effectCapsExplicit /
|
|
19
|
+
* PiiType 节点+Func.piiLevel / annotation.name∈{example,deprecated}。
|
|
20
|
+
*
|
|
21
|
+
* ★双引擎 parity:Java 侧须实现同一 5 类检测,同源码产同 featureId+nodeKind 集(M1 exit 硬门)。
|
|
22
|
+
*/
|
|
23
|
+
import { DefaultCoreVisitor } from '../core/visitor.js';
|
|
24
|
+
/**
|
|
25
|
+
* W600 诊断码。★monorepo 约束:正式单源在 `shared/error_codes.json`(generator 产双引擎
|
|
26
|
+
* error_codes.ts + ErrorCode.java)。本仓 error_codes.ts 是 @generated 勿手改,故此处用
|
|
27
|
+
* 本地常量;monorepo 上下文注册 W600 后应替换为 generated enum(ADR 0031 §3.1)。
|
|
28
|
+
*/
|
|
29
|
+
export const STABILITY_EXPERIMENTAL_CODE = 'W600';
|
|
30
|
+
function originToSpan(origin) {
|
|
31
|
+
if (!origin)
|
|
32
|
+
return undefined;
|
|
33
|
+
return { start: origin.start, end: origin.end };
|
|
34
|
+
}
|
|
35
|
+
function featureMessage(featureId) {
|
|
36
|
+
return `Experimental feature '${featureId}' is not part of the stable surface.`;
|
|
37
|
+
}
|
|
38
|
+
function featureHelp(strict) {
|
|
39
|
+
return strict
|
|
40
|
+
? 'Remove this feature or grant an experimental exception; strict stable mode rejects modules with W600 diagnostics.'
|
|
41
|
+
: 'Grant experimental support to silence this warning, or avoid this feature for stable-surface compatibility.';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* StabilityGate visitor:扩展 DefaultCoreVisitor(显式 switch 遍历),在命中 Experimental
|
|
45
|
+
* 节点处 emit W600,其余交 super 递归。
|
|
46
|
+
*/
|
|
47
|
+
class StabilityScanner extends DefaultCoreVisitor {
|
|
48
|
+
emit(ctx, featureId, origin, nodeKind, detail) {
|
|
49
|
+
const span = originToSpan(origin);
|
|
50
|
+
// 去重 key:有 span 用位置(同一节点同特性只报一条);无 span 用递增序号(不误合并)。
|
|
51
|
+
const posKey = span
|
|
52
|
+
? `${span.start.line}:${span.start.col}-${span.end.line}:${span.end.col}`
|
|
53
|
+
: `seq${ctx.seq.n++}`;
|
|
54
|
+
const key = `${featureId}|${nodeKind}|${posKey}`;
|
|
55
|
+
if (ctx.seen.has(key))
|
|
56
|
+
return;
|
|
57
|
+
ctx.seen.add(key);
|
|
58
|
+
ctx.diagnostics.push({
|
|
59
|
+
severity: 'warning',
|
|
60
|
+
code: STABILITY_EXPERIMENTAL_CODE,
|
|
61
|
+
message: featureMessage(featureId),
|
|
62
|
+
help: featureHelp(ctx.strict),
|
|
63
|
+
...(span ? { span } : {}),
|
|
64
|
+
data: {
|
|
65
|
+
featureId,
|
|
66
|
+
moduleName: ctx.moduleName,
|
|
67
|
+
strict: ctx.strict,
|
|
68
|
+
blocking: ctx.strict,
|
|
69
|
+
nodeKind,
|
|
70
|
+
...(detail ? { detail } : {}),
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
visitDeclaration(d, ctx) {
|
|
75
|
+
if (d.kind === 'Import') {
|
|
76
|
+
// 2. version-import:Import.version 非空(钉版本才是 experimental)。
|
|
77
|
+
const version = d.version;
|
|
78
|
+
if (version !== null && version !== undefined) {
|
|
79
|
+
this.emit(ctx, 'version-import', d.origin, 'Import', {
|
|
80
|
+
import: d.name,
|
|
81
|
+
version,
|
|
82
|
+
asName: d.asName ?? null,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else if (d.kind === 'Func') {
|
|
87
|
+
// 3. effect-capabilities:effectCapsExplicit === true(裸 @io 是 false=Stable)。
|
|
88
|
+
if (d.effectCapsExplicit === true) {
|
|
89
|
+
this.emit(ctx, 'effect-capabilities', d.origin, 'Func', {
|
|
90
|
+
func: d.name,
|
|
91
|
+
effectCaps: d.effectCaps ?? [],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// 5. deprecated-annotation:annotation.name ∈ {example, deprecated}(大小写不敏感)。
|
|
95
|
+
for (const anno of d.annotations ?? []) {
|
|
96
|
+
const lower = anno.name?.toLowerCase();
|
|
97
|
+
if (lower === 'example' || lower === 'deprecated') {
|
|
98
|
+
this.emit(ctx, 'deprecated-annotation', anno.origin ?? d.origin, 'Annotation', {
|
|
99
|
+
func: d.name,
|
|
100
|
+
annotationName: anno.name,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// 交 super 递归 Data.fields/Func.params/ret 类型(触发 visitType)+ Func.body(触发语句/表达式)。
|
|
106
|
+
super.visitDeclaration(d, ctx);
|
|
107
|
+
// 4. PII 兜底:若某 Func **签名类型树**(params/ret,不含 body)无 PiiType,但 piiLevel
|
|
108
|
+
// 非空 → 报一条(span 指函数)。用显式 containsPiiType 判签名(非 diagnostics 计数差,
|
|
109
|
+
// Codex 复审 P2:计数差会把 body 里 Lambda 的 PII 误算进签名,且不利 Java parity)。
|
|
110
|
+
if (d.kind === 'Func') {
|
|
111
|
+
const piiLevel = d.piiLevel;
|
|
112
|
+
if (piiLevel !== null && piiLevel !== undefined && !funcSignatureHasPii(d)) {
|
|
113
|
+
this.emit(ctx, 'pii', d.origin, 'Func', { func: d.name, piiLevel });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
visitStatement(s, ctx) {
|
|
118
|
+
// 1. Workflow:Start/Wait/workflow 语句。emit 后交 super 递归子节点(step body 里的 Await 等)。
|
|
119
|
+
if (s.kind === 'Start' || s.kind === 'Wait' || s.kind === 'workflow') {
|
|
120
|
+
this.emit(ctx, 'workflow', s.origin, s.kind);
|
|
121
|
+
}
|
|
122
|
+
super.visitStatement(s, ctx);
|
|
123
|
+
}
|
|
124
|
+
visitExpression(e, ctx) {
|
|
125
|
+
// 1. Workflow:Await 表达式。
|
|
126
|
+
if (e.kind === 'Await') {
|
|
127
|
+
this.emit(ctx, 'workflow', e.origin, 'Await');
|
|
128
|
+
}
|
|
129
|
+
// ★Lambda 的参数/返回类型 base visitor 不 visitType(Codex P1 漏报)——显式补扫。
|
|
130
|
+
// ret ?? retType:Core.Lambda 加了 ret,但 BaseLambda 标准字段是 retType(Java/外部
|
|
131
|
+
// Core JSON 可能只保留 retType,Codex 复审 P2),两者都读兜底。
|
|
132
|
+
if (e.kind === 'Lambda') {
|
|
133
|
+
const lam = e;
|
|
134
|
+
for (const p of lam.params ?? [])
|
|
135
|
+
this.visitType(p.type, ctx);
|
|
136
|
+
const lamRet = lam.ret ?? lam.retType;
|
|
137
|
+
if (lamRet)
|
|
138
|
+
this.visitType(lamRet, ctx);
|
|
139
|
+
}
|
|
140
|
+
super.visitExpression(e, ctx);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 4. PII:类型树里的 PiiType。base visitor 的 visitType 只在 Data.fields/Func.params/ret
|
|
144
|
+
* 处**调用**但不递归嵌套类型,故此处 emit + 手动递归子类型(List/Map/Result/TypeApp/
|
|
145
|
+
* FuncType/PiiType.baseType),确保嵌套 PII 也被检出。
|
|
146
|
+
*/
|
|
147
|
+
visitType(t, ctx) {
|
|
148
|
+
if (!t || typeof t !== 'object')
|
|
149
|
+
return;
|
|
150
|
+
if (t.kind === 'PiiType') {
|
|
151
|
+
const pt = t;
|
|
152
|
+
this.emit(ctx, 'pii', pt.origin, 'PiiType', {
|
|
153
|
+
sensitivity: pt.sensitivity,
|
|
154
|
+
category: pt.category,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// 递归子类型(结构化字段名固定,Java 可复刻——非反射遍历任意 key)。
|
|
158
|
+
for (const child of childTypes(t)) {
|
|
159
|
+
this.visitType(child, ctx);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/** 类型树里是否含 PiiType(显式布尔,供 Func 签名 PII 兜底判定——非 diagnostics 计数差)。 */
|
|
164
|
+
function containsPiiType(type) {
|
|
165
|
+
if (!type || typeof type !== 'object')
|
|
166
|
+
return false;
|
|
167
|
+
if (type.kind === 'PiiType')
|
|
168
|
+
return true;
|
|
169
|
+
return childTypes(type).some((c) => containsPiiType(c));
|
|
170
|
+
}
|
|
171
|
+
/** Func 签名(params + ret,不含 body)类型树是否含 PiiType。 */
|
|
172
|
+
function funcSignatureHasPii(func) {
|
|
173
|
+
const params = func.params ?? [];
|
|
174
|
+
if (params.some((p) => containsPiiType(p.type)))
|
|
175
|
+
return true;
|
|
176
|
+
return containsPiiType(func.ret);
|
|
177
|
+
}
|
|
178
|
+
/** 取一个类型节点的直接子类型(Java 侧按同名字段复刻)。 */
|
|
179
|
+
function childTypes(t) {
|
|
180
|
+
const n = t;
|
|
181
|
+
const out = [];
|
|
182
|
+
const push = (v) => {
|
|
183
|
+
if (v && typeof v === 'object' && typeof v.kind === 'string') {
|
|
184
|
+
out.push(v);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
switch (n.kind) {
|
|
188
|
+
case 'PiiType':
|
|
189
|
+
push(n.baseType);
|
|
190
|
+
break;
|
|
191
|
+
case 'Maybe':
|
|
192
|
+
case 'Option':
|
|
193
|
+
case 'List':
|
|
194
|
+
push(n.type);
|
|
195
|
+
break;
|
|
196
|
+
case 'Result':
|
|
197
|
+
push(n.ok);
|
|
198
|
+
push(n.err);
|
|
199
|
+
break;
|
|
200
|
+
case 'Map':
|
|
201
|
+
// Core.Map 字段是 key/val(非 value,Codex 核实)。
|
|
202
|
+
push(n.key);
|
|
203
|
+
push(n.val);
|
|
204
|
+
break;
|
|
205
|
+
case 'TypeApp':
|
|
206
|
+
for (const a of n.args ?? [])
|
|
207
|
+
push(a);
|
|
208
|
+
break;
|
|
209
|
+
case 'FuncType':
|
|
210
|
+
for (const p of n.params ?? [])
|
|
211
|
+
push(p);
|
|
212
|
+
push(n.ret);
|
|
213
|
+
break;
|
|
214
|
+
default:
|
|
215
|
+
// TypeName / TypeVar / EffectVar 是叶子。
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
return out;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* 扫 Core Module 找 5 类 Experimental 特性。每个触发节点一条诊断。
|
|
222
|
+
* 返回按 decls 顺序 + 每 decl 内 DFS 顺序(确定性,便于 parity 比对)。
|
|
223
|
+
*/
|
|
224
|
+
export function scan(coreModule, options) {
|
|
225
|
+
if (options.allowExperimental === true)
|
|
226
|
+
return [];
|
|
227
|
+
const ctx = {
|
|
228
|
+
moduleName: coreModule.name ?? null,
|
|
229
|
+
strict: options.strict,
|
|
230
|
+
diagnostics: [],
|
|
231
|
+
seen: new Set(),
|
|
232
|
+
seq: { n: 0 },
|
|
233
|
+
};
|
|
234
|
+
new StabilityScanner().visitModule(coreModule, ctx);
|
|
235
|
+
return ctx.diagnostics;
|
|
236
|
+
}
|
|
237
|
+
/** 便捷:strict surface 判断是否应拒绝(有 W600 且 strict)。 */
|
|
238
|
+
export function shouldRejectForStability(diagnostics, strict) {
|
|
239
|
+
return strict && diagnostics.some((d) => d.code === STABILITY_EXPERIMENTAL_CODE);
|
|
240
|
+
}
|
|
241
|
+
export const StabilityGate = { scan, shouldRejectForStability };
|
|
242
|
+
//# sourceMappingURL=stability_gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stability_gate.js","sourceRoot":"","sources":["../../../src/stability/stability_gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAe,CAAC;AAqC3D,SAAS,YAAY,CAAC,MAAiC;IACrD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,cAAc,CAAC,SAA6B;IACnD,OAAO,yBAAyB,SAAS,sCAAsC,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAAC,MAAe;IAClC,OAAO,MAAM;QACX,CAAC,CAAC,mHAAmH;QACrH,CAAC,CAAC,6GAA6G,CAAC;AACpH,CAAC;AAaD;;;GAGG;AACH,MAAM,gBAAiB,SAAQ,kBAAoC;IACzD,IAAI,CACV,GAAqB,EACrB,SAA6B,EAC7B,MAAiC,EACjC,QAAgB,EAChB,MAAgC;QAEhC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,qDAAqD;QACrD,MAAM,MAAM,GAAG,IAAI;YACjB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YACzE,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACjD,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YACnB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC;YAClC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE;gBACJ,SAAS;gBACT,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,MAAM;gBACpB,QAAQ;gBACR,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9B;SACF,CAAC,CAAC;IACL,CAAC;IAEQ,gBAAgB,CAAC,CAAmB,EAAE,GAAqB;QAClE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,2DAA2D;YAC3D,MAAM,OAAO,GAAI,CAAiC,CAAC,OAAO,CAAC;YAC3D,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE;oBACnD,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,OAAO;oBACP,MAAM,EAAG,CAAgC,CAAC,MAAM,IAAI,IAAI;iBACzD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,4EAA4E;YAC5E,IAAK,CAAsC,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBACxE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE;oBACtD,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,UAAU,EAAG,CAAwC,CAAC,UAAU,IAAI,EAAE;iBACvE,CAAC,CAAC;YACL,CAAC;YACD,4EAA4E;YAC5E,KAAK,MAAM,IAAI,IAAK,CAAoE,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;gBAC3G,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;gBACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;oBAClD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE;wBAC7E,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,cAAc,EAAE,IAAI,CAAC,IAAI;qBAC1B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QACD,gFAAgF;QAChF,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE/B,sEAAsE;QACtE,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAI,CAAkC,CAAC,QAAQ,CAAC;YAC9D,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,cAAc,CAAC,CAAiB,EAAE,GAAqB;QAC9D,gFAAgF;QAChF,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAG,CAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEQ,eAAe,CAAC,CAAkB,EAAE,GAAqB;QAChE,yBAAyB;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAG,CAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,gEAAgE;QAChE,uEAAuE;QACvE,+CAA+C;QAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,CAAuF,CAAC;YACpG,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;gBAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAiB,EAAE,GAAG,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;YACtC,IAAI,MAAM;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACM,SAAS,CAAC,CAAY,EAAE,GAAqB;QACpD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,CAAuF,CAAC;YACnG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE;gBAC1C,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC;QACL,CAAC;QACD,yCAAyC;QACzC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AAED,mEAAmE;AACnE,SAAS,eAAe,CAAC,IAAkC;IACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,IAAK,IAA0B,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAChE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,mDAAmD;AACnD,SAAS,mBAAmB,CAAC,IAAe;IAC1C,MAAM,MAAM,GAAI,IAAqD,CAAC,MAAM,IAAI,EAAE,CAAC;IACnF,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,eAAe,CAAE,IAA4B,CAAC,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,oCAAoC;AACpC,SAAS,UAAU,CAAC,CAAY;IAC9B,MAAM,CAAC,GAAG,CAA0D,CAAC;IACrE,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,CAAC,CAAU,EAAQ,EAAE;QAChC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrF,GAAG,CAAC,IAAI,CAAC,CAAc,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IACF,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACb,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,KAAK;YACR,0CAA0C;YAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,SAAS;YACZ,KAAK,MAAM,CAAC,IAAK,CAAC,CAAC,IAAkB,IAAI,EAAE;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM;QACR,KAAK,UAAU;YACb,KAAK,MAAM,CAAC,IAAK,CAAC,CAAC,MAAoB,IAAI,EAAE;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,MAAM;QACR;YACE,sCAAsC;YACtC,MAAM;IACV,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,UAAuB,EAAE,OAA6B;IACzE,IAAI,OAAO,CAAC,iBAAiB,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAClD,MAAM,GAAG,GAAqB;QAC5B,UAAU,EAAE,UAAU,CAAC,IAAI,IAAI,IAAI;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,GAAG,EAAE;QACf,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KACd,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,WAAW,CAAC;AACzB,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,wBAAwB,CAAC,WAA2C,EAAE,MAAe;IACnG,OAAO,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,2BAA2B,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -16,6 +16,25 @@ export interface ModuleContext {
|
|
|
16
16
|
funcSignatures: Map<string, FunctionSignature>;
|
|
17
17
|
importedEffects: Map<string, EffectSignature>;
|
|
18
18
|
moduleSearchPaths: readonly string[];
|
|
19
|
+
/**
|
|
20
|
+
* effect 推断用的 IO / CPU 名称前缀(issue #88)。
|
|
21
|
+
*
|
|
22
|
+
* <p>**由调用方注入,而非由 effects.ts 自行 import**。原因是浏览器边界:
|
|
23
|
+
* `browser.ts` 直接 `import { checkEffects } from './effects.js'`,而读配置的
|
|
24
|
+
* `typecheck/utils.ts` 静态引用了 `node:module` / `node:path`——effects.ts 一旦
|
|
25
|
+
* import 它,Node 内置模块就会被拉进浏览器 bundle 闭包(`pure.ts` 头注释 R15 记载
|
|
26
|
+
* 过这条约束:**即使包在 try/catch 里**,打包器仍会看到该引用)。
|
|
27
|
+
*
|
|
28
|
+
* 注入让两侧各取所需:Node 入口传 `getIOPrefixesCompat()` 的配置值,浏览器入口
|
|
29
|
+
* 留空、由 effects.ts 回落到 `pure.ts` 的内置默认值。effects.ts 因此保持
|
|
30
|
+
* browser-safe,同时用户自定义 effect 配置在 Node 侧真正生效。
|
|
31
|
+
*
|
|
32
|
+
* 省略时等价于内置默认值。
|
|
33
|
+
*/
|
|
34
|
+
effectPrefixes?: {
|
|
35
|
+
readonly io: readonly string[];
|
|
36
|
+
readonly cpu: readonly string[];
|
|
37
|
+
};
|
|
19
38
|
}
|
|
20
39
|
export interface TypecheckWalkerContext {
|
|
21
40
|
module: ModuleContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CACtF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,IAAI,GACV,IAAI,CAcN;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAc9G"}
|
|
@@ -4,7 +4,7 @@ export function defineSymbol(context, name, type, kind, span) {
|
|
|
4
4
|
const existing = context.symbols.lookupInCurrentScope(name);
|
|
5
5
|
if (existing) {
|
|
6
6
|
// 报告重复符号错误,而非静默覆盖
|
|
7
|
-
context.diagnostics.error("
|
|
7
|
+
context.diagnostics.error("E104" /* ErrorCode.DUPLICATE_SYMBOL */, span, {
|
|
8
8
|
name,
|
|
9
9
|
previous: existing.span,
|
|
10
10
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA+CnD,MAAM,UAAU,YAAY,CAC1B,OAA+B,EAC/B,IAAY,EACZ,IAAe,EACf,IAAgB,EAChB,IAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAkB;QAClB,OAAO,CAAC,WAAW,CAAC,KAAK,0CAA6B,IAAI,EAAE;YAC1D,IAAI;YACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;IACnC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA+B,EAAE,IAAY,EAAE,IAAe,EAAE,IAAW;IACtG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,WAAW,CAAC,KAAK,8CAAiC,IAAI,EAAE;YAC9D,IAAI;YACJ,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAa1D;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAa1D;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAiCvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAyDtG;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CA2CpG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isCpuClassCapability, isIoClassCapability } from '../config/semantic.js';
|
|
2
2
|
import { DefaultCoreVisitor, createVisitorContext } from '../core/visitor.js';
|
|
3
3
|
import { CPU_PREFIXES, IO_PREFIXES, originToSpan, resolveAlias, } from './pure.js';
|
|
4
4
|
import { collectCapabilities, collectWorkflows, reportWorkflowCapabilityViolation, } from './capabilities.js';
|
|
@@ -7,6 +7,9 @@ import { collectCapabilities, collectWorkflows, reportWorkflowCapabilityViolatio
|
|
|
7
7
|
*/
|
|
8
8
|
export function collectEffects(ctx, block) {
|
|
9
9
|
const effects = new Set();
|
|
10
|
+
// 未注入时回落 pure.ts 的内置默认值(浏览器路径 / 未接配置的调用方)。
|
|
11
|
+
const ioPrefixes = ctx.effectPrefixes?.io ?? IO_PREFIXES;
|
|
12
|
+
const cpuPrefixes = ctx.effectPrefixes?.cpu ?? CPU_PREFIXES;
|
|
10
13
|
class EffectsVisitor extends DefaultCoreVisitor {
|
|
11
14
|
visitStatement(statement, context) {
|
|
12
15
|
if (statement.kind === 'workflow') {
|
|
@@ -25,9 +28,11 @@ export function collectEffects(ctx, block) {
|
|
|
25
28
|
if (expression.kind === 'Call' && expression.target.kind === 'Name') {
|
|
26
29
|
const rawName = expression.target.name;
|
|
27
30
|
const resolvedName = resolveAlias(rawName, ctx.imports);
|
|
28
|
-
|
|
31
|
+
// 前缀由 ctx 注入(issue #88):Node 入口传配置值、浏览器入口留空回落内置默认。
|
|
32
|
+
// 不在此 import 配置模块——那会把 node:module/node:path 拉进浏览器 bundle。
|
|
33
|
+
if (ioPrefixes.some(prefix => resolvedName.startsWith(prefix)))
|
|
29
34
|
effects.add('io');
|
|
30
|
-
if (
|
|
35
|
+
if (cpuPrefixes.some(prefix => resolvedName.startsWith(prefix)))
|
|
31
36
|
effects.add('cpu');
|
|
32
37
|
}
|
|
33
38
|
super.visitExpression(expression, context);
|
|
@@ -93,18 +98,11 @@ export function checkCapabilityInferredEffects(func, diagnostics) {
|
|
|
93
98
|
return;
|
|
94
99
|
const hasIO = func.effects.some(eff => String(eff).toLowerCase() === 'io');
|
|
95
100
|
const hasCPU = func.effects.some(eff => String(eff).toLowerCase() === 'cpu');
|
|
96
|
-
//
|
|
97
|
-
// - CPU
|
|
98
|
-
// - CRYPTO:哈希/签名/加密 —— 即使包含密钥操作,也常常是 CPU 密集,
|
|
99
|
-
// 若涉及远程 KMS 应通过显式 @io + Network/Secrets capability 标注,
|
|
100
|
-
// 这里按 CPU 处理避免对纯本地密码学误报。
|
|
101
|
-
const CPU_CLASS = new Set([
|
|
102
|
-
CapabilityKind.CPU,
|
|
103
|
-
CapabilityKind.CRYPTO,
|
|
104
|
-
]);
|
|
101
|
+
// capability 的 effect 分类走单源 CAPABILITY_EFFECT_CLASS(shared/capabilities.json)。
|
|
102
|
+
// io-class 需 @io;cpu-class(CPU/CRYPTO,本地计算密集)需 @cpu 或 @io。
|
|
105
103
|
const ioCaps = [];
|
|
106
104
|
for (const cap of observed.keys()) {
|
|
107
|
-
if (
|
|
105
|
+
if (isIoClassCapability(cap)) {
|
|
108
106
|
ioCaps.push(cap);
|
|
109
107
|
}
|
|
110
108
|
}
|
|
@@ -120,8 +118,8 @@ export function checkCapabilityInferredEffects(func, diagnostics) {
|
|
|
120
118
|
calls: calls || undefined,
|
|
121
119
|
});
|
|
122
120
|
}
|
|
123
|
-
//
|
|
124
|
-
const cpuClassObserved = Array.from(observed.keys()).filter(cap =>
|
|
121
|
+
// cpu 类(含 Crypto)需要 @cpu 或 @io(@io 隐含可计算)
|
|
122
|
+
const cpuClassObserved = Array.from(observed.keys()).filter(cap => isCpuClassCapability(cap));
|
|
125
123
|
if (cpuClassObserved.length > 0 && !(hasCPU || hasIO)) {
|
|
126
124
|
const cpuCalls = cpuClassObserved
|
|
127
125
|
.flatMap(cap => observed.get(cap) ?? [])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAsB,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAsB,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,cAAc,CAAC;AA+BtB,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAoGjG;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE,EAC/B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,mBAAmB,CAyCpD;AAED,wBAAgB,+BAA+B,CAC7C,CAAC,EAAE,IAAI,CAAC,MAAM,EACd,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,mBAAmB,EAAE,CA2CvB"}
|
|
@@ -8,7 +8,7 @@ import { defaultModuleCache } from '../lsp/module_cache.js';
|
|
|
8
8
|
import { defineSymbol, } from './context.js';
|
|
9
9
|
import { DiagnosticBuilder } from './diagnostics.js';
|
|
10
10
|
import { SymbolTable } from './symbol_table.js';
|
|
11
|
-
import { formatType, isUnknown, buildFieldTypeMap, checkEntryRuleUniqueness, normalizeModuleSearchPaths, normalizeType, typesEqual, unknownType, } from './utils.js';
|
|
11
|
+
import { formatType, isUnknown, buildFieldTypeMap, checkEntryRuleUniqueness, getCPUPrefixesCompat, getIOPrefixesCompat, normalizeModuleSearchPaths, normalizeType, typesEqual, unknownType, } from './utils.js';
|
|
12
12
|
import { checkAsyncDiscipline } from './async.js';
|
|
13
13
|
import { typecheckBlock } from './statement.js';
|
|
14
14
|
import { collectCapabilities, checkCapabilities, } from './capabilities.js';
|
|
@@ -35,6 +35,11 @@ export function typecheckModule(m, options) {
|
|
|
35
35
|
funcSignatures: new Map(),
|
|
36
36
|
importedEffects: new Map(),
|
|
37
37
|
moduleSearchPaths,
|
|
38
|
+
// issue #88:Node 路径注入**配置驱动**的 effect 前缀。effects.ts 自己不 import
|
|
39
|
+
// 配置模块(会把 node:module/node:path 拉进浏览器 bundle),改由这里注入;
|
|
40
|
+
// browser.ts 不注入,effects.ts 回落 pure.ts 内置默认值。
|
|
41
|
+
// module.ts 本就 import utils.js,故此处不新增任何浏览器侧暴露面。
|
|
42
|
+
effectPrefixes: { io: getIOPrefixesCompat(), cpu: getCPUPrefixesCompat() },
|
|
38
43
|
};
|
|
39
44
|
const importDecls = [];
|
|
40
45
|
const fieldTypes = buildFieldTypeMap(m.decls);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAGL,SAAS,EACT,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAe,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACL,YAAY,GAIb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAClD,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAElD,MAAM,UAAU,eAAe,CAAC,CAAc,EAAE,OAA0B;IACxE,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC;IAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,kBAAkB,CAAC;QAC/D,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;YACxC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB;YACxD,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc;SACjD,CAAC,CAAC;QACH,MAAM,GAAG,GAAkB;YACzB,KAAK,EAAE,IAAI,GAAG,EAAE;YAChB,KAAK,EAAE,IAAI,GAAG,EAAE;YAChB,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,eAAe,EAAE,IAAI,GAAG,EAAE;YAC1B,iBAAiB;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.d.ts","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAM3E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,IAA2B,CAAC;AAC5D,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,IAAyC,CAAC;AACvE,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,IAAuC,CAAC;AAC1E,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,IAAwC,CAAC;AAC5E,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,IAAyC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAQxC,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAO,CAAC;AAElD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGrE;AAED,wBAAgB,WAAW,IAAI,IAAI,CAAC,IAAI,CAEvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAE3E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAc5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"pure.d.ts","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAM3E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,IAA2B,CAAC;AAC5D,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,IAAyC,CAAC;AACvE,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,IAAuC,CAAC;AAC1E,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,IAAwC,CAAC;AAC5E,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,IAAyC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAQxC,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAO,CAAC;AAElD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGrE;AAED,wBAAgB,WAAW,IAAI,IAAI,CAAC,IAAI,CAEvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAE3E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAc5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAsBlG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAErE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAK/D;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EAC/B,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EAC/B,MAAM,UAAQ,GACb,OAAO,CAYT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EACtC,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EACpC,MAAM,UAAQ,GACb,OAAO,CAsBT;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAGzE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
|
|
@@ -77,17 +77,21 @@ export function checkEntryRuleUniqueness(decls) {
|
|
|
77
77
|
const entryFuncs = decls.filter((decl) => decl.kind === 'Func' && (decl.annotations ?? []).some(annotation => annotation.name === 'entry'));
|
|
78
78
|
if (entryFuncs.length <= 1)
|
|
79
79
|
return [];
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
// 与 Java TypeChecker.checkEntryRuleUniqueness 对齐:穷尽列出全部冲突规则名
|
|
81
|
+
// (逗号拼接),而非仅报前两条;诊断锚点取首个 @entry 规则的 origin。
|
|
82
|
+
const ruleNames = entryFuncs
|
|
83
|
+
.map(func => func.name)
|
|
84
|
+
.filter((name) => typeof name === 'string');
|
|
82
85
|
const diagnostic = {
|
|
83
86
|
severity: 'error',
|
|
84
|
-
code: "
|
|
85
|
-
message: `Multiple @entry rules
|
|
87
|
+
code: "E102" /* ErrorCode.MULTIPLE_ENTRY_RULES */,
|
|
88
|
+
message: `Multiple @entry rules in module: ${ruleNames.join(', ')}`,
|
|
86
89
|
help: 'Keep at most one Rule annotated with @entry in a module.',
|
|
87
|
-
data: {
|
|
90
|
+
data: { rules: ruleNames.join(', ') },
|
|
88
91
|
};
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
const anchor = entryFuncs[0].origin;
|
|
93
|
+
if (anchor)
|
|
94
|
+
diagnostic.origin = anchor;
|
|
91
95
|
return [diagnostic];
|
|
92
96
|
}
|
|
93
97
|
export function formatType(type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isCpuClassCapability, isIoClassCapability } from '../config/semantic.js';
|
|
2
2
|
import { TypeSystem } from './type_system.js';
|
|
3
3
|
import { CPU_EFFECT_TYPE, IO_EFFECT_TYPE, PURE_EFFECT_TYPE, UNIT_TYPE, formatType, isUnknown, normalizeType, originToSpan, unknownType, } from './pure.js';
|
|
4
4
|
import { collectEffects } from './effects.js';
|
|
@@ -147,8 +147,8 @@ function validateCompensateBlock(context, step, bodyType, compensateType) {
|
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
function workflowEffectType(context, workflow, cachedEffects) {
|
|
150
|
-
let hasIOCap = workflow.effectCaps.some(cap => cap
|
|
151
|
-
let hasCpuCap = workflow.effectCaps.some(cap => cap
|
|
150
|
+
let hasIOCap = workflow.effectCaps.some(cap => isIoClassCapability(cap));
|
|
151
|
+
let hasCpuCap = workflow.effectCaps.some(cap => isCpuClassCapability(cap));
|
|
152
152
|
if (!hasIOCap) {
|
|
153
153
|
for (const step of workflow.steps) {
|
|
154
154
|
// 优先使用缓存(已包含 compensate 效应),否则动态收集
|
|
@@ -242,6 +242,6 @@ function validateWorkflowMetadata(workflow, diagnostics) {
|
|
|
242
242
|
function stepHasSideEffects(step, effects) {
|
|
243
243
|
if (effects.has('io'))
|
|
244
244
|
return true;
|
|
245
|
-
return step.effectCaps.some(cap => cap
|
|
245
|
+
return step.effectCaps.some(cap => isIoClassCapability(cap));
|
|
246
246
|
}
|
|
247
247
|
//# sourceMappingURL=workflow.js.map
|