@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.
- package/dist/scripts/generate-lexicons.js +17 -1
- package/dist/scripts/generate-lexicons.js.map +1 -1
- package/dist/scripts/verify-lexicon-sync.js +10 -0
- package/dist/scripts/verify-lexicon-sync.js.map +1 -1
- package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
- package/dist/src/config/lexicons/zh-CN.js +1 -0
- package/dist/src/config/lexicons/zh-CN.js.map +1 -1
- package/dist/src/core/inferred_fields.d.ts +6 -0
- package/dist/src/core/inferred_fields.d.ts.map +1 -0
- package/dist/src/core/inferred_fields.js +29 -0
- package/dist/src/core/inferred_fields.js.map +1 -0
- package/dist/src/core/interpreter.js +25 -6
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/frontend/canonicalizer.js +2 -2
- package/dist/src/frontend/canonicalizer.js.map +1 -1
- package/dist/src/frontend/transformers.d.ts +11 -2
- package/dist/src/frontend/transformers.d.ts.map +1 -1
- package/dist/src/frontend/transformers.js +153 -10
- package/dist/src/frontend/transformers.js.map +1 -1
- package/dist/src/lower_to_core.d.ts.map +1 -1
- package/dist/src/lower_to_core.js +12 -5
- package/dist/src/lower_to_core.js.map +1 -1
- package/dist/src/lsp/source-positions.d.ts +1 -1
- package/dist/src/lsp/source-positions.d.ts.map +1 -1
- package/dist/src/lsp/source-positions.js +21 -3
- package/dist/src/lsp/source-positions.js.map +1 -1
- package/dist/src/mapping/candidate-generator.d.ts +19 -9
- package/dist/src/mapping/candidate-generator.d.ts.map +1 -1
- package/dist/src/mapping/candidate-generator.js +79 -40
- package/dist/src/mapping/candidate-generator.js.map +1 -1
- package/dist/src/mapping/pipeline.d.ts +6 -0
- package/dist/src/mapping/pipeline.d.ts.map +1 -1
- package/dist/src/mapping/pipeline.js +67 -74
- package/dist/src/mapping/pipeline.js.map +1 -1
- package/dist/src/nodeid/node-id-map.d.ts +7 -0
- package/dist/src/nodeid/node-id-map.d.ts.map +1 -1
- package/dist/src/nodeid/node-id-map.js +23 -13
- package/dist/src/nodeid/node-id-map.js.map +1 -1
- package/dist/src/typecheck/expression.d.ts.map +1 -1
- package/dist/src/typecheck/expression.js +28 -2
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/statement.d.ts +10 -0
- package/dist/src/typecheck/statement.d.ts.map +1 -1
- package/dist/src/typecheck/statement.js +19 -5
- package/dist/src/typecheck/statement.js.map +1 -1
- package/dist/test/integration/compliance/compliance-smoke.test.js +16 -9
- package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
- package/dist/test/unit/allocation-budget.test.js +41 -0
- package/dist/test/unit/allocation-budget.test.js.map +1 -1
- package/dist/test/unit/canonicalizer/chinese-function-syntax.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/chinese-function-syntax.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js +86 -0
- package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js.map +1 -0
- package/dist/test/unit/canonicalizer/transformers.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/transformers.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/transformers.test.js +25 -0
- package/dist/test/unit/canonicalizer/transformers.test.js.map +1 -0
- package/dist/test/unit/lsp/parse-document.test.js +39 -0
- package/dist/test/unit/lsp/parse-document.test.js.map +1 -1
- package/dist/test/unit/mapping/candidate-generator.test.js +54 -1
- package/dist/test/unit/mapping/candidate-generator.test.js.map +1 -1
- package/dist/test/unit/mapping/pipeline.test.js +22 -1
- package/dist/test/unit/mapping/pipeline.test.js.map +1 -1
- package/dist/test/unit/typecheck/e104-block-scope-parity.test.d.ts +2 -0
- package/dist/test/unit/typecheck/e104-block-scope-parity.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/e104-block-scope-parity.test.js +82 -0
- package/dist/test/unit/typecheck/e104-block-scope-parity.test.js.map +1 -0
- package/dist/test/unit/typecheck/type-inference.test.js +22 -0
- package/dist/test/unit/typecheck/type-inference.test.js.map +1 -1
- package/dist/test/unit/typecheck/untyped-field-dynamic.test.d.ts +2 -0
- package/dist/test/unit/typecheck/untyped-field-dynamic.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/untyped-field-dynamic.test.js +172 -0
- package/dist/test/unit/typecheck/untyped-field-dynamic.test.js.map +1 -0
- 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../../test/unit/mapping/pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
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