@aster-cloud/aster-lang-ts 1.0.36 → 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/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/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 +22 -1
- 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/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/typecheck/expression.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/typecheck/expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,16 @@ export declare class TypecheckVisitor extends DefaultCoreVisitor<TypecheckWalker
|
|
|
8
8
|
visitBlock(block: Core.Block, context: TypecheckWalkerContext): void;
|
|
9
9
|
visitStatement(statement: Core.Statement, context: TypecheckWalkerContext): void;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* 在**当前**作用域检查语句块,不另开作用域。
|
|
13
|
+
*
|
|
14
|
+
* 与 Java 端 BaseTypeChecker.checkBlock 对齐:If 分支、函数体、workflow step 都与外层共享作用域,
|
|
15
|
+
* 因此在分支里 `Let` 一个外层已有的名字、或 `Let` 一个与形参同名的变量,都报 E104 DUPLICATE_SYMBOL。
|
|
16
|
+
* 只有 Scope 语句、match 分支与 lambda 才开新作用域(见 typecheckScopedBlock / typecheckCase)。
|
|
17
|
+
* 两端规则不一致时,编辑器会对服务端保存门禁拒绝的源码显示「可编译」(aster-lang-ts#231)。
|
|
18
|
+
*/
|
|
11
19
|
export declare function typecheckBlock(ctx: ModuleContext, symbols: SymbolTable, block: Core.Block, diagnostics: DiagnosticBuilder): Core.Type;
|
|
20
|
+
/** 在新的块作用域里检查语句块:用于显式的 Scope 语句(对应 Java 端 CoreModel.Scope 分支)。 */
|
|
21
|
+
export declare function typecheckScopedBlock(ctx: ModuleContext, symbols: SymbolTable, block: Core.Block, diagnostics: DiagnosticBuilder): Core.Type;
|
|
12
22
|
export declare function typecheckCase(ctx: ModuleContext, symbols: SymbolTable, caseClause: Core.Case, scrutineeType: Core.Type, diagnostics: DiagnosticBuilder): Core.Type;
|
|
13
23
|
//# sourceMappingURL=statement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAW1D,qBAAa,gBAAiB,SAAQ,kBAAkB,CAAC,sBAAsB,CAAC;IACvE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAiB;IAEhC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,GAAG,IAAI;IASpE,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,sBAAsB,GAAG,IAAI;CA+I1F;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,iBAAiB,GAC7B,IAAI,CAAC,IAAI,CAIX;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,iBAAiB,GAC7B,IAAI,CAAC,IAAI,CAOX;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,IAAI,CAAC,IAAI,EACrB,aAAa,EAAE,IAAI,CAAC,IAAI,EACxB,WAAW,EAAE,iBAAiB,GAC7B,IAAI,CAAC,IAAI,CAWX"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DefaultCoreVisitor } from '../core/visitor.js';
|
|
2
2
|
import { assignSymbol, defineSymbol } from './context.js';
|
|
3
|
+
import { originToSpan } from './pure.js';
|
|
3
4
|
import { formatType, isUnknown, typesEqual, unknownType, } from './pure.js';
|
|
4
5
|
import { rejectVerdictInBoolContext, typeOfExpr } from './expression.js';
|
|
5
6
|
import { bindPattern } from './pattern.js';
|
|
@@ -19,7 +20,8 @@ export class TypecheckVisitor extends DefaultCoreVisitor {
|
|
|
19
20
|
switch (statement.kind) {
|
|
20
21
|
case 'Let': {
|
|
21
22
|
const valueType = typeOfExpr(module, symbols, statement.expr, diagnostics);
|
|
22
|
-
|
|
23
|
+
// 降级后的 Let 节点只带 origin(无 span):用 origin 定位,否则 E104 诊断没有行列,编辑器无法标红。
|
|
24
|
+
defineSymbol(context, statement.name, valueType, 'var', statement.span ?? originToSpan(statement.origin));
|
|
23
25
|
this.result = valueType;
|
|
24
26
|
return;
|
|
25
27
|
}
|
|
@@ -130,7 +132,7 @@ export class TypecheckVisitor extends DefaultCoreVisitor {
|
|
|
130
132
|
statements: statement.statements,
|
|
131
133
|
span: statement.span,
|
|
132
134
|
};
|
|
133
|
-
this.result =
|
|
135
|
+
this.result = typecheckScopedBlock(module, symbols, nested, diagnostics);
|
|
134
136
|
return;
|
|
135
137
|
}
|
|
136
138
|
case 'Start': {
|
|
@@ -149,12 +151,24 @@ export class TypecheckVisitor extends DefaultCoreVisitor {
|
|
|
149
151
|
}
|
|
150
152
|
}
|
|
151
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* 在**当前**作用域检查语句块,不另开作用域。
|
|
156
|
+
*
|
|
157
|
+
* 与 Java 端 BaseTypeChecker.checkBlock 对齐:If 分支、函数体、workflow step 都与外层共享作用域,
|
|
158
|
+
* 因此在分支里 `Let` 一个外层已有的名字、或 `Let` 一个与形参同名的变量,都报 E104 DUPLICATE_SYMBOL。
|
|
159
|
+
* 只有 Scope 语句、match 分支与 lambda 才开新作用域(见 typecheckScopedBlock / typecheckCase)。
|
|
160
|
+
* 两端规则不一致时,编辑器会对服务端保存门禁拒绝的源码显示「可编译」(aster-lang-ts#231)。
|
|
161
|
+
*/
|
|
152
162
|
export function typecheckBlock(ctx, symbols, block, diagnostics) {
|
|
163
|
+
const visitor = new TypecheckVisitor();
|
|
164
|
+
visitor.visitBlock(block, { module: ctx, symbols, diagnostics });
|
|
165
|
+
return visitor.result;
|
|
166
|
+
}
|
|
167
|
+
/** 在新的块作用域里检查语句块:用于显式的 Scope 语句(对应 Java 端 CoreModel.Scope 分支)。 */
|
|
168
|
+
export function typecheckScopedBlock(ctx, symbols, block, diagnostics) {
|
|
153
169
|
symbols.enterScope('block');
|
|
154
170
|
try {
|
|
155
|
-
|
|
156
|
-
visitor.visitBlock(block, { module: ctx, symbols, diagnostics });
|
|
157
|
-
return visitor.result;
|
|
171
|
+
return typecheckBlock(ctx, symbols, block, diagnostics);
|
|
158
172
|
}
|
|
159
173
|
finally {
|
|
160
174
|
symbols.exitScope();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,10 @@ const COMPLIANCE_DEMOS = [
|
|
|
30
30
|
moduleName: 'examples.compliance.soc2_audit_demo',
|
|
31
31
|
expectedFunctions: ['compute_hash', 'verify_record_integrity', 'verify_chain_link', 'verify_one_record', 'verify_audit_chain', 'generate_soc2_report', 'create_genesis_record', 'append_audit_record', 'demo_valid_chain', 'demo_tampered_chain'],
|
|
32
32
|
expectedRecords: ['AuditRecord', 'ChainVerificationResult', 'ChainState'],
|
|
33
|
+
// 样本 L56 与 L59 两个兄弟 If 分支各 `Let msg`;Java 的 If 分支与函数体共享作用域,第二次定义处(L59)
|
|
34
|
+
// 报 E104,生产 aster-api 实测一致。TS 已按同一规则对齐(aster-lang-ts#231),故精确登记;样本修复后
|
|
35
|
+
// (aster-lang-test#164)本条会因「已知错误未出现」而失败,届时删除。
|
|
36
|
+
knownParityErrors: [{ code: 'E104', line: 59 }],
|
|
33
37
|
},
|
|
34
38
|
{
|
|
35
39
|
name: 'HIPAA 访问控制验证',
|
|
@@ -53,12 +57,10 @@ const COMPLIANCE_DEMOS = [
|
|
|
53
57
|
expectedRecords: ['Prescription', 'DrugInteraction', 'PharmacyVerification', 'VerificationStep'],
|
|
54
58
|
},
|
|
55
59
|
];
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
*/
|
|
61
|
-
function compileEnd2End(source) {
|
|
60
|
+
function isKnownParityError(d, known) {
|
|
61
|
+
return known.some((k) => k.code === d.code && k.line === d.span?.start.line);
|
|
62
|
+
}
|
|
63
|
+
function compileEnd2End(source, known = []) {
|
|
62
64
|
try {
|
|
63
65
|
// 阶段 1: 规范化
|
|
64
66
|
const canonical = canonicalize(source);
|
|
@@ -70,8 +72,8 @@ function compileEnd2End(source) {
|
|
|
70
72
|
const core = lowerModule(ast);
|
|
71
73
|
// 阶段 5: 类型检查
|
|
72
74
|
const diagnostics = typecheckModule(core);
|
|
73
|
-
// 只有 error
|
|
74
|
-
const errors = diagnostics.filter(d => d.severity === 'error');
|
|
75
|
+
// 只有 error 级别的诊断才算失败;已精确登记的跨引擎已知错误(code + 行号)不计入
|
|
76
|
+
const errors = diagnostics.filter(d => d.severity === 'error' && !isKnownParityError(d, known));
|
|
75
77
|
return {
|
|
76
78
|
success: errors.length === 0,
|
|
77
79
|
ast,
|
|
@@ -103,7 +105,7 @@ describe('合规示例冒烟测试', () => {
|
|
|
103
105
|
let result;
|
|
104
106
|
before(() => {
|
|
105
107
|
source = readDemoFile(demo.corpusPath);
|
|
106
|
-
result = compileEnd2End(source);
|
|
108
|
+
result = compileEnd2End(source, demo.knownParityErrors ?? []);
|
|
107
109
|
});
|
|
108
110
|
it('corpus 样本应该可被加载', () => {
|
|
109
111
|
const sample = readSample(demo.corpusPath);
|
|
@@ -120,6 +122,11 @@ describe('合规示例冒烟测试', () => {
|
|
|
120
122
|
}
|
|
121
123
|
assert.ok(result.success, '编译应该成功');
|
|
122
124
|
});
|
|
125
|
+
it('已登记的跨引擎已知错误必须仍然出现(样本修复后删除登记)', () => {
|
|
126
|
+
for (const k of demo.knownParityErrors ?? []) {
|
|
127
|
+
assert.ok(result.diagnostics.some((d) => d.severity === 'error' && isKnownParityError(d, [k])), `已知错误 ${k.code}@L${k.line} 未出现:样本可能已修复,请删除 knownParityErrors 登记`);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
123
130
|
it('应该生成有效的 AST', () => {
|
|
124
131
|
assert.ok(result.ast, 'AST 不应该为空');
|
|
125
132
|
assert.equal(result.ast.kind, 'Module', 'AST 根节点应该是 Module');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compliance-smoke.test.js","sourceRoot":"","sources":["../../../../test/integration/compliance/compliance-smoke.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAE,UAAU,EAAe,MAAM,8BAA8B,CAAC;AAEvE,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAE7C,kDAAkD;AAClD,MAAM,gBAAgB,GAAG;IACvB;QACE,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,kDAAkD;QAC9D,UAAU,EAAE,qCAAqC;QACjD,iBAAiB,EAAE,CAAC,cAAc,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;QACjP,eAAe,EAAE,CAAC,aAAa,EAAE,yBAAyB,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compliance-smoke.test.js","sourceRoot":"","sources":["../../../../test/integration/compliance/compliance-smoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,33 @@ Rule main given seed as Int, produce Int:
|
|
|
42
42
|
// 只断言 false 会让这个测试在缺陷以另一形态回归时**依然是绿的**。
|
|
43
43
|
assert.match(String(ev.error), /分配预算耗尽/);
|
|
44
44
|
});
|
|
45
|
+
it('拒绝最终 concat 前不迭代其输入,且预算内结果仍按原规模记账', () => {
|
|
46
|
+
const src = `Module p.
|
|
47
|
+
Rule main given seed as Int, produce Int:
|
|
48
|
+
Let a be List.range(0, 1000000).
|
|
49
|
+
Let b be List.concat(a, a).
|
|
50
|
+
Let c be List.concat(b, b).
|
|
51
|
+
Return List.length(List.concat(c, c)).`;
|
|
52
|
+
const m = compile(src);
|
|
53
|
+
assert.ok(m.core);
|
|
54
|
+
const originalIterator = Array.prototype[Symbol.iterator];
|
|
55
|
+
let fourMillionElementIterations = 0;
|
|
56
|
+
Array.prototype[Symbol.iterator] = function () {
|
|
57
|
+
if (this.length === 4_000_000)
|
|
58
|
+
fourMillionElementIterations++;
|
|
59
|
+
return originalIterator.call(this);
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
const ev = evaluate(m.core, 'main', { seed: 0 }, { maxSteps: 5_000_000 });
|
|
63
|
+
assert.equal(ev.success, false);
|
|
64
|
+
assert.match(String(ev.error), /分配预算耗尽/);
|
|
65
|
+
// c 的既有结果记账会迭代一次;最终 concat 若先物化,会再迭代输入两次。
|
|
66
|
+
assert.equal(fourMillionElementIterations, 1, '超限的最终 concat 不得迭代/复制输入');
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
Array.prototype[Symbol.iterator] = originalIterator;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
45
72
|
it('★攻击藏在 lambda 回调里也必须被拦住', () => {
|
|
46
73
|
// 预算重置点若做成「每次 lambda 调用都清零」,List.map 的每次回调都会把额度
|
|
47
74
|
// 清空 → 守护形同虚设,而上一个用例**依然全绿**(它不经过 lambda)。
|
|
@@ -144,6 +171,20 @@ Rule main given seed as Int, produce Int:
|
|
|
144
171
|
assert.ok(ev.success, `合法用例不应被拒: ${ev.error ?? ''}`);
|
|
145
172
|
assert.equal(ev.value, 2_000_000);
|
|
146
173
|
});
|
|
174
|
+
it('append、range 与 Text.concat 的正常结果不因准入记账而双计', () => {
|
|
175
|
+
const src = `Module p.
|
|
176
|
+
Rule main given seed as Int, produce Int:
|
|
177
|
+
Let a be List.range(0, 100).
|
|
178
|
+
Let b be List.append(a, 100).
|
|
179
|
+
Let c be List.concat(a, b).
|
|
180
|
+
Let t be Text.concat("hello", "world").
|
|
181
|
+
Return List.length(c) plus Text.length(t).`;
|
|
182
|
+
const m = compile(src);
|
|
183
|
+
assert.ok(m.core);
|
|
184
|
+
const ev = evaluate(m.core, 'main', { seed: 0 });
|
|
185
|
+
assert.ok(ev.success, `预算内结果不应被误拒: ${ev.error ?? ''}`);
|
|
186
|
+
assert.equal(ev.value, 211);
|
|
187
|
+
});
|
|
147
188
|
it('预算不跨执行残留(连续三次同一程序结果一致)', () => {
|
|
148
189
|
// evaluate 每次新建 Interpreter,预算是实例字段故天然隔离;本用例锁住这一性质,
|
|
149
190
|
// 防止将来有人把计数器提成模块级变量(那会让合法规则随机失败,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allocation-budget.test.js","sourceRoot":"","sources":["../../../test/unit/allocation-budget.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"allocation-budget.test.js","sourceRoot":"","sources":["../../../test/unit/allocation-budget.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chinese-function-syntax.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/canonicalizer/chinese-function-syntax.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zh-CN 函数头语法糖 `规则 名(参数):`(aster-lang-ts#236)。
|
|
3
|
+
*
|
|
4
|
+
* 变换器输出须与 Java 逐字一致:chinese-function-syntax-parity.json 由 aster-lang-locales 的
|
|
5
|
+
* ChineseFunctionSyntaxTransformerTest.FuzzSource 生成输入、Java 变换器(含字符串分段)给出期望输出。
|
|
6
|
+
* 经完整编译管线后,括号写法的参数与返回类型须与 `给定 … 作为 …` 写法相同。
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it } from 'node:test';
|
|
9
|
+
import assert from 'node:assert/strict';
|
|
10
|
+
import { readFileSync } from 'node:fs';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
13
|
+
import { applyTransformers } from '../../../src/frontend/transformers.js';
|
|
14
|
+
import { compile } from '../../../src/browser.js';
|
|
15
|
+
import { ZH_CN } from '../../../src/config/lexicons/zh-CN.js';
|
|
16
|
+
const ZH_QUOTES = { open: '「', close: '」' };
|
|
17
|
+
// 编译后从 dist/test/unit/canonicalizer 运行:上溯 4 级到仓库根
|
|
18
|
+
const repoRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..', '..');
|
|
19
|
+
const PARITY = JSON.parse(readFileSync(join(repoRoot, 'test', 'fixtures', 'chinese-function-syntax-parity.json'), 'utf8'));
|
|
20
|
+
const rewrite = (source) => applyTransformers(source, ['chinese-function-syntax'], ZH_QUOTES);
|
|
21
|
+
function header(source) {
|
|
22
|
+
const result = compile(source, { lexicon: ZH_CN });
|
|
23
|
+
assert.ok(result.success, `应能编译:${JSON.stringify(result.parseErrors ?? result)}`);
|
|
24
|
+
const func = result.core.decls[0];
|
|
25
|
+
return { params: func.params, ret: func.ret };
|
|
26
|
+
}
|
|
27
|
+
describe('chinese-function-syntax 变换器(与 Java 逐字一致)', () => {
|
|
28
|
+
const cases = [
|
|
29
|
+
['规则 greet(name: Text):', 'Rule greet given name: Text :'],
|
|
30
|
+
['规则 hello():', 'Rule hello :'],
|
|
31
|
+
[' 规则 greet(name: Text):', ' Rule greet given name: Text :'],
|
|
32
|
+
['规则 add(a: Int, b: Int):', 'Rule add given a: Int, b: Int :'],
|
|
33
|
+
['规则 计算(甲: 整数):', 'Rule 计算 given 甲: 整数 :'],
|
|
34
|
+
['规则 你好():', 'Rule 你好 :'],
|
|
35
|
+
['规则 计算(甲: 整数):', 'Rule 计算 given 甲: 整数 :'],
|
|
36
|
+
['规则 折扣(甲 作为 整数):', 'Rule 折扣 given 甲 作为 整数 :'],
|
|
37
|
+
['规则 折扣(甲 作为 整数,乙 作为 整数),产出 整数:', 'Rule 折扣 given 甲 作为 整数,乙 作为 整数 ,产出 整数:'],
|
|
38
|
+
['\n \n规则 折扣(甲 作为 整数):\n', '\n \nRule 折扣 given 甲 作为 整数 :\n'],
|
|
39
|
+
['令 x 为 10', '令 x 为 10'],
|
|
40
|
+
];
|
|
41
|
+
for (const [input, expected] of cases) {
|
|
42
|
+
it(JSON.stringify(input), () => assert.equal(rewrite(input), expected));
|
|
43
|
+
}
|
|
44
|
+
it('参数跨行时照旧重排:首尾换行被 trim 掉', () => {
|
|
45
|
+
assert.equal(rewrite('规则 折扣(\n 甲 作为 整数):'), 'Rule 折扣 given 甲 作为 整数 :');
|
|
46
|
+
});
|
|
47
|
+
it('★Java 生成的随机夹具逐条字节一致(含 NEL、U+2028/2029、NBSP、BOM、CRLF)', () => {
|
|
48
|
+
assert.ok(PARITY.length >= 400);
|
|
49
|
+
const diffs = PARITY.filter(([input, expected]) => rewrite(input) !== expected);
|
|
50
|
+
assert.deepEqual(diffs, []);
|
|
51
|
+
});
|
|
52
|
+
it('字符串字面量内的函数头(含自成一行的多行字符串)不改写', () => {
|
|
53
|
+
assert.equal(rewrite('规则 doc(x: Text):\n 返回 「\n规则 fake(y: Int):\n」。'), 'Rule doc given x: Text :\n 返回 「\n规则 fake(y: Int):\n」。');
|
|
54
|
+
});
|
|
55
|
+
it('★大量空白行或未闭合函数头时耗时线性(防正则二次回溯)', () => {
|
|
56
|
+
// 旧的 Java 模式在这两类输入上分别约 54 秒与 10 秒;5 秒上限留足并行负载余量。
|
|
57
|
+
const blank = ' \n'.repeat(64_000);
|
|
58
|
+
const unclosed = '规则 a(\n'.repeat(16_000);
|
|
59
|
+
const start = Date.now();
|
|
60
|
+
assert.equal(rewrite(blank), blank);
|
|
61
|
+
assert.equal(rewrite(unclosed), unclosed);
|
|
62
|
+
// 末尾有右括号时不走截断捷径,仍须线性。
|
|
63
|
+
assert.equal(rewrite(`${blank})`), `${blank})`);
|
|
64
|
+
assert.ok(rewrite(`${unclosed})`).startsWith('Rule a given '));
|
|
65
|
+
const elapsed = Date.now() - start;
|
|
66
|
+
assert.ok(elapsed < 5_000, `线性实现应在 5 秒内完成,实际 ${elapsed} ms`);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('zh-CN 编译管线接受括号函数头', () => {
|
|
70
|
+
const body = '\n 返回 甲。\n';
|
|
71
|
+
it('全角括号多参数并带产出类型,与 给定 写法的 Core 函数头相同', () => {
|
|
72
|
+
assert.deepEqual(header(`模块 测试。\n\n规则 折扣(甲 作为 整数,乙 作为 整数),产出 整数:${body}`), header(`模块 测试。\n\n规则 折扣 给定 甲 作为 整数,乙 作为 整数,产出 整数:${body}`));
|
|
73
|
+
});
|
|
74
|
+
it('半角括号单参数', () => {
|
|
75
|
+
assert.deepEqual(header(`模块 测试。\n\n规则 折扣(甲 作为 整数):${body}`), header(`模块 测试。\n\n规则 折扣 给定 甲 作为 整数:${body}`));
|
|
76
|
+
});
|
|
77
|
+
it('无参数', () => {
|
|
78
|
+
const result = compile('模块 测试。\n\n规则 你好():\n 返回 1。\n', { lexicon: ZH_CN });
|
|
79
|
+
assert.ok(result.success, JSON.stringify(result.parseErrors));
|
|
80
|
+
});
|
|
81
|
+
it('字符串内容不受影响', () => {
|
|
82
|
+
const result = compile('模块 测试。\n\n规则 折扣(甲 作为 整数):\n 返回 「规则 假(乙):」。\n', { lexicon: ZH_CN });
|
|
83
|
+
assert.ok(result.success, JSON.stringify(result.parseErrors));
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=chinese-function-syntax.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chinese-function-syntax.test.js","sourceRoot":"","sources":["../../../../test/unit/canonicalizer/chinese-function-syntax.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformers.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/canonicalizer/transformers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { applyTransformers, registerTransformer } from '../../../src/frontend/transformers.js';
|
|
4
|
+
describe('transformer 管线', () => {
|
|
5
|
+
it('英语所有格只改字符串字面量外的内容', () => {
|
|
6
|
+
assert.equal(applyTransformers('driver\'s age; Return "driver\'s age".', ['english-possessive']), 'driver.age; Return "driver\'s age".');
|
|
7
|
+
});
|
|
8
|
+
it('转义引号不结束字符串,未闭合字符串从开引号起全部保留', () => {
|
|
9
|
+
assert.equal(applyTransformers('driver\'s age; Return "driver\'s \\"quoted\\" age".', ['english-possessive']), 'driver.age; Return "driver\'s \\"quoted\\" age".');
|
|
10
|
+
assert.equal(applyTransformers('driver\'s age; Return "driver\'s age', ['english-possessive']), 'driver.age; Return "driver\'s age');
|
|
11
|
+
assert.equal(applyTransformers(String.raw `Return "driver's\\"; driver's age`, ['english-possessive']), String.raw `Return "driver's\\"; driver.age`);
|
|
12
|
+
});
|
|
13
|
+
it('字符串区间不能被跨界正则匹配改写', () => {
|
|
14
|
+
registerTransformer({
|
|
15
|
+
name: 'test-cross-string-replacement',
|
|
16
|
+
transform: source => source.replace(/foo.*bar/, 'changed'),
|
|
17
|
+
});
|
|
18
|
+
assert.equal(applyTransformers('foo "inside" bar', ['test-cross-string-replacement']), 'foo "inside" bar');
|
|
19
|
+
});
|
|
20
|
+
it('字符串后的锚定变换仍使用整份源码的行首上下文', () => {
|
|
21
|
+
assert.equal(applyTransformers('Return "Set x to 1" Set y to 2', ['set-to']), 'Return "Set x to 1" Set y to 2');
|
|
22
|
+
assert.equal(applyTransformers('Return "Set x to 1".\nSet y to 2', ['set-to']), 'Return "Set x to 1".\nLet y be 2');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=transformers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformers.test.js","sourceRoot":"","sources":["../../../../test/unit/canonicalizer/transformers.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,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE/F,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,wCAAwC,EAAE,CAAC,oBAAoB,CAAC,CAAC,EACnF,qCAAqC,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,qDAAqD,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAChG,kDAAkD,CACnD,CAAC;QACF,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,sCAAsC,EAAE,CAAC,oBAAoB,CAAC,CAAC,EACjF,mCAAmC,CACpC,CAAC;QACF,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAA,mCAAmC,EAAE,CAAC,oBAAoB,CAAC,CAAC,EACxF,MAAM,CAAC,GAAG,CAAA,iCAAiC,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,mBAAmB,CAAC;YAClB,IAAI,EAAE,+BAA+B;YACrC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;SAC3D,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,+BAA+B,CAAC,CAAC,EACxE,kBAAkB,CACnB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,gCAAgC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAC/D,gCAAgC,CACjC,CAAC;QACF,MAAM,CAAC,KAAK,CACV,iBAAiB,CAAC,kCAAkC,EAAE,CAAC,QAAQ,CAAC,CAAC,EACjE,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
|
|
@@ -21,6 +21,45 @@ describe('parseDocumentText', () => {
|
|
|
21
21
|
.filter((d) => d.kind === 'Func').map((d) => d.name);
|
|
22
22
|
assert.deepEqual(funcs, ['twice']);
|
|
23
23
|
});
|
|
24
|
+
it('★zh-CN 括号函数头(aster-lang-ts#236):参数精确对齐原文,插入的关键字不盖住标识符', () => {
|
|
25
|
+
// 重排成 `Rule 折扣 given 甲 …` 后比原文长;参数须仍为 exact(重命名只基于 exact),
|
|
26
|
+
// 插入的 given 在原文没有对应文本,其区间不得覆盖紧随其后的 甲。
|
|
27
|
+
const zh = LexiconRegistry.get('zh-CN');
|
|
28
|
+
const text = '模块 测试。\n\n规则 折扣(甲 作为 整数,乙 作为 整数),产出 整数:\n 返回 甲。\n';
|
|
29
|
+
const header = text.split('\n')[2];
|
|
30
|
+
const r = parseDocumentText(text, zh, undefined, undefined);
|
|
31
|
+
assert.deepEqual(r.parseDiagnostics, []);
|
|
32
|
+
const onHeader = r.tokens.filter((t) => t.start?.line === 3 && t.end?.line === 3);
|
|
33
|
+
const at = (value) => onHeader.find((t) => t.value === value);
|
|
34
|
+
for (const name of ['折扣', '甲', '乙']) {
|
|
35
|
+
const t = at(name);
|
|
36
|
+
assert.equal(t.srcAlign, 'exact', `${name} 应精确对齐`);
|
|
37
|
+
assert.equal(header.slice(t.start.col - 1, t.end.col - 1), name);
|
|
38
|
+
}
|
|
39
|
+
for (let i = 0; i + 1 < onHeader.length; i++) {
|
|
40
|
+
assert.ok(onHeader[i].end.col <= onHeader[i + 1].start.col, `token ${i} 的区间与下一个重叠`);
|
|
41
|
+
}
|
|
42
|
+
const params = r.ast
|
|
43
|
+
.decls[0].params;
|
|
44
|
+
assert.deepEqual(params.map((p) => [p.name, header[p.span.start.col - 1]]), [['甲', '甲'], ['乙', '乙']]);
|
|
45
|
+
});
|
|
46
|
+
it('de-DE 转写关键字(zurueck → zurück)后的标识符仍精确对齐,所有 token 区间互不重叠', () => {
|
|
47
|
+
// 推算 token 的游标与区间截断对 en/de 同样生效,这里钉住 de 的典型推算场景。
|
|
48
|
+
const de = LexiconRegistry.get('de-DE');
|
|
49
|
+
const text = 'Modul demo.p.\n\nRegel helfer gegeben eine größe als Ganzzahl, liefert Ganzzahl:\n gib zurueck größe plus 1.\n';
|
|
50
|
+
const body = text.split('\n')[3];
|
|
51
|
+
const r = parseDocumentText(text, de, undefined, undefined);
|
|
52
|
+
const onBody = r.tokens.filter((t) => t.start?.line === 4 && t.end?.line === 4);
|
|
53
|
+
const groesse = onBody.find((t) => t.value === 'größe');
|
|
54
|
+
assert.equal(groesse.srcAlign, 'exact');
|
|
55
|
+
assert.equal(body.slice(groesse.start.col - 1, groesse.end.col - 1), 'größe');
|
|
56
|
+
const sameLine = r.tokens.filter((t) => t.start && t.end && t.start.line === t.end.line);
|
|
57
|
+
for (let i = 0; i + 1 < sameLine.length; i++) {
|
|
58
|
+
const [a, b] = [sameLine[i], sameLine[i + 1]];
|
|
59
|
+
if (a.start.line === b.start.line)
|
|
60
|
+
assert.ok(a.end.col <= b.start.col, `第 ${a.start.line} 行 token ${String(a.value)} 与下一个重叠`);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
24
63
|
it('en-US(无 lexicon)行为不变', () => {
|
|
25
64
|
const text = 'Module demo.p.\n\nRule twice given x as Int, produce Int:\n Return x times 2.\n';
|
|
26
65
|
const r = parseDocumentText(text, undefined, undefined, undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-document.test.js","sourceRoot":"","sources":["../../../../test/unit/lsp/parse-document.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAEtG,4BAA4B,EAAE,CAAC;AAE/B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,0DAA0D,CAAC;QACxE,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,GAAgC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,CAAE,CAAC,CAAC,GAAgE,EAAE,KAAK,IAAI,EAAE,CAAC;aAC7F,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,kFAAkF,CAAC;QAChG,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,GAAgC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"parse-document.test.js","sourceRoot":"","sources":["../../../../test/unit/lsp/parse-document.test.ts"],"names":[],"mappings":"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"}
|