@aster-cloud/aster-lang-ts 1.0.35 → 1.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/scripts/generate-lexicons.js +17 -1
  2. package/dist/scripts/generate-lexicons.js.map +1 -1
  3. package/dist/scripts/verify-lexicon-sync.js +10 -0
  4. package/dist/scripts/verify-lexicon-sync.js.map +1 -1
  5. package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
  6. package/dist/src/config/lexicons/zh-CN.js +1 -0
  7. package/dist/src/config/lexicons/zh-CN.js.map +1 -1
  8. package/dist/src/core/inferred_fields.d.ts +6 -0
  9. package/dist/src/core/inferred_fields.d.ts.map +1 -0
  10. package/dist/src/core/inferred_fields.js +29 -0
  11. package/dist/src/core/inferred_fields.js.map +1 -0
  12. package/dist/src/core/interpreter.js +25 -6
  13. package/dist/src/core/interpreter.js.map +1 -1
  14. package/dist/src/frontend/canonicalizer.js +2 -2
  15. package/dist/src/frontend/canonicalizer.js.map +1 -1
  16. package/dist/src/frontend/transformers.d.ts +11 -2
  17. package/dist/src/frontend/transformers.d.ts.map +1 -1
  18. package/dist/src/frontend/transformers.js +153 -10
  19. package/dist/src/frontend/transformers.js.map +1 -1
  20. package/dist/src/lower_to_core.d.ts.map +1 -1
  21. package/dist/src/lower_to_core.js +12 -5
  22. package/dist/src/lower_to_core.js.map +1 -1
  23. package/dist/src/lsp/source-positions.d.ts +1 -1
  24. package/dist/src/lsp/source-positions.d.ts.map +1 -1
  25. package/dist/src/lsp/source-positions.js +21 -3
  26. package/dist/src/lsp/source-positions.js.map +1 -1
  27. package/dist/src/mapping/candidate-generator.d.ts +19 -9
  28. package/dist/src/mapping/candidate-generator.d.ts.map +1 -1
  29. package/dist/src/mapping/candidate-generator.js +79 -40
  30. package/dist/src/mapping/candidate-generator.js.map +1 -1
  31. package/dist/src/mapping/pipeline.d.ts +6 -0
  32. package/dist/src/mapping/pipeline.d.ts.map +1 -1
  33. package/dist/src/mapping/pipeline.js +67 -74
  34. package/dist/src/mapping/pipeline.js.map +1 -1
  35. package/dist/src/nodeid/node-id-map.d.ts +7 -0
  36. package/dist/src/nodeid/node-id-map.d.ts.map +1 -1
  37. package/dist/src/nodeid/node-id-map.js +23 -13
  38. package/dist/src/nodeid/node-id-map.js.map +1 -1
  39. package/dist/src/typecheck/expression.d.ts.map +1 -1
  40. package/dist/src/typecheck/expression.js +28 -2
  41. package/dist/src/typecheck/expression.js.map +1 -1
  42. package/dist/src/typecheck/statement.d.ts +10 -0
  43. package/dist/src/typecheck/statement.d.ts.map +1 -1
  44. package/dist/src/typecheck/statement.js +19 -5
  45. package/dist/src/typecheck/statement.js.map +1 -1
  46. package/dist/test/integration/compliance/compliance-smoke.test.js +16 -9
  47. package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
  48. package/dist/test/unit/allocation-budget.test.js +41 -0
  49. package/dist/test/unit/allocation-budget.test.js.map +1 -1
  50. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.d.ts +2 -0
  51. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.d.ts.map +1 -0
  52. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js +86 -0
  53. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js.map +1 -0
  54. package/dist/test/unit/canonicalizer/transformers.test.d.ts +2 -0
  55. package/dist/test/unit/canonicalizer/transformers.test.d.ts.map +1 -0
  56. package/dist/test/unit/canonicalizer/transformers.test.js +25 -0
  57. package/dist/test/unit/canonicalizer/transformers.test.js.map +1 -0
  58. package/dist/test/unit/lsp/parse-document.test.js +39 -0
  59. package/dist/test/unit/lsp/parse-document.test.js.map +1 -1
  60. package/dist/test/unit/mapping/candidate-generator.test.js +54 -1
  61. package/dist/test/unit/mapping/candidate-generator.test.js.map +1 -1
  62. package/dist/test/unit/mapping/pipeline.test.js +22 -1
  63. package/dist/test/unit/mapping/pipeline.test.js.map +1 -1
  64. package/dist/test/unit/typecheck/e104-block-scope-parity.test.d.ts +2 -0
  65. package/dist/test/unit/typecheck/e104-block-scope-parity.test.d.ts.map +1 -0
  66. package/dist/test/unit/typecheck/e104-block-scope-parity.test.js +82 -0
  67. package/dist/test/unit/typecheck/e104-block-scope-parity.test.js.map +1 -0
  68. package/dist/test/unit/typecheck/type-inference.test.js +22 -0
  69. package/dist/test/unit/typecheck/type-inference.test.js.map +1 -1
  70. package/dist/test/unit/typecheck/untyped-field-dynamic.test.d.ts +2 -0
  71. package/dist/test/unit/typecheck/untyped-field-dynamic.test.d.ts.map +1 -0
  72. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js +172 -0
  73. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js.map +1 -0
  74. package/package.json +1 -1
@@ -8,7 +8,7 @@ import { lex } from '../../../src/frontend/lexer.js';
8
8
  import { parse } from '../../../src/parser.js';
9
9
  import { lowerModule } from '../../../src/lower_to_core.js';
10
10
  import { computeNodeIds } from '../../../src/nodeid/node-id-map.js';
11
- import { generateCandidates, collectLiteralNodes } from '../../../src/mapping/candidate-generator.js';
11
+ import { generateCandidates, relocateToSource, collectLiteralNodes } from '../../../src/mapping/candidate-generator.js';
12
12
  import { verifyMapping } from '../../../src/mapping/mapping-ir.js';
13
13
  /**
14
14
  * 确定性候选映射生成器(ADR 0037 §3/§7)。
@@ -91,6 +91,59 @@ describe('确定性候选生成器', () => {
91
91
  const outOfBounds = r.skipped.find(s => s.nodeId === '$.oob');
92
92
  assert.match(outOfBounds?.why ?? '', /超出源码范围/, `实际:${outOfBounds?.why}`);
93
93
  });
94
+ it('★列号越过该行行尾时跳过,不得切进下一行(aster-lang-ts#238)', () => {
95
+ const r = generateCandidates('ab\ncd\n', [
96
+ { nodeId: '$.overflow', kind: 'Int', origin: { start: { line: 1, col: 2 }, end: { line: 1, col: 5 } } },
97
+ { nodeId: '$.lineEnd', kind: 'Int', origin: { start: { line: 1, col: 2 }, end: { line: 1, col: 3 } } },
98
+ ]);
99
+ assert.deepEqual(r.candidates.map(c => [c.nodeId, c.text]), [['$.lineEnd', 'b']]);
100
+ assert.match(r.skipped.find(s => s.nodeId === '$.overflow')?.why ?? '', /超出源码范围/);
101
+ });
102
+ it('★重定位:canonical 删了冠词,候选区间仍指向原文里的同一段文本', () => {
103
+ const source = 'Let the total be 42 plus the 42.';
104
+ const canonical = 'Let total be 42 plus 42.';
105
+ const r = relocateToSource(source, canonical, {
106
+ candidates: [
107
+ { span: { start: 13, end: 15 }, text: '42', nodeId: '$.a' },
108
+ { span: { start: 21, end: 23 }, text: '42', nodeId: '$.b' },
109
+ ],
110
+ skipped: [],
111
+ });
112
+ assert.deepEqual(r.candidates.map(c => [c.nodeId, c.span, source.slice(c.span.start, c.span.end)]), [['$.a', { start: 17, end: 19 }, '42'], ['$.b', { start: 29, end: 31 }, '42']]);
113
+ assert.deepEqual(r.skipped, []);
114
+ });
115
+ it('★重定位:canonicalize 增删了同样的子串时不按序号硬配,跳过并报告', () => {
116
+ // 智能引号归一化:原文只有一个直引号 "x",canonical 有两个;按序号配对会把第一个字面量配到第二个上。
117
+ const r = relocateToSource('Return “x” plus "x".', 'Return "x" plus "x".', {
118
+ candidates: [
119
+ { span: { start: 7, end: 10 }, text: '"x"', nodeId: '$.a' },
120
+ { span: { start: 16, end: 19 }, text: '"x"', nodeId: '$.b' },
121
+ ],
122
+ skipped: [],
123
+ });
124
+ assert.deepEqual(r.candidates, []);
125
+ assert.deepEqual(r.skipped.map(s => s.nodeId), ['$.a', '$.b']);
126
+ assert.ok(r.skipped.every(s => /出现次数不同/.test(s.why)), JSON.stringify(r.skipped));
127
+ });
128
+ it('★起点不得落在行尾换行符上(终点可以,它是开区间)', () => {
129
+ const r = generateCandidates('ab\ncd\n', [
130
+ { nodeId: '$.startAtEol', kind: 'Int', origin: { start: { line: 1, col: 3 }, end: { line: 2, col: 2 } } },
131
+ ]);
132
+ assert.deepEqual(r.candidates, []);
133
+ assert.match(r.skipped[0]?.why ?? '', /超出源码范围/);
134
+ });
135
+ it('★重定位:原文同一行找不到候选文本、或行数不同,都跳过并报告', () => {
136
+ const notFound = relocateToSource('Return 42.', 'Return 42.', {
137
+ candidates: [{ span: { start: 7, end: 9 }, text: '42', nodeId: '$.x' }], skipped: [],
138
+ });
139
+ assert.deepEqual(notFound.candidates, []);
140
+ assert.match(notFound.skipped[0]?.why ?? '', /出现次数不同(原文 0,canonical 1)/);
141
+ const lines = relocateToSource('a\nb', 'a', {
142
+ candidates: [{ span: { start: 0, end: 1 }, text: 'a', nodeId: '$.y' }], skipped: [],
143
+ });
144
+ assert.deepEqual(lines.candidates, []);
145
+ assert.match(lines.skipped[0]?.why ?? '', /行数不同/);
146
+ });
94
147
  it('★全语料闭环:生成的候选必须能被 verifier 判定,且零 REJECTED', () => {
95
148
  // 这是本模块的核心主张:机械生成 + 机械验证 = 零误差闭环。
96
149
  // 若出现 REJECTED,说明生成器切错了位置(候选文本与节点值对不上)。
@@ -1 +1 @@
1
- {"version":3,"file":"candidate-generator.test.js","sourceRoot":"","sources":["../../../../test/unit/mapping/candidate-generator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"candidate-generator.test.js","sourceRoot":"","sources":["../../../../test/unit/mapping/candidate-generator.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { describe, it } from 'node:test';
2
2
  import assert from 'node:assert/strict';
3
- import { runSemanticBridge } from '../../../src/mapping/pipeline.js';
3
+ import { BRIDGE_DIAGNOSTIC, runSemanticBridge } from '../../../src/mapping/pipeline.js';
4
4
  /**
5
5
  * 可验证语义桥的**端到端**门禁(ADR 0037 §7 接线)。
6
6
  *
@@ -105,4 +105,25 @@ describe('语义桥端到端 — 任意文字(分层降级)', () => {
105
105
  }
106
106
  });
107
107
  });
108
+ describe('语义桥端到端 — 坐标系与失败分类(aster-lang-ts#238)', () => {
109
+ it('★候选区间是原文坐标:英文冠词被 canonicalize 删除后仍指向原文里的字面量', () => {
110
+ const src = 'Module m.\n\nRule f, produce Int:\n Let the total be 42.\n Return the total.\n';
111
+ const r = runSemanticBridge(src);
112
+ assert.deepEqual(r.verified.map(v => [v.result.verdict, src.slice(v.mapping.span.start, v.mapping.span.end)]), [['VERIFIED', '42']]);
113
+ // 复核接口要求 span 宽度等于 text 长度。
114
+ assert.ok(r.verified.every(v => v.mapping.span.end - v.mapping.span.start === v.mapping.text.length));
115
+ });
116
+ it('★语法错误不得在残缺树上生成候选,必须报告为语法错误', () => {
117
+ const r = runSemanticBridge('Module m.\n\nRule f, produce Int:\n Return 42 +.\n');
118
+ assert.deepEqual(r.verified, []);
119
+ assert.ok(r.diagnostics.some(d => d.startsWith(BRIDGE_DIAGNOSTIC.syntaxError)), `实际:${JSON.stringify(r.diagnostics)}`);
120
+ assert.ok(!r.diagnostics.some(d => d.startsWith(BRIDGE_DIAGNOSTIC.internalError)));
121
+ });
122
+ it('★lex 失败归为编译失败,而不是内部错误', () => {
123
+ const r = runSemanticBridge('Module m.\n\nRule f, produce Int:\n Return 1 § 2.\n');
124
+ assert.deepEqual(r.verified, []);
125
+ assert.ok(r.diagnostics.some(d => d.startsWith(BRIDGE_DIAGNOSTIC.compileFailed) || d.startsWith(BRIDGE_DIAGNOSTIC.syntaxError)), `实际:${JSON.stringify(r.diagnostics)}`);
126
+ assert.ok(!r.diagnostics.some(d => d.startsWith(BRIDGE_DIAGNOSTIC.internalError)));
127
+ });
128
+ });
108
129
  //# sourceMappingURL=pipeline.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../../test/unit/mapping/pipeline.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../../test/unit/mapping/pipeline.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=e104-block-scope-parity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e104-block-scope-parity.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/typecheck/e104-block-scope-parity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * E104 块作用域与 Java TypeChecker 对齐(aster-lang-ts#231)。
3
+ *
4
+ * Java 端 BaseTypeChecker.checkBlock 不为 If 分支、函数体开新作用域,只有 Scope 语句、match 分支、
5
+ * lambda 才开。TS 端曾为每个块开作用域,于是「If 分支里 Let 外层同名变量」在编辑器里显示可编译,
6
+ * 而服务端保存门禁报 E104 拒绝(aster-cloud#560 的 Auto Insurance 模板即此情形)。
7
+ * 夹具取自该模板修复前后的 en/zh/de 源码;行号即 Java 端报错的行号(L42、L44)。
8
+ */
9
+ import { describe, it } from 'node:test';
10
+ import assert from 'node:assert/strict';
11
+ import { readFileSync } from 'node:fs';
12
+ import { resolve } from 'node:path';
13
+ import { compileAndTypecheck } from '../../../src/browser.js';
14
+ import { ZH_CN } from '../../../src/config/lexicons/zh-CN.js';
15
+ import { DE_DE } from '../../../src/config/lexicons/de-DE.js';
16
+ const FIXTURES = resolve(process.cwd(), 'test', 'fixtures', 'e104-shadowing');
17
+ // 中文夹具用 .txt:其 CJK 标识符无法经格式化器(只输出英文 CNL)往返,若用 .aster 会被
18
+ // formatter-corpus-roundtrip 的全仓扫描拾取而误报;en/de 夹具仍以 .aster 参与该扫描。
19
+ const LOCALES = [
20
+ { locale: 'en', ext: 'aster', lexicon: undefined },
21
+ { locale: 'zh', ext: 'txt', lexicon: ZH_CN },
22
+ { locale: 'de', ext: 'aster', lexicon: DE_DE },
23
+ ];
24
+ function e104Lines(source, lexicon) {
25
+ const result = compileAndTypecheck(source, lexicon ? { lexicon } : undefined);
26
+ return result.typeErrors
27
+ .filter((d) => d.code === "E104" /* ErrorCode.DUPLICATE_SYMBOL */)
28
+ .map((d) => d.span?.start.line ?? -1)
29
+ .sort((a, b) => a - b);
30
+ }
31
+ describe('E104:If 分支与外层共享作用域(与 Java 对齐)', () => {
32
+ for (const { locale, ext, lexicon } of LOCALES) {
33
+ it(`${locale}:分支内重绑定外层变量报 E104(L42、L44)`, () => {
34
+ const source = readFileSync(resolve(FIXTURES, `auto-insurance.${locale}.${ext}`), 'utf8');
35
+ assert.deepEqual(e104Lines(source, lexicon), [42, 44]);
36
+ });
37
+ it(`${locale}:改写为不重绑定后无 E104`, () => {
38
+ const source = readFileSync(resolve(FIXTURES, `auto-insurance-fixed.${locale}.${ext}`), 'utf8');
39
+ assert.deepEqual(e104Lines(source, lexicon), []);
40
+ });
41
+ }
42
+ it('函数体与形参同一作用域:Let 与形参同名报 E104', () => {
43
+ const source = [
44
+ 'Module m.',
45
+ '',
46
+ 'Rule r given x as Int, produce Int:',
47
+ ' Let x be 1.',
48
+ ' Return x.',
49
+ '',
50
+ ].join('\n');
51
+ assert.deepEqual(e104Lines(source, undefined), [4]);
52
+ });
53
+ it('可见性:分支内 Let 的变量在分支之后仍可见(与 Java 一致,不报未定义变量)', () => {
54
+ const source = [
55
+ 'Module m.',
56
+ '',
57
+ 'Rule r given x as Int, produce Int:',
58
+ ' If x greater than 0',
59
+ ' Let y be x plus 1.',
60
+ ' Return y.',
61
+ '',
62
+ ].join('\n');
63
+ const result = compileAndTypecheck(source);
64
+ const errors = result.typeErrors.filter((d) => d.severity === 'error');
65
+ assert.deepEqual(errors.map((d) => d.code), []);
66
+ });
67
+ it('不同变量名不受影响', () => {
68
+ const source = [
69
+ 'Module m.',
70
+ '',
71
+ 'Rule r given x as Int, produce Int:',
72
+ ' Let y be 1.',
73
+ ' If x greater than 0',
74
+ ' Let z be y plus x.',
75
+ ' Return z.',
76
+ ' Return y.',
77
+ '',
78
+ ].join('\n');
79
+ assert.deepEqual(e104Lines(source, undefined), []);
80
+ });
81
+ });
82
+ //# sourceMappingURL=e104-block-scope-parity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e104-block-scope-parity.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/e104-block-scope-parity.test.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,28 @@ function codes(diags) {
16
16
  return diags.map(d => d.code);
17
17
  }
18
18
  describe('类型推导与诊断', () => {
19
+ test('lambda 形参重名应该触发 DUPLICATE_SYMBOL', () => {
20
+ const diagnostics = runTypecheck(`
21
+ Module test.typecheck.lambda.duplicate_param.
22
+
23
+ Rule create, produce Int:
24
+ Let f be function with y as Int and y as Int, produce Int:
25
+ Return y.
26
+ Return 0.
27
+ `);
28
+ assert.equal(diagnostics.filter(d => d.code === "E104" /* ErrorCode.DUPLICATE_SYMBOL */).length, 1);
29
+ });
30
+ test('lambda 体内未定义变量应该触发 UNDEFINED_VARIABLE', () => {
31
+ const diagnostics = runTypecheck(`
32
+ Module test.typecheck.lambda.undefined_name.
33
+
34
+ Rule create, produce Int:
35
+ Let f be function with y as Int, produce Int:
36
+ Return missing.
37
+ Return 0.
38
+ `);
39
+ assert.equal(diagnostics.some(d => d.code === "E101" /* ErrorCode.UNDEFINED_VARIABLE */), true);
40
+ });
19
41
  test('泛型恒等函数应该无诊断', () => {
20
42
  const diagnostics = runTypecheck(`
21
43
  Module test.typecheck.identity.
@@ -1 +1 @@
1
- {"version":3,"file":"type-inference.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/type-inference.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-inference.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/type-inference.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=untyped-field-dynamic.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untyped-field-dynamic.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/typecheck/untyped-field-dynamic.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,172 @@
1
+ import { describe, test } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { readFileSync } from 'node:fs';
4
+ import { dirname, join } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { canonicalize } from '../../../src/frontend/canonicalizer.js';
7
+ import { lex } from '../../../src/frontend/lexer.js';
8
+ import { parse } from '../../../src/parser.js';
9
+ import { lowerModule } from '../../../src/lower_to_core.js';
10
+ import { typecheckModule } from '../../../src/typecheck.js';
11
+ import { compile } from '../../../src/browser.js';
12
+ import { evaluate } from '../../../src/core/interpreter.js';
13
+ import { Core } from '../../../src/core/core_ir.js';
14
+ import { typeOfExpr } from '../../../src/typecheck/expression.js';
15
+ import { SymbolTable } from '../../../src/typecheck/symbol_table.js';
16
+ import { DiagnosticBuilder } from '../../../src/typecheck/diagnostics.js';
17
+ import { isUnknown } from '../../../src/typecheck/pure.js';
18
+ /**
19
+ * 未声明类型的 data 字段(`Define X has a, b.`,没有 `as <Type>`)在成员访问时按动态类型处理。
20
+ *
21
+ * 背景:Action Guard 的 `context` 按设计是无类型 map(ADR 0040 §2.2),`req.context.amount`
22
+ * 需要通过类型检查。Java 引擎(aster-lang-core BaseTypeChecker)对点号名一律给 Unknown、
23
+ * 从不在成员访问上报 E011;TS 此前把无类型字段按命名推断成 Text,再对 `Text.amount` 报 E011,
24
+ * 导致同一程序 Java 接受、TS 拒绝。这里固定:无类型字段经成员访问得到 Unknown(不级联报错),
25
+ * 显式声明类型的字段仍保留 E011;运行时行为不变。
26
+ */
27
+ const repoRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..', '..');
28
+ const sample = readFileSync(join(repoRoot, 'test', 'fixtures', 'untyped-field', 'guard-cedar-sample.aster'), 'utf8');
29
+ function runTypecheck(source) {
30
+ const core = lowerModule(parse(lex(canonicalize(source))).ast);
31
+ return typecheckModule(core);
32
+ }
33
+ /** 在只含 `req: GuardRequest` 的作用域里求表达式类型,用于直接断言推断结果。 */
34
+ function typeOfDotted(core, dotted) {
35
+ const datas = new Map();
36
+ for (const d of core.decls)
37
+ if (d.kind === 'Data')
38
+ datas.set(d.name, d);
39
+ const ctx = {
40
+ datas,
41
+ enums: new Map(),
42
+ imports: new Map(),
43
+ funcSignatures: new Map(),
44
+ importedEffects: new Map(),
45
+ moduleSearchPaths: [],
46
+ };
47
+ const symbols = new SymbolTable();
48
+ symbols.define('req', Core.TypeName('GuardRequest'), 'param');
49
+ const diagnostics = new DiagnosticBuilder();
50
+ const type = typeOfExpr(ctx, symbols, Core.Name(dotted), diagnostics);
51
+ return { type, diags: diagnostics.getDiagnostics() };
52
+ }
53
+ function lowerSample() {
54
+ return lowerModule(parse(lex(canonicalize(sample))).ast);
55
+ }
56
+ function errors(diags) {
57
+ return diags.filter(d => d.severity === 'error');
58
+ }
59
+ describe('无类型字段按动态类型处理(与 Java 对齐)', () => {
60
+ test('guard-cedar-sample 类型检查零诊断', () => {
61
+ const diags = runTypecheck(sample);
62
+ assert.deepEqual(diags.map(d => `${d.code}: ${d.message}`), []);
63
+ });
64
+ test('显式类型的 record 访问未知字段仍报 E011', () => {
65
+ const diags = runTypecheck(`
66
+ Module test.typecheck.typed_unknown_field.
67
+
68
+ Define Req has action as Text, amount as Int.
69
+
70
+ Rule decide given req as Req, produce Bool:
71
+ Return req.nickname equals to "x".
72
+ `);
73
+ assert.equal(diags.some(d => d.code === "E011" /* ErrorCode.UNKNOWN_FIELD */), true);
74
+ });
75
+ test('显式 Text 字段上的成员访问仍报 E011', () => {
76
+ const diags = runTypecheck(`
77
+ Module test.typecheck.typed_text_member.
78
+
79
+ Define Req has context as Text.
80
+
81
+ Rule decide given req as Req, produce Bool:
82
+ Return req.context.amount at least 10000.
83
+ `);
84
+ assert.equal(diags.some(d => d.code === "E011" /* ErrorCode.UNKNOWN_FIELD */), true);
85
+ });
86
+ test('无类型标记不进入 Core IR(golden 与 TS↔Java 指纹不变)', () => {
87
+ const core = lowerModule(parse(lex(canonicalize(sample))).ast);
88
+ assert.equal(JSON.stringify(core).includes('typeInferred'), false);
89
+ });
90
+ test('req.context.amount 推断为 Unknown(钉住类型而非仅无诊断)', () => {
91
+ const { type, diags } = typeOfDotted(lowerSample(), 'req.context.amount');
92
+ assert.equal(isUnknown(type), true, JSON.stringify(type));
93
+ assert.deepEqual(diags, []);
94
+ });
95
+ test('无类型字段作为 Int 规则的返回值不报 E003', () => {
96
+ const diags = runTypecheck(`
97
+ Module test.typecheck.untyped_return.
98
+
99
+ Define Req has action, context.
100
+
101
+ Rule decide given req as Req, produce Int:
102
+ Return req.action.
103
+ `);
104
+ assert.deepEqual(errors(diags).map(d => `${d.code}: ${d.message}`), []);
105
+ });
106
+ test('无类型字段的成员访问作为 If 条件不报 E011', () => {
107
+ const diags = runTypecheck(`
108
+ Module test.typecheck.untyped_condition.
109
+
110
+ Define Req has action, context.
111
+
112
+ Rule decide given req as Req, produce Bool:
113
+ If req.context.flag:
114
+ Return true.
115
+ Return false.
116
+ `);
117
+ assert.deepEqual(errors(diags).map(d => `${d.code}: ${d.message}`), []);
118
+ });
119
+ test('JSON 往返后标记丢失,退回按推断类型检查(身份索引设计的已知局限)', () => {
120
+ const roundTripped = JSON.parse(JSON.stringify(lowerSample()));
121
+ const { diags } = typeOfDotted(roundTripped, 'req.context.amount');
122
+ assert.equal(diags.some(d => d.code === "E011" /* ErrorCode.UNKNOWN_FIELD */), true);
123
+ });
124
+ test('无类型字段用于比较、算术与 List.contains 均无错误', () => {
125
+ const diags = runTypecheck(`
126
+ Module test.typecheck.untyped_dynamic.
127
+
128
+ Define Req has principal_roles, context.
129
+
130
+ Rule decide given req as Req, produce Bool:
131
+ Let total be req.context.amount plus req.context.fee.
132
+ Let large be req.context.limits.refund at least 10000.
133
+ If List.contains(req.principal_roles, "x"):
134
+ Return large.
135
+ Return total greater than 5.
136
+ `);
137
+ assert.deepEqual(errors(diags).map(d => `${d.code}: ${d.message}`), []);
138
+ });
139
+ });
140
+ describe('guard-cedar-sample 运行时行为不变', () => {
141
+ const compiled = compile(sample);
142
+ assert.ok(compiled.core, JSON.stringify(compiled.diagnostics ?? []));
143
+ function outcome(req) {
144
+ const ev = evaluate(compiled.core, 'decide', {
145
+ req: {
146
+ principal_id: 'u1',
147
+ principal_type: 'User',
148
+ principal_roles: [],
149
+ resource_type: 'Order',
150
+ resource_id: 'o1',
151
+ agent_model: 'm',
152
+ context: { amount: 0 },
153
+ ...req,
154
+ },
155
+ }, { maxSteps: 10_000 });
156
+ assert.equal(ev.success, true, String(ev.error));
157
+ return ev.value.outcome;
158
+ }
159
+ test('删除客户记录需审批', () => {
160
+ assert.equal(outcome({ action: 'delete_customer_record' }), 'REQUIRE_APPROVAL');
161
+ });
162
+ test('被停用的主体拒绝', () => {
163
+ assert.equal(outcome({ action: 'read', principal_roles: ['suspended'] }), 'DENY');
164
+ });
165
+ test('大额退款升级', () => {
166
+ assert.equal(outcome({ action: 'refund', context: { amount: 20000 } }), 'ESCALATE');
167
+ });
168
+ test('小额退款放行', () => {
169
+ assert.equal(outcome({ action: 'refund', context: { amount: 50 } }), 'ALLOW');
170
+ });
171
+ });
172
+ //# sourceMappingURL=untyped-field-dynamic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untyped-field-dynamic.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/untyped-field-dynamic.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aster-cloud/aster-lang-ts",
3
- "version": "1.0.35",
3
+ "version": "1.0.37",
4
4
  "description": "Aster CNL (Controlled Natural Language) TypeScript Compiler - Lexer, Parser, AST, Core IR, Type Checker",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",