@aster-cloud/aster-lang-ts 0.2.0 → 1.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 +24 -0
- package/dist/src/ast/ast.d.ts +2 -2
- package/dist/src/ast/ast.d.ts.map +1 -1
- package/dist/src/ast/ast.js +5 -2
- package/dist/src/ast/ast.js.map +1 -1
- package/dist/src/browser.d.ts +16 -1
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +10 -2
- package/dist/src/browser.js.map +1 -1
- package/dist/src/config/effect_config.d.ts.map +1 -1
- package/dist/src/config/effect_config.js +7 -1
- package/dist/src/config/effect_config.js.map +1 -1
- package/dist/src/config/lexicons/de-DE.d.ts.map +1 -1
- package/dist/src/config/lexicons/de-DE.js +3 -0
- package/dist/src/config/lexicons/de-DE.js.map +1 -1
- package/dist/src/config/lexicons/en-US.d.ts.map +1 -1
- package/dist/src/config/lexicons/en-US.js +3 -0
- package/dist/src/config/lexicons/en-US.js.map +1 -1
- package/dist/src/config/lexicons/identifiers/registry.d.ts +9 -0
- package/dist/src/config/lexicons/identifiers/registry.d.ts.map +1 -1
- package/dist/src/config/lexicons/identifiers/registry.js +12 -0
- package/dist/src/config/lexicons/identifiers/registry.js.map +1 -1
- package/dist/src/config/lexicons/template.d.ts.map +1 -1
- package/dist/src/config/lexicons/template.js +7 -1
- package/dist/src/config/lexicons/template.js.map +1 -1
- package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
- package/dist/src/config/lexicons/zh-CN.js +38 -20
- package/dist/src/config/lexicons/zh-CN.js.map +1 -1
- package/dist/src/config/semantic.d.ts +4 -0
- package/dist/src/config/semantic.d.ts.map +1 -1
- package/dist/src/config/semantic.js +4 -0
- package/dist/src/config/semantic.js.map +1 -1
- package/dist/src/config/token-kind.d.ts +7 -1
- package/dist/src/config/token-kind.d.ts.map +1 -1
- package/dist/src/config/token-kind.js +10 -2
- package/dist/src/config/token-kind.js.map +1 -1
- package/dist/src/core/core_ir.d.ts +2 -2
- package/dist/src/core/core_ir.d.ts.map +1 -1
- package/dist/src/core/core_ir.js +5 -2
- package/dist/src/core/core_ir.js.map +1 -1
- package/dist/src/core/interpreter.js +341 -12
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/diagnostics/error_codes.d.ts +2 -0
- package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
- package/dist/src/diagnostics/error_codes.js +11 -5
- package/dist/src/diagnostics/error_codes.js.map +1 -1
- package/dist/src/effects/effect_inference_browser.d.ts.map +1 -1
- package/dist/src/effects/effect_inference_browser.js +22 -4
- package/dist/src/effects/effect_inference_browser.js.map +1 -1
- package/dist/src/frontend/canonicalizer.d.ts +33 -0
- package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
- package/dist/src/frontend/canonicalizer.js +86 -7
- package/dist/src/frontend/canonicalizer.js.map +1 -1
- package/dist/src/lower_to_core.js +2 -2
- package/dist/src/lower_to_core.js.map +1 -1
- package/dist/src/lsp/config.d.ts +13 -9
- package/dist/src/lsp/config.d.ts.map +1 -1
- package/dist/src/lsp/config.js +18 -5
- package/dist/src/lsp/config.js.map +1 -1
- package/dist/src/lsp/server.js +19 -7
- package/dist/src/lsp/server.js.map +1 -1
- package/dist/src/package/package-installer.js +2 -2
- package/dist/src/package/package-installer.js.map +1 -1
- package/dist/src/parser/context.d.ts.map +1 -1
- package/dist/src/parser/context.js +32 -12
- package/dist/src/parser/context.js.map +1 -1
- package/dist/src/parser/decl-parser.d.ts +2 -2
- package/dist/src/parser/decl-parser.d.ts.map +1 -1
- package/dist/src/parser/decl-parser.js +114 -13
- package/dist/src/parser/decl-parser.js.map +1 -1
- package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
- package/dist/src/parser/expr-stmt-parser.js +57 -1
- package/dist/src/parser/expr-stmt-parser.js.map +1 -1
- package/dist/src/parser/import-parser.d.ts +3 -2
- package/dist/src/parser/import-parser.d.ts.map +1 -1
- package/dist/src/parser/import-parser.js +12 -3
- package/dist/src/parser/import-parser.js.map +1 -1
- package/dist/src/typecheck/alias.d.ts +24 -0
- package/dist/src/typecheck/alias.d.ts.map +1 -0
- package/dist/src/typecheck/alias.js +30 -0
- package/dist/src/typecheck/alias.js.map +1 -0
- package/dist/src/typecheck/browser.d.ts +41 -4
- package/dist/src/typecheck/browser.d.ts.map +1 -1
- package/dist/src/typecheck/browser.js +111 -16
- package/dist/src/typecheck/browser.js.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.js +1 -1
- package/dist/src/typecheck/effects.js.map +1 -1
- package/dist/src/typecheck/expression.js +1 -1
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/generics.js +1 -1
- package/dist/src/typecheck/generics.js.map +1 -1
- package/dist/src/typecheck/module.d.ts.map +1 -1
- package/dist/src/typecheck/module.js +13 -8
- package/dist/src/typecheck/module.js.map +1 -1
- package/dist/src/typecheck/pattern.js +1 -1
- package/dist/src/typecheck/pattern.js.map +1 -1
- package/dist/src/typecheck/pure.d.ts +66 -0
- package/dist/src/typecheck/pure.d.ts.map +1 -0
- package/dist/src/typecheck/pure.js +163 -0
- package/dist/src/typecheck/pure.js.map +1 -0
- package/dist/src/typecheck/statement.js +1 -1
- package/dist/src/typecheck/statement.js.map +1 -1
- package/dist/src/typecheck/type_system.d.ts +6 -1
- package/dist/src/typecheck/type_system.d.ts.map +1 -1
- package/dist/src/typecheck/type_system.js +61 -13
- package/dist/src/typecheck/type_system.js.map +1 -1
- package/dist/src/typecheck/utils.d.ts +4 -69
- package/dist/src/typecheck/utils.d.ts.map +1 -1
- package/dist/src/typecheck/utils.js +17 -170
- package/dist/src/typecheck/utils.js.map +1 -1
- package/dist/src/typecheck/workflow.js +1 -1
- package/dist/src/typecheck/workflow.js.map +1 -1
- package/dist/src/typecheck-pii.d.ts.map +1 -1
- package/dist/src/typecheck-pii.js +11 -1
- package/dist/src/typecheck-pii.js.map +1 -1
- package/dist/src/types/base.d.ts +1 -0
- package/dist/src/types/base.d.ts.map +1 -1
- package/dist/src/types.d.ts +17 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/test/type-checker/pii-propagation.test.js +24 -18
- package/dist/test/type-checker/pii-propagation.test.js.map +1 -1
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts +2 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts.map +1 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js +193 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js.map +1 -0
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js +21 -11
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js.map +1 -1
- package/dist/test/unit/canonicalizer/canonicalizer.test.js +120 -1
- package/dist/test/unit/canonicalizer/canonicalizer.test.js.map +1 -1
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js +118 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js.map +1 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js +40 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js.map +1 -0
- package/dist/test/unit/config/lexicons/i18n.test.js +11 -3
- package/dist/test/unit/config/lexicons/i18n.test.js.map +1 -1
- package/dist/test/unit/config/lexicons/zh-CN.test.js +129 -132
- package/dist/test/unit/config/lexicons/zh-CN.test.js.map +1 -1
- package/dist/test/unit/keyword-translator.test.js +16 -19
- package/dist/test/unit/keyword-translator.test.js.map +1 -1
- package/dist/test/unit/lowering/lowering.test.js +12 -0
- package/dist/test/unit/lowering/lowering.test.js.map +1 -1
- package/dist/test/unit/parser/entry-annotations.test.d.ts +2 -0
- package/dist/test/unit/parser/entry-annotations.test.d.ts.map +1 -0
- package/dist/test/unit/parser/entry-annotations.test.js +110 -0
- package/dist/test/unit/parser/entry-annotations.test.js.map +1 -0
- package/dist/test/unit/parser/parser.test.js +30 -6
- package/dist/test/unit/parser/parser.test.js.map +1 -1
- package/dist/test/unit/scripts/verify-browser-entry.test.d.ts +2 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.d.ts.map +1 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.js +179 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.js.map +1 -0
- package/dist/test/unit/typecheck/function-return-inference.test.d.ts +2 -0
- package/dist/test/unit/typecheck/function-return-inference.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/function-return-inference.test.js +79 -0
- package/dist/test/unit/typecheck/function-return-inference.test.js.map +1 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts +2 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js +191 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js.map +1 -0
- package/dist/test/unit/typecheck/should-enforce-pii.test.js +25 -110
- package/dist/test/unit/typecheck/should-enforce-pii.test.js.map +1 -1
- package/dist/test/unit/typecheck/type-system.test.js +83 -3
- package/dist/test/unit/typecheck/type-system.test.js.map +1 -1
- package/package.json +38 -9
|
@@ -64,13 +64,35 @@ class ReturnSignal {
|
|
|
64
64
|
this.value = value;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* 闭包运行时值:求值 Lambda 表达式的结果。捕获 lambda 的参数、函数体以及
|
|
69
|
+
* 定义处的词法环境(lexical capture),从而支持引用外层变量的高阶函数
|
|
70
|
+
* (如 List.map / Maybe.map 的回调)。与 aster-lang-truffle 的 LambdaValue
|
|
71
|
+
* 语义对齐:调用时把实参绑定到参数名,叠加捕获的环境后执行函数体。
|
|
72
|
+
*/
|
|
73
|
+
class Closure {
|
|
74
|
+
params;
|
|
75
|
+
body;
|
|
76
|
+
capturedEnv;
|
|
77
|
+
__closure = true;
|
|
78
|
+
constructor(params, body, capturedEnv) {
|
|
79
|
+
this.params = params;
|
|
80
|
+
this.body = body;
|
|
81
|
+
this.capturedEnv = capturedEnv;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
67
84
|
/** 安全限制常量 */
|
|
68
85
|
const MAX_STEPS = 10_000;
|
|
69
86
|
const MAX_CALL_DEPTH = 50;
|
|
87
|
+
/** evalStdlibCall 的哨兵返回值:表示"不是已知 stdlib 调用"。用 Symbol 避免与任何合法返回值冲突。 */
|
|
88
|
+
const NOT_STDLIB = Symbol('not-stdlib');
|
|
70
89
|
/** 内置运算符集合 */
|
|
71
90
|
const BUILTIN_OPS = new Set([
|
|
72
|
-
'+', '-', '*', '/',
|
|
73
|
-
|
|
91
|
+
'+', '-', '*', '/', '//', '%',
|
|
92
|
+
// 比较运算符必须与 evalBinaryOp 的 switch 分支一一对应。遗漏 '!='
|
|
93
|
+
// 会让 `not equal to`(降低为 Call(Name('!='), …))越过内置分发、
|
|
94
|
+
// 落入用户函数查找,从而抛出 "Undefined function '!='"。
|
|
95
|
+
'>', '<', '>=', '<=', '==', '!=',
|
|
74
96
|
'and', 'or', 'not',
|
|
75
97
|
]);
|
|
76
98
|
/**
|
|
@@ -213,14 +235,37 @@ class Interpreter {
|
|
|
213
235
|
switch (pattern.kind) {
|
|
214
236
|
case 'PatNull':
|
|
215
237
|
return value === null || value === undefined;
|
|
216
|
-
case 'PatName':
|
|
217
|
-
//
|
|
238
|
+
case 'PatName': {
|
|
239
|
+
// PatName 双语义,与 Java MatchNode.PatNameNode 对齐:
|
|
240
|
+
// - 大写开头(枚举变体/类型名,如 NotFound)→ 按名称相等匹配,不绑定。
|
|
241
|
+
// 否则第一个 PatName 臂会吞掉所有输入(match_enum/enum_wildcard bug)。
|
|
242
|
+
// - 小写开头(绑定变量,如 x/value)→ catch-all,匹配任意非 null 值并绑定。
|
|
243
|
+
const isVariant = /^[A-Z]/.test(pattern.name);
|
|
244
|
+
if (isVariant) {
|
|
245
|
+
if (value === null || value === undefined)
|
|
246
|
+
return false;
|
|
247
|
+
if (typeof value === 'string')
|
|
248
|
+
return value === pattern.name;
|
|
249
|
+
if (typeof value === 'object') {
|
|
250
|
+
const o = value;
|
|
251
|
+
// 枚举值 { value: "Invalid" } 或构造体 { __type: "Color" }
|
|
252
|
+
return o.value === pattern.name || o.__type === pattern.name;
|
|
253
|
+
}
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
// 小写:catch-all 绑定(Java 端非 null 才匹配)。
|
|
257
|
+
if (value === null || value === undefined)
|
|
258
|
+
return false;
|
|
218
259
|
env.set(pattern.name, value);
|
|
219
260
|
return true;
|
|
261
|
+
}
|
|
220
262
|
case 'PatInt':
|
|
221
263
|
return value === pattern.value;
|
|
222
264
|
case 'PatCtor': {
|
|
223
|
-
// 构造器模式匹配(如 Ok(
|
|
265
|
+
// 构造器模式匹配(如 Ok(value)、Err(err)、Some(x)、User(id, name))。
|
|
266
|
+
// 与 aster-lang-truffle MatchNode.PatCtorNode 对齐:按位置(非按名)把
|
|
267
|
+
// 构造体的非 __type 字段值依序绑定到模式的 bind 名——因为 Ok(value)/
|
|
268
|
+
// Err(err) 的载荷统一存于 `value` 字段,绑定名却各异,按名绑定会落空。
|
|
224
269
|
if (value === null || value === undefined || typeof value !== 'object') {
|
|
225
270
|
return false;
|
|
226
271
|
}
|
|
@@ -228,10 +273,14 @@ class Interpreter {
|
|
|
228
273
|
if (obj.__type !== pattern.typeName) {
|
|
229
274
|
return false;
|
|
230
275
|
}
|
|
231
|
-
|
|
276
|
+
const fieldValues = Object.keys(obj)
|
|
277
|
+
.filter((k) => k !== '__type')
|
|
278
|
+
.map((k) => obj[k]);
|
|
232
279
|
if (pattern.names) {
|
|
233
|
-
for (
|
|
234
|
-
|
|
280
|
+
for (let i = 0; i < pattern.names.length; i++) {
|
|
281
|
+
const bn = pattern.names[i];
|
|
282
|
+
if (bn && bn !== '_')
|
|
283
|
+
env.set(bn, fieldValues[i]);
|
|
235
284
|
}
|
|
236
285
|
}
|
|
237
286
|
return true;
|
|
@@ -274,7 +323,8 @@ class Interpreter {
|
|
|
274
323
|
case 'Some':
|
|
275
324
|
return { __type: 'Some', value: this.evalExpr(expr.expr, env) };
|
|
276
325
|
case 'Lambda':
|
|
277
|
-
|
|
326
|
+
// 词法捕获当前环境的快照,避免后续 Set 改写影响已创建的闭包。
|
|
327
|
+
return new Closure(expr.params, expr.body, new Map(env));
|
|
278
328
|
case 'Await':
|
|
279
329
|
throw new InterpreterError('Await expressions are not supported in the interpreter');
|
|
280
330
|
default:
|
|
@@ -321,15 +371,41 @@ class Interpreter {
|
|
|
321
371
|
if (call.target.kind === 'Name' && BUILTIN_OPS.has(call.target.name)) {
|
|
322
372
|
return this.evalBuiltinOp(call.target.name, call.args, env);
|
|
323
373
|
}
|
|
324
|
-
//
|
|
374
|
+
// Ok/Err/Some 的调用形式(如 `Ok(x)`)——TS 前端把它降为 Call{Name 'Ok'}
|
|
375
|
+
// 而非 Expr.Ok(关键字形式 `ok of x` 才降为 Expr.Ok)。与 Java AstBuilder
|
|
376
|
+
// 对 Ok/Err/Some/None 调用形式的特判对齐,统一构造判定结果。
|
|
377
|
+
if (call.target.kind === 'Name') {
|
|
378
|
+
const ctor = call.target.name;
|
|
379
|
+
if ((ctor === 'Ok' || ctor === 'Err' || ctor === 'Some') && call.args.length === 1) {
|
|
380
|
+
return { __type: ctor, value: this.evalExpr(call.args[0], env) };
|
|
381
|
+
}
|
|
382
|
+
if (ctor === 'None' && call.args.length === 0) {
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
// stdlib namespaced builtin(Text.* 等),与 Java Builtins 对齐。
|
|
387
|
+
// 必须在用户函数查找之前,否则 Text.concat 落入未定义函数分支。
|
|
388
|
+
if (call.target.kind === 'Name' && call.target.name.includes('.')) {
|
|
389
|
+
const stdlib = this.evalStdlibCall(call.target.name, call.args, env);
|
|
390
|
+
if (stdlib !== NOT_STDLIB)
|
|
391
|
+
return stdlib;
|
|
392
|
+
}
|
|
393
|
+
// 函数调用:可能是用户定义的模块函数,或绑定在环境里的闭包变量
|
|
394
|
+
// (Let f be function with …)。先求值参数,再分派。
|
|
325
395
|
if (call.target.kind === 'Name') {
|
|
326
396
|
const funcName = call.target.name;
|
|
397
|
+
const argValues = call.args.map(arg => this.evalExpr(arg, env));
|
|
398
|
+
// 闭包变量优先(局部绑定遮蔽同名模块函数)。
|
|
399
|
+
if (env.has(funcName)) {
|
|
400
|
+
const bound = env.get(funcName);
|
|
401
|
+
if (bound instanceof Closure) {
|
|
402
|
+
return this.applyClosure(bound, argValues);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
327
405
|
const func = this.funcs.get(funcName);
|
|
328
406
|
if (!func) {
|
|
329
407
|
throw new InterpreterError(`Undefined function '${funcName}'`);
|
|
330
408
|
}
|
|
331
|
-
// 求值参数
|
|
332
|
-
const argValues = call.args.map(arg => this.evalExpr(arg, env));
|
|
333
409
|
// 构建函数环境
|
|
334
410
|
const funcEnv = new Map();
|
|
335
411
|
for (let i = 0; i < func.params.length; i++) {
|
|
@@ -340,6 +416,243 @@ class Interpreter {
|
|
|
340
416
|
}
|
|
341
417
|
throw new InterpreterError(`Cannot call expression of kind '${call.target.kind}'`);
|
|
342
418
|
}
|
|
419
|
+
/**
|
|
420
|
+
* 调用一个可调用值(闭包或具名模块函数),把实参按位置绑定到形参后执行。
|
|
421
|
+
* 供高阶 stdlib(List.map / List.filter / List.reduce / Maybe.map /
|
|
422
|
+
* Result.mapOk 等)统一复用——回调既可以是 \`Let f be function …\` 产生的
|
|
423
|
+
* 闭包,也可以是直接传入的模块函数名(如 \`List.map(xs, id)\`)。
|
|
424
|
+
*/
|
|
425
|
+
applyCallable(callable, args) {
|
|
426
|
+
if (callable instanceof Closure) {
|
|
427
|
+
return this.applyClosure(callable, args);
|
|
428
|
+
}
|
|
429
|
+
if (typeof callable === 'string') {
|
|
430
|
+
// 具名模块函数(作为一等函数传入)。
|
|
431
|
+
const func = this.funcs.get(callable);
|
|
432
|
+
if (!func) {
|
|
433
|
+
throw new InterpreterError(`Undefined function '${callable}' used as callback`);
|
|
434
|
+
}
|
|
435
|
+
const funcEnv = new Map();
|
|
436
|
+
for (let i = 0; i < func.params.length; i++) {
|
|
437
|
+
funcEnv.set(func.params[i].name, i < args.length ? args[i] : null);
|
|
438
|
+
}
|
|
439
|
+
return this.invokeFunc(func, funcEnv);
|
|
440
|
+
}
|
|
441
|
+
throw new InterpreterError('Expected a function (lambda or function name) as callback');
|
|
442
|
+
}
|
|
443
|
+
/** 以捕获环境为基底,绑定实参后执行闭包体。 */
|
|
444
|
+
applyClosure(closure, args) {
|
|
445
|
+
const callEnv = new Map(closure.capturedEnv);
|
|
446
|
+
for (let i = 0; i < closure.params.length; i++) {
|
|
447
|
+
callEnv.set(closure.params[i].name, i < args.length ? args[i] : null);
|
|
448
|
+
}
|
|
449
|
+
this.callDepth++;
|
|
450
|
+
if (this.callDepth > MAX_CALL_DEPTH) {
|
|
451
|
+
throw new InterpreterError(`Maximum call depth (${MAX_CALL_DEPTH}) exceeded`);
|
|
452
|
+
}
|
|
453
|
+
try {
|
|
454
|
+
this.execBlock(closure.body, callEnv);
|
|
455
|
+
return null;
|
|
456
|
+
}
|
|
457
|
+
catch (signal) {
|
|
458
|
+
if (signal instanceof ReturnSignal)
|
|
459
|
+
return signal.value;
|
|
460
|
+
throw signal;
|
|
461
|
+
}
|
|
462
|
+
finally {
|
|
463
|
+
this.callDepth--;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* stdlib 命名空间 builtin(Text.* 等),语义与 aster-lang-truffle Builtins
|
|
468
|
+
* 对齐。返回 NOT_STDLIB 表示不是已知 stdlib 调用(交回用户函数查找)。
|
|
469
|
+
* 目前覆盖语料库用到的 Text.* 子集;未来 List/Map/Result 可同法扩展。
|
|
470
|
+
*/
|
|
471
|
+
evalStdlibCall(name, argExprs, env) {
|
|
472
|
+
const text = (v) => String(v);
|
|
473
|
+
const a = () => argExprs.map((e) => this.evalExpr(e, env));
|
|
474
|
+
// 解析"可调用"参数:若是引用模块函数的裸 Name(非局部变量),返回函数名字符串
|
|
475
|
+
// 供 applyCallable 按名调用(如 List.map(xs, id));否则正常求值(→ Closure)。
|
|
476
|
+
const callableArg = (idx) => {
|
|
477
|
+
const e = argExprs[idx];
|
|
478
|
+
if (e && e.kind === 'Name' && !env.has(e.name) && this.funcs.has(e.name)) {
|
|
479
|
+
return e.name;
|
|
480
|
+
}
|
|
481
|
+
return e ? this.evalExpr(e, env) : null;
|
|
482
|
+
};
|
|
483
|
+
switch (name) {
|
|
484
|
+
case 'Text.concat': {
|
|
485
|
+
const [x, y] = a();
|
|
486
|
+
return text(x) + text(y);
|
|
487
|
+
}
|
|
488
|
+
case 'Text.toUpper': return text(a()[0]).toUpperCase();
|
|
489
|
+
case 'Text.toLower': return text(a()[0]).toLowerCase();
|
|
490
|
+
case 'Text.length': return text(a()[0]).length;
|
|
491
|
+
case 'Text.startsWith': {
|
|
492
|
+
const [x, y] = a();
|
|
493
|
+
return text(x).startsWith(text(y));
|
|
494
|
+
}
|
|
495
|
+
case 'Text.contains': {
|
|
496
|
+
const [x, y] = a();
|
|
497
|
+
return text(x).includes(text(y));
|
|
498
|
+
}
|
|
499
|
+
case 'Text.indexOf': {
|
|
500
|
+
const [x, y] = a();
|
|
501
|
+
return text(x).indexOf(text(y));
|
|
502
|
+
}
|
|
503
|
+
case 'Text.equals': {
|
|
504
|
+
const [x, y] = a();
|
|
505
|
+
return text(x) === text(y);
|
|
506
|
+
}
|
|
507
|
+
case 'Text.split': {
|
|
508
|
+
const [x, y] = a();
|
|
509
|
+
return text(x).split(text(y));
|
|
510
|
+
}
|
|
511
|
+
case 'Text.trim': return text(a()[0]).trim();
|
|
512
|
+
// List.* (非 lambda 部分;List.map/filter/reduce 依赖 lambda,TS 暂不支持)
|
|
513
|
+
case 'List.empty': return [];
|
|
514
|
+
case 'List.length': {
|
|
515
|
+
const [l] = a();
|
|
516
|
+
return Array.isArray(l) ? l.length : 0;
|
|
517
|
+
}
|
|
518
|
+
case 'List.isEmpty': {
|
|
519
|
+
const [l] = a();
|
|
520
|
+
return Array.isArray(l) ? l.length === 0 : true;
|
|
521
|
+
}
|
|
522
|
+
case 'List.get': {
|
|
523
|
+
const [l, i] = a();
|
|
524
|
+
return Array.isArray(l) ? l[Number(i)] : null;
|
|
525
|
+
}
|
|
526
|
+
case 'List.contains': {
|
|
527
|
+
const [l, x] = a();
|
|
528
|
+
return Array.isArray(l) ? l.includes(x) : false;
|
|
529
|
+
}
|
|
530
|
+
case 'List.append': {
|
|
531
|
+
const [l, x] = a();
|
|
532
|
+
return Array.isArray(l) ? [...l, x] : [x];
|
|
533
|
+
}
|
|
534
|
+
case 'List.concat': {
|
|
535
|
+
const [l1, l2] = a();
|
|
536
|
+
return [...(Array.isArray(l1) ? l1 : []), ...(Array.isArray(l2) ? l2 : [])];
|
|
537
|
+
}
|
|
538
|
+
// Map.* — guest map 是普通对象 { key: value }
|
|
539
|
+
case 'Map.empty': return {};
|
|
540
|
+
case 'Map.get': {
|
|
541
|
+
const [m, k] = a();
|
|
542
|
+
return m && typeof m === 'object' ? m[String(k)] ?? null : null;
|
|
543
|
+
}
|
|
544
|
+
case 'Map.contains': {
|
|
545
|
+
const [m, k] = a();
|
|
546
|
+
return m && typeof m === 'object' ? String(k) in m : false;
|
|
547
|
+
}
|
|
548
|
+
case 'Map.size': {
|
|
549
|
+
const [m] = a();
|
|
550
|
+
return m && typeof m === 'object' ? Object.keys(m).length : 0;
|
|
551
|
+
}
|
|
552
|
+
// Maybe/Option/Result(非 lambda 部分)。Some/Ok/Err/None 形如 { __type, value }。
|
|
553
|
+
case 'Maybe.withDefault':
|
|
554
|
+
case 'Option.unwrapOr':
|
|
555
|
+
case 'Maybe.unwrapOr': {
|
|
556
|
+
const [x, d] = a();
|
|
557
|
+
const o = x;
|
|
558
|
+
return o && o.__type === 'Some' ? o.value : d;
|
|
559
|
+
}
|
|
560
|
+
case 'Maybe.isSome':
|
|
561
|
+
case 'Option.isSome': {
|
|
562
|
+
const [x] = a();
|
|
563
|
+
return x?.__type === 'Some';
|
|
564
|
+
}
|
|
565
|
+
case 'Maybe.isNone':
|
|
566
|
+
case 'Option.isNone': {
|
|
567
|
+
const [x] = a();
|
|
568
|
+
return x?.__type !== 'Some';
|
|
569
|
+
}
|
|
570
|
+
case 'Result.isOk': {
|
|
571
|
+
const [r] = a();
|
|
572
|
+
return r?.__type === 'Ok';
|
|
573
|
+
}
|
|
574
|
+
case 'Result.isErr': {
|
|
575
|
+
const [r] = a();
|
|
576
|
+
return r?.__type === 'Err';
|
|
577
|
+
}
|
|
578
|
+
// === 高阶(lambda)List 操作 ===
|
|
579
|
+
// List.map(list, fn) — fn 接收 (item),返回新列表。
|
|
580
|
+
case 'List.map': {
|
|
581
|
+
const list = this.evalExpr(argExprs[0], env);
|
|
582
|
+
const fn = callableArg(1);
|
|
583
|
+
if (!Array.isArray(list))
|
|
584
|
+
throw new InterpreterError(`List.map: expected List, got ${typeof list}`);
|
|
585
|
+
return list.map((item) => this.applyCallable(fn, [item]));
|
|
586
|
+
}
|
|
587
|
+
// List.filter(list, pred) — pred 接收 (item),返回布尔。
|
|
588
|
+
case 'List.filter': {
|
|
589
|
+
const list = this.evalExpr(argExprs[0], env);
|
|
590
|
+
const fn = callableArg(1);
|
|
591
|
+
if (!Array.isArray(list))
|
|
592
|
+
throw new InterpreterError(`List.filter: expected List, got ${typeof list}`);
|
|
593
|
+
return list.filter((item) => this.applyCallable(fn, [item]) === true);
|
|
594
|
+
}
|
|
595
|
+
// List.reduce(list, init, fn) — fn 接收 (accumulator, item),返回新累加值。
|
|
596
|
+
case 'List.reduce': {
|
|
597
|
+
const list = this.evalExpr(argExprs[0], env);
|
|
598
|
+
const init = this.evalExpr(argExprs[1], env);
|
|
599
|
+
const fn = callableArg(2);
|
|
600
|
+
if (!Array.isArray(list))
|
|
601
|
+
throw new InterpreterError(`List.reduce: expected List, got ${typeof list}`);
|
|
602
|
+
let acc = init;
|
|
603
|
+
for (const item of list)
|
|
604
|
+
acc = this.applyCallable(fn, [acc, item]);
|
|
605
|
+
return acc;
|
|
606
|
+
}
|
|
607
|
+
// === 高阶 Maybe / Result 操作 ===
|
|
608
|
+
// Maybe.map(opt, fn):Some(v)→Some(fn(v)),None 原样返回。
|
|
609
|
+
case 'Maybe.map':
|
|
610
|
+
case 'Option.map': {
|
|
611
|
+
const o = this.evalExpr(argExprs[0], env);
|
|
612
|
+
if (o && o.__type === 'Some') {
|
|
613
|
+
const fn = callableArg(1);
|
|
614
|
+
return { __type: 'Some', value: this.applyCallable(fn, [o.value]) };
|
|
615
|
+
}
|
|
616
|
+
return { __type: 'None' };
|
|
617
|
+
}
|
|
618
|
+
// Result.mapOk(res, fn):Ok(v)→Ok(fn(v)),Err 原样返回。
|
|
619
|
+
case 'Result.mapOk': {
|
|
620
|
+
const r = this.evalExpr(argExprs[0], env);
|
|
621
|
+
if (r && r.__type === 'Err')
|
|
622
|
+
return r;
|
|
623
|
+
if (r && r.__type === 'Ok') {
|
|
624
|
+
const fn = callableArg(1);
|
|
625
|
+
return { __type: 'Ok', value: this.applyCallable(fn, [r.value]) };
|
|
626
|
+
}
|
|
627
|
+
throw new InterpreterError('Result.mapOk: expected Result (Ok or Err)');
|
|
628
|
+
}
|
|
629
|
+
// Result.mapErr(res, fn):Err(v)→Err(fn(v)),Ok 原样返回。
|
|
630
|
+
case 'Result.mapErr': {
|
|
631
|
+
const r = this.evalExpr(argExprs[0], env);
|
|
632
|
+
if (r && r.__type === 'Ok')
|
|
633
|
+
return r;
|
|
634
|
+
if (r && r.__type === 'Err') {
|
|
635
|
+
const fn = callableArg(1);
|
|
636
|
+
return { __type: 'Err', value: this.applyCallable(fn, [r.value]) };
|
|
637
|
+
}
|
|
638
|
+
throw new InterpreterError('Result.mapErr: expected Result (Ok or Err)');
|
|
639
|
+
}
|
|
640
|
+
// Result.tapError(res, fn):对 Err 调用 fn 产生副作用后原样返回 Err;Ok 原样返回。
|
|
641
|
+
case 'Result.tapError': {
|
|
642
|
+
const r = this.evalExpr(argExprs[0], env);
|
|
643
|
+
if (r && r.__type === 'Ok')
|
|
644
|
+
return r;
|
|
645
|
+
if (r && r.__type === 'Err') {
|
|
646
|
+
const fn = callableArg(1);
|
|
647
|
+
this.applyCallable(fn, [r.value]); // 副作用,丢弃返回值
|
|
648
|
+
return r;
|
|
649
|
+
}
|
|
650
|
+
throw new InterpreterError('Result.tapError: expected Result (Ok or Err)');
|
|
651
|
+
}
|
|
652
|
+
default:
|
|
653
|
+
return NOT_STDLIB;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
343
656
|
/** 求值内置运算符 */
|
|
344
657
|
evalBuiltinOp(op, args, env) {
|
|
345
658
|
// 单目运算符
|
|
@@ -395,6 +708,22 @@ class Interpreter {
|
|
|
395
708
|
}
|
|
396
709
|
return left / right;
|
|
397
710
|
}
|
|
711
|
+
case '//': {
|
|
712
|
+
// 整除:向零截断(Math.trunc),与 Java intdiv builtin 一致。
|
|
713
|
+
this.assertNumbers(op, left, right);
|
|
714
|
+
if (right === 0) {
|
|
715
|
+
throw new InterpreterError('Division by zero');
|
|
716
|
+
}
|
|
717
|
+
return Math.trunc(left / right);
|
|
718
|
+
}
|
|
719
|
+
case '%': {
|
|
720
|
+
// 取模:JS `%` 已是向零截断语义,与 Java mod builtin 一致。
|
|
721
|
+
this.assertNumbers(op, left, right);
|
|
722
|
+
if (right === 0) {
|
|
723
|
+
throw new InterpreterError('Division by zero');
|
|
724
|
+
}
|
|
725
|
+
return left % right;
|
|
726
|
+
}
|
|
398
727
|
// 比较运算
|
|
399
728
|
case '>':
|
|
400
729
|
this.assertNumbers(op, left, right);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../../src/core/interpreter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../../src/core/interpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type ErrorCategory = 'type' | 'effect' | 'capability' | 'scope' | 'pii' | 'async';
|
|
2
2
|
export type ErrorSeverity = 'error' | 'warning' | 'info';
|
|
3
3
|
export declare const enum ErrorCode {
|
|
4
|
+
MULTIPLE_ENTRY_RULES = "MULTIPLE_ENTRY_RULES",
|
|
4
5
|
TYPE_MISMATCH = "E001",
|
|
5
6
|
TYPE_MISMATCH_ASSIGN = "E002",
|
|
6
7
|
RETURN_TYPE_MISMATCH = "E003",
|
|
@@ -58,6 +59,7 @@ export declare const enum ErrorCode {
|
|
|
58
59
|
PII_ANNOTATION_MISSING = "E401",
|
|
59
60
|
PII_SENSITIVITY_MISMATCH = "E402",
|
|
60
61
|
PII_MISSING_CONSENT_CHECK = "E403",
|
|
62
|
+
PII_ANALYZER_FAILED = "E404",
|
|
61
63
|
ASYNC_START_NOT_WAITED = "E500",
|
|
62
64
|
ASYNC_WAIT_NOT_STARTED = "E501",
|
|
63
65
|
ASYNC_DUPLICATE_START = "E502",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error_codes.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/error_codes.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AACzF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,0BAAkB,SAAS;IACzB,aAAa,SAAS;IACtB,oBAAoB,SAAS;IAC7B,oBAAoB,SAAS;IAC7B,mBAAmB,SAAS;IAC5B,iBAAiB,SAAS;IAC1B,uBAAuB,SAAS;IAChC,oBAAoB,SAAS;IAC7B,kBAAkB,SAAS;IAC3B,qBAAqB,SAAS;IAC9B,oBAAoB,SAAS;IAC7B,aAAa,SAAS;IACtB,mBAAmB,SAAS;IAC5B,sBAAsB,SAAS;IAC/B,cAAc,SAAS;IACvB,UAAU,SAAS;IACnB,mBAAmB,SAAS;IAC5B,oBAAoB,SAAS;IAC7B,mBAAmB,SAAS;IAC5B,yBAAyB,SAAS;IAClC,0BAA0B,SAAS;IACnC,iBAAiB,SAAS;IAC1B,wBAAwB,SAAS;IACjC,2BAA2B,SAAS;IACpC,sBAAsB,SAAS;IAC/B,wBAAwB,SAAS;IACjC,0BAA0B,SAAS;IACnC,8BAA8B,SAAS;IACvC,yBAAyB,SAAS;IAClC,gCAAgC,SAAS;IACzC,4BAA4B,SAAS;IACrC,oBAAoB,SAAS;IAC7B,oBAAoB,SAAS;IAC7B,iBAAiB,SAAS;IAC1B,sBAAsB,SAAS;IAC/B,kBAAkB,SAAS;IAC3B,gBAAgB,SAAS;IACzB,cAAc,SAAS;IACvB,eAAe,SAAS;IACxB,2BAA2B,SAAS;IACpC,kBAAkB,SAAS;IAC3B,mBAAmB,SAAS;IAC5B,oBAAoB,SAAS;IAC7B,qBAAqB,SAAS;IAC9B,sBAAsB,SAAS;IAC/B,uBAAuB,SAAS;IAChC,+BAA+B,SAAS;IACxC,qBAAqB,SAAS;IAC9B,qBAAqB,SAAS;IAC9B,sBAAsB,SAAS;IAC/B,eAAe,SAAS;IACxB,mBAAmB,SAAS;IAC5B,2BAA2B,SAAS;IACpC,4BAA4B,SAAS;IACrC,oBAAoB,SAAS;IAC7B,sBAAsB,SAAS;IAC/B,wBAAwB,SAAS;IACjC,yBAAyB,SAAS;IAClC,sBAAsB,SAAS;IAC/B,sBAAsB,SAAS;IAC/B,qBAAqB,SAAS;IAC9B,oBAAoB,SAAS;IAC7B,uBAAuB,SAAS;IAChC,oBAAoB,SAAS;IAC7B,gBAAgB,SAAS;IACzB,2BAA2B,SAAS;IACpC,6BAA6B,SAAS;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"error_codes.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/error_codes.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AACzF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,0BAAkB,SAAS;IACzB,oBAAoB,yBAAyB;IAC7C,aAAa,SAAS;IACtB,oBAAoB,SAAS;IAC7B,oBAAoB,SAAS;IAC7B,mBAAmB,SAAS;IAC5B,iBAAiB,SAAS;IAC1B,uBAAuB,SAAS;IAChC,oBAAoB,SAAS;IAC7B,kBAAkB,SAAS;IAC3B,qBAAqB,SAAS;IAC9B,oBAAoB,SAAS;IAC7B,aAAa,SAAS;IACtB,mBAAmB,SAAS;IAC5B,sBAAsB,SAAS;IAC/B,cAAc,SAAS;IACvB,UAAU,SAAS;IACnB,mBAAmB,SAAS;IAC5B,oBAAoB,SAAS;IAC7B,mBAAmB,SAAS;IAC5B,yBAAyB,SAAS;IAClC,0BAA0B,SAAS;IACnC,iBAAiB,SAAS;IAC1B,wBAAwB,SAAS;IACjC,2BAA2B,SAAS;IACpC,sBAAsB,SAAS;IAC/B,wBAAwB,SAAS;IACjC,0BAA0B,SAAS;IACnC,8BAA8B,SAAS;IACvC,yBAAyB,SAAS;IAClC,gCAAgC,SAAS;IACzC,4BAA4B,SAAS;IACrC,oBAAoB,SAAS;IAC7B,oBAAoB,SAAS;IAC7B,iBAAiB,SAAS;IAC1B,sBAAsB,SAAS;IAC/B,kBAAkB,SAAS;IAC3B,gBAAgB,SAAS;IACzB,cAAc,SAAS;IACvB,eAAe,SAAS;IACxB,2BAA2B,SAAS;IACpC,kBAAkB,SAAS;IAC3B,mBAAmB,SAAS;IAC5B,oBAAoB,SAAS;IAC7B,qBAAqB,SAAS;IAC9B,sBAAsB,SAAS;IAC/B,uBAAuB,SAAS;IAChC,+BAA+B,SAAS;IACxC,qBAAqB,SAAS;IAC9B,qBAAqB,SAAS;IAC9B,sBAAsB,SAAS;IAC/B,eAAe,SAAS;IACxB,mBAAmB,SAAS;IAC5B,2BAA2B,SAAS;IACpC,4BAA4B,SAAS;IACrC,oBAAoB,SAAS;IAC7B,sBAAsB,SAAS;IAC/B,wBAAwB,SAAS;IACjC,yBAAyB,SAAS;IAClC,mBAAmB,SAAS;IAC5B,sBAAsB,SAAS;IAC/B,sBAAsB,SAAS;IAC/B,qBAAqB,SAAS;IAC9B,oBAAoB,SAAS;IAC7B,uBAAuB,SAAS;IAChC,oBAAoB,SAAS;IAC7B,gBAAgB,SAAS;IACzB,2BAA2B,SAAS;IACpC,6BAA6B,SAAS;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAqEpD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,CAuE3D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACvC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAC7D,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAE/D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// 本文件由 scripts/generate_error_codes.ts 自动生成,请勿手动修改。
|
|
2
2
|
// 源数据: shared/error_codes.json
|
|
3
3
|
export const ERROR_MESSAGES = {
|
|
4
|
+
["MULTIPLE_ENTRY_RULES" /* ErrorCode.MULTIPLE_ENTRY_RULES */]: "Multiple @entry rules found in module: {first} and {second}",
|
|
4
5
|
["E001" /* ErrorCode.TYPE_MISMATCH */]: "Type mismatch: expected {expected}, got {actual}",
|
|
5
6
|
["E002" /* ErrorCode.TYPE_MISMATCH_ASSIGN */]: "Type mismatch assigning to '{name}': {expected} vs {actual}",
|
|
6
7
|
["E003" /* ErrorCode.RETURN_TYPE_MISMATCH */]: "Return type mismatch: expected {expected}, got {actual}",
|
|
@@ -58,6 +59,7 @@ export const ERROR_MESSAGES = {
|
|
|
58
59
|
["E401" /* ErrorCode.PII_ANNOTATION_MISSING */]: "PII annotation missing for value flowing into '{sink}'",
|
|
59
60
|
["E402" /* ErrorCode.PII_SENSITIVITY_MISMATCH */]: "PII sensitivity mismatch: required {required}, got {actual}",
|
|
60
61
|
["E403" /* ErrorCode.PII_MISSING_CONSENT_CHECK */]: "Function '{func}' processes PII data without consent check (GDPR Art. 6)",
|
|
62
|
+
["E404" /* ErrorCode.PII_ANALYZER_FAILED */]: "PII safety analysis failed for this module — the editor cannot verify whether sensitive data is correctly handled. This policy should not be deployed until the analysis succeeds. Internal reason: {reason}",
|
|
61
63
|
["E500" /* ErrorCode.ASYNC_START_NOT_WAITED */]: "Started async task '{task}' not waited",
|
|
62
64
|
["E501" /* ErrorCode.ASYNC_WAIT_NOT_STARTED */]: "Waiting for async task '{task}' that was never started",
|
|
63
65
|
["E502" /* ErrorCode.ASYNC_DUPLICATE_START */]: "Async task '{task}' started multiple times ({count} occurrences)",
|
|
@@ -69,6 +71,7 @@ export const ERROR_MESSAGES = {
|
|
|
69
71
|
["W106" /* ErrorCode.WORKFLOW_TIMEOUT_UNREASONABLE */]: "Workflow timeout configuration may be unreasonable: {reason}",
|
|
70
72
|
};
|
|
71
73
|
export const ERROR_METADATA = {
|
|
74
|
+
["MULTIPLE_ENTRY_RULES" /* ErrorCode.MULTIPLE_ENTRY_RULES */]: { code: "MULTIPLE_ENTRY_RULES" /* ErrorCode.MULTIPLE_ENTRY_RULES */, category: 'type', severity: 'error', message: "Multiple @entry rules found in module: {first} and {second}", help: "Keep at most one Rule annotated with @entry in a module." },
|
|
72
75
|
["E001" /* ErrorCode.TYPE_MISMATCH */]: { code: "E001" /* ErrorCode.TYPE_MISMATCH */, category: 'type', severity: 'error', message: "Type mismatch: expected {expected}, got {actual}", help: "Check that the type annotation matches the inferred expression type." },
|
|
73
76
|
["E002" /* ErrorCode.TYPE_MISMATCH_ASSIGN */]: { code: "E002" /* ErrorCode.TYPE_MISMATCH_ASSIGN */, category: 'type', severity: 'error', message: "Type mismatch assigning to '{name}': {expected} vs {actual}", help: "Ensure the variable's previous binding type matches the current assignment." },
|
|
74
77
|
["E003" /* ErrorCode.RETURN_TYPE_MISMATCH */]: { code: "E003" /* ErrorCode.RETURN_TYPE_MISMATCH */, category: 'type', severity: 'error', message: "Return type mismatch: expected {expected}, got {actual}", help: "Check that the return statement matches the declared return type." },
|
|
@@ -99,9 +102,11 @@ export const ERROR_METADATA = {
|
|
|
99
102
|
["E028" /* ErrorCode.COMPENSATE_NEW_CAPABILITY */]: { code: "E028" /* ErrorCode.COMPENSATE_NEW_CAPABILITY */, category: 'capability', severity: 'error', message: "Compensate block for step '{step}' in function '{func}' introduces new capability {capability} that does not appear in the main step body.", help: "Compensate blocks can only reuse capabilities from the main step body." },
|
|
100
103
|
["E029" /* ErrorCode.WORKFLOW_UNKNOWN_STEP_DEPENDENCY */]: { code: "E029" /* ErrorCode.WORKFLOW_UNKNOWN_STEP_DEPENDENCY */, category: 'scope', severity: 'error', message: "Workflow step '{step}' depends on undefined step '{dependency}'.", help: "Only reference declared step names in the current workflow." },
|
|
101
104
|
["E030" /* ErrorCode.WORKFLOW_CIRCULAR_DEPENDENCY */]: { code: "E030" /* ErrorCode.WORKFLOW_CIRCULAR_DEPENDENCY */, category: 'type', severity: 'error', message: "Workflow contains circular step dependency: {cycle}", help: "Remove or restructure circular dependencies to enable topological execution." },
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
["
|
|
105
|
+
// P0-R2 (codex review Medium #10): PII codes 统一分类为 'pii'(原本是
|
|
106
|
+
// 'type' 是历史遗留,让 PII_CODES 自动派生不可能正确)
|
|
107
|
+
["E070" /* ErrorCode.PII_ASSIGN_DOWNGRADE */]: { code: "E070" /* ErrorCode.PII_ASSIGN_DOWNGRADE */, category: 'pii', severity: 'error', message: "Cannot assign PII data to lower-level target: {source} -> {target}", help: "Use a sanitization function or declare a matching @pii level on the target." },
|
|
108
|
+
["E072" /* ErrorCode.PII_SINK_UNSANITIZED */]: { code: "E072" /* ErrorCode.PII_SINK_UNSANITIZED */, category: 'pii', severity: 'error', message: "PII level {level} data output to {sinkKind} without sanitization", help: "Call redact() or tokenize() before output to reduce sensitivity." },
|
|
109
|
+
["E073" /* ErrorCode.PII_ARG_VIOLATION */]: { code: "E073" /* ErrorCode.PII_ARG_VIOLATION */, category: 'pii', severity: 'error', message: "PII argument type mismatch: expected {expected}, got {actual}", help: "Check the function signature to ensure PII levels and categories match." },
|
|
105
110
|
["E100" /* ErrorCode.DUPLICATE_IMPORT_ALIAS */]: { code: "E100" /* ErrorCode.DUPLICATE_IMPORT_ALIAS */, category: 'scope', severity: 'warning', message: "Duplicate import alias '{alias}'.", help: "Use unique aliases for different imports to avoid shadowing." },
|
|
106
111
|
["E101" /* ErrorCode.UNDEFINED_VARIABLE */]: { code: "E101" /* ErrorCode.UNDEFINED_VARIABLE */, category: 'scope', severity: 'error', message: "Undefined variable: {name}", help: "Declare and initialize the variable before use." },
|
|
107
112
|
["E102" /* ErrorCode.DUPLICATE_SYMBOL */]: { code: "E102" /* ErrorCode.DUPLICATE_SYMBOL */, category: 'scope', severity: 'error', message: "Symbol '{name}' is already defined in this scope.", help: "Choose a different name or check for unintended duplicate declarations." },
|
|
@@ -126,13 +131,14 @@ export const ERROR_METADATA = {
|
|
|
126
131
|
["E401" /* ErrorCode.PII_ANNOTATION_MISSING */]: { code: "E401" /* ErrorCode.PII_ANNOTATION_MISSING */, category: 'pii', severity: 'error', message: "PII annotation missing for value flowing into '{sink}'", help: "Add @pii annotation to sensitive data for tracking." },
|
|
127
132
|
["E402" /* ErrorCode.PII_SENSITIVITY_MISMATCH */]: { code: "E402" /* ErrorCode.PII_SENSITIVITY_MISMATCH */, category: 'pii', severity: 'warning', message: "PII sensitivity mismatch: required {required}, got {actual}", help: "Adjust the data sensitivity level or update the process requirements." },
|
|
128
133
|
["E403" /* ErrorCode.PII_MISSING_CONSENT_CHECK */]: { code: "E403" /* ErrorCode.PII_MISSING_CONSENT_CHECK */, category: 'pii', severity: 'warning', message: "Function '{func}' processes PII data without consent check (GDPR Art. 6)", help: "Call checkConsent() or add @consent_required annotation before processing PII data." },
|
|
134
|
+
["E404" /* ErrorCode.PII_ANALYZER_FAILED */]: { code: "E404" /* ErrorCode.PII_ANALYZER_FAILED */, category: 'pii', severity: 'error', message: "PII safety analysis failed for this module — the editor cannot verify whether sensitive data is correctly handled. This policy should not be deployed until the analysis succeeds. Internal reason: {reason}", help: "Try saving and reloading the file. If the error persists, contact your administrator or report this issue with the source code attached." },
|
|
129
135
|
["E500" /* ErrorCode.ASYNC_START_NOT_WAITED */]: { code: "E500" /* ErrorCode.ASYNC_START_NOT_WAITED */, category: 'async', severity: 'error', message: "Started async task '{task}' not waited", help: "Call wait on started async tasks to ensure completion." },
|
|
130
136
|
["E501" /* ErrorCode.ASYNC_WAIT_NOT_STARTED */]: { code: "E501" /* ErrorCode.ASYNC_WAIT_NOT_STARTED */, category: 'async', severity: 'error', message: "Waiting for async task '{task}' that was never started", help: "Ensure the task name in wait matches a started task." },
|
|
131
137
|
["E502" /* ErrorCode.ASYNC_DUPLICATE_START */]: { code: "E502" /* ErrorCode.ASYNC_DUPLICATE_START */, category: 'async', severity: 'error', message: "Async task '{task}' started multiple times ({count} occurrences)", help: "Avoid starting the same task multiple times; reuse or rename." },
|
|
132
138
|
["E503" /* ErrorCode.ASYNC_DUPLICATE_WAIT */]: { code: "E503" /* ErrorCode.ASYNC_DUPLICATE_WAIT */, category: 'async', severity: 'warning', message: "Async task '{task}' waited multiple times ({count} occurrences)", help: "Ensure each task is waited on only once, or use a separate synchronization mechanism." },
|
|
133
139
|
["E504" /* ErrorCode.ASYNC_WAIT_BEFORE_START */]: { code: "E504" /* ErrorCode.ASYNC_WAIT_BEFORE_START */, category: 'async', severity: 'error', message: "Wait for async task '{task}' occurs before any matching start", help: "Execute start before wait, and ensure both are on compatible control paths." },
|
|
134
|
-
["W071" /* ErrorCode.PII_IMPLICIT_UPLEVEL */]: { code: "W071" /* ErrorCode.PII_IMPLICIT_UPLEVEL */, category: '
|
|
135
|
-
["W074" /* ErrorCode.PII_SINK_UNKNOWN */]: { code: "W074" /* ErrorCode.PII_SINK_UNKNOWN */, category: '
|
|
140
|
+
["W071" /* ErrorCode.PII_IMPLICIT_UPLEVEL */]: { code: "W071" /* ErrorCode.PII_IMPLICIT_UPLEVEL */, category: 'pii', severity: 'warning', message: "Implicit PII level escalation detected: {source} -> {target}", help: "Add explicit type annotations for level changes to aid auditing." },
|
|
141
|
+
["W074" /* ErrorCode.PII_SINK_UNKNOWN */]: { code: "W074" /* ErrorCode.PII_SINK_UNKNOWN */, category: 'pii', severity: 'warning', message: "PII data may flow to {sinkKind} without annotation", help: "Add @pii annotation to track sensitive data flow." },
|
|
136
142
|
["W105" /* ErrorCode.WORKFLOW_RETRY_INCONSISTENT */]: { code: "W105" /* ErrorCode.WORKFLOW_RETRY_INCONSISTENT */, category: 'type', severity: 'warning', message: "Workflow retry configuration may be unreasonable: {reason}", help: "Check the combination of total wait time, maxAttempts, and backoff strategy." },
|
|
137
143
|
["W106" /* ErrorCode.WORKFLOW_TIMEOUT_UNREASONABLE */]: { code: "W106" /* ErrorCode.WORKFLOW_TIMEOUT_UNREASONABLE */, category: 'type', severity: 'warning', message: "Workflow timeout configuration may be unreasonable: {reason}", help: "Check whether the timeout value is too large or too small." },
|
|
138
144
|
};
|