@aster-cloud/aster-lang-ts 1.2.4 → 1.2.5
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 +26 -0
- package/dist/src/config/semantic.d.ts +12 -1
- package/dist/src/config/semantic.d.ts.map +1 -1
- package/dist/src/config/semantic.js +20 -1
- package/dist/src/config/semantic.js.map +1 -1
- package/dist/src/core/interpreter.js +24 -3
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/parser/decl-parser.d.ts.map +1 -1
- package/dist/src/parser/decl-parser.js +2 -1
- package/dist/src/parser/decl-parser.js.map +1 -1
- package/dist/src/typecheck/browser.d.ts.map +1 -1
- package/dist/src/typecheck/browser.js +3 -2
- package/dist/src/typecheck/browser.js.map +1 -1
- package/dist/src/typecheck/context.d.ts.map +1 -1
- package/dist/src/typecheck/context.js +5 -2
- package/dist/src/typecheck/context.js.map +1 -1
- package/dist/src/typecheck/expression.d.ts.map +1 -1
- package/dist/src/typecheck/expression.js +10 -7
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/module.js +3 -2
- package/dist/src/typecheck/module.js.map +1 -1
- package/dist/src/typecheck/pure.d.ts +4 -2
- package/dist/src/typecheck/pure.d.ts.map +1 -1
- package/dist/src/typecheck/pure.js +15 -2
- package/dist/src/typecheck/pure.js.map +1 -1
- package/dist/src/typecheck/workflow.d.ts.map +1 -1
- package/dist/src/typecheck/workflow.js +13 -2
- package/dist/src/typecheck/workflow.js.map +1 -1
- package/dist/test/unit/rule-call-checks.test.js +11 -5
- package/dist/test/unit/rule-call-checks.test.js.map +1 -1
- package/dist/test/unit/typecheck-followups.test.d.ts +2 -0
- package/dist/test/unit/typecheck-followups.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck-followups.test.js +165 -0
- package/dist/test/unit/typecheck-followups.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -99,10 +99,11 @@ export function typecheckWorkflow(context, workflow) {
|
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
101
|
export function typecheckStep(context, step, effectCache) {
|
|
102
|
-
|
|
102
|
+
// step 体与 compensate 体各有独立作用域(与 truffle#163 一致,#279):体内 Let 不外泄,跨 step 读取报未定义
|
|
103
|
+
const bodyType = typecheckScopedBlock(context, step.body);
|
|
103
104
|
const effects = collectEffects(context.module, step.body);
|
|
104
105
|
if (step.compensate) {
|
|
105
|
-
const compensateType =
|
|
106
|
+
const compensateType = typecheckScopedBlock(context, step.compensate);
|
|
106
107
|
validateCompensateBlock(context, step, bodyType, compensateType);
|
|
107
108
|
// 合并 compensate 块的效应
|
|
108
109
|
const compensateEffects = collectEffects(context.module, step.compensate);
|
|
@@ -244,4 +245,14 @@ function stepHasSideEffects(step, effects) {
|
|
|
244
245
|
return true;
|
|
245
246
|
return step.effectCaps.some(cap => isIoClassCapability(cap));
|
|
246
247
|
}
|
|
248
|
+
/** 在独立的块作用域中检查代码块;finally 退出,异常也不把作用域留在栈上。 */
|
|
249
|
+
function typecheckScopedBlock(context, block) {
|
|
250
|
+
context.symbols.enterScope('block');
|
|
251
|
+
try {
|
|
252
|
+
return typecheckBlock(context.module, context.symbols, block, context.diagnostics);
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
context.symbols.exitScope();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
247
258
|
//# sourceMappingURL=workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/typecheck/workflow.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/typecheck/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
13
13
|
import { join, resolve } from 'node:path';
|
|
14
14
|
import assert from 'node:assert/strict';
|
|
15
15
|
import { compileAndTypecheck, evaluate, EN_US } from '../../src/browser.js';
|
|
16
|
-
import { NAMED_BUILTIN_OPS } from '../../src/config/semantic.js';
|
|
16
|
+
import { CALL_TARGET_BUILTIN_ALIASES, NAMED_BUILTIN_OPS } from '../../src/config/semantic.js';
|
|
17
17
|
const INC = 'Rule inc given x as Int, produce Int:\n Return x plus 1.\n\n';
|
|
18
18
|
const GREET = 'Rule greet given name as Text, produce Text:\n Return name.\n\n';
|
|
19
19
|
const TWICE = 'Rule twice given f as (Int) -> Int, n as Int, produce Int:\n Return f(f(n)).\n\n';
|
|
@@ -165,8 +165,7 @@ describe('#266 审查跟进:能正常运行的调用不新增 E001', () => {
|
|
|
165
165
|
assert.deepEqual(mismatches(errors), [], call);
|
|
166
166
|
}
|
|
167
167
|
});
|
|
168
|
-
|
|
169
|
-
it('数值拓宽:Int / Long 实参传给 Decimal 形参放行,Double 传 Decimal 报错(ADR 0025)', { skip: '#276 Decimal 形参被降级为类型变量' }, () => {
|
|
168
|
+
it('数值拓宽:Int / Long 实参传给 Decimal 形参放行,Double 传 Decimal 报错(ADR 0025)', () => {
|
|
170
169
|
const DECLS = 'Rule toD given x as Decimal, produce Int:\n Return 1.\n\n';
|
|
171
170
|
for (const call of ['toD(n)', 'toD(l)', 'toD(5)']) {
|
|
172
171
|
const { errors } = check(DECLS + `Rule main given n as Int, l as Long, produce Int:\n Return ${call}.\n`);
|
|
@@ -254,16 +253,23 @@ describe('core#231 审查跟进:TS 不比 Java 严', () => {
|
|
|
254
253
|
const { errors } = check('Rule main given n as Int, produce Int:\n Let add be function with a as Int, produce Int:\n Return a.\n Return add(1, 2).\n');
|
|
255
254
|
assert.deepEqual(codes(errors), ['E032']);
|
|
256
255
|
});
|
|
257
|
-
it('F1 交叉核对:单段 builtin
|
|
256
|
+
it('F1 交叉核对:单段 builtin 名单与别名表与 aster-lang-core CallTargetBuiltins.NAMES / ALIASES 一致(找不到 core 即失败)', () => {
|
|
258
257
|
// CI 的 test job 把 core 检出到工作区内 ./aster-lang-core;本地可用 ASTER_CORE_DIR 指定,或放在兄弟目录 ../aster-lang-core
|
|
259
258
|
const RELATIVE = 'src/main/java/aster/core/typecheck/CallTargetBuiltins.java';
|
|
260
259
|
const roots = [process.env['ASTER_CORE_DIR'], resolve(process.cwd(), 'aster-lang-core'), resolve(process.cwd(), '..', 'aster-lang-core')];
|
|
261
260
|
const file = roots.filter((r) => !!r).map((r) => join(r, RELATIVE)).find((f) => existsSync(f));
|
|
262
261
|
assert.ok(file, `找不到 aster-lang-core 的 ${RELATIVE}(CI 检出 ./aster-lang-core;本地用 ASTER_CORE_DIR 指定)`);
|
|
263
|
-
const
|
|
262
|
+
const source = readFileSync(file, 'utf8');
|
|
263
|
+
const block = /Set\.of\(([^)]*)\)/.exec(source);
|
|
264
264
|
assert.ok(block, 'CallTargetBuiltins.NAMES 的 Set.of(...) 未找到');
|
|
265
265
|
const names = [...block[1].matchAll(/"([^"]+)"/g)].map((m) => m[1]);
|
|
266
266
|
assert.deepEqual([...new Set(names)].sort(), Object.keys(NAMED_BUILTIN_OPS).sort());
|
|
267
|
+
// core#234:单词别名表(ALIASES = Map.of("plus", "add", …))同样逐项一致
|
|
268
|
+
const aliasBlock = /ALIASES\s*=\s*Map\.of\(([^)]*)\)/.exec(source);
|
|
269
|
+
assert.ok(aliasBlock, 'CallTargetBuiltins.ALIASES 的 Map.of(...) 未找到');
|
|
270
|
+
const flat = [...aliasBlock[1].matchAll(/"([^"]+)"/g)].map((m) => m[1]);
|
|
271
|
+
const aliases = Object.fromEntries(flat.flatMap((v, i) => (i % 2 === 0 ? [[v, flat[i + 1]]] : [])));
|
|
272
|
+
assert.deepEqual(aliases, { ...CALL_TARGET_BUILTIN_ALIASES });
|
|
267
273
|
});
|
|
268
274
|
});
|
|
269
275
|
//# sourceMappingURL=rule-call-checks.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-call-checks.test.js","sourceRoot":"","sources":["../../../test/unit/rule-call-checks.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-call-checks.test.js","sourceRoot":"","sources":["../../../test/unit/rule-call-checks.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck-followups.test.d.ts","sourceRoot":"","sources":["../../../test/unit/typecheck-followups.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 类型检查跟进(aster-lang-core#232 #234、aster-lang-ts#276 #277,两引擎同步)。
|
|
3
|
+
*
|
|
4
|
+
* 原则(用户裁决):能正确运行的代码不报错;按名字推断出的类型视为未知;数值拓宽在所有赋值类位置
|
|
5
|
+
* (实参、字段、Set、Return)放行,收窄照常报错;TS 不比 Java 严。
|
|
6
|
+
* - core#232:未写类型的 data 字段不按推断类型检查构造值(E012);按名字推断类型的局部名放进字段、
|
|
7
|
+
* Set、Return 时不作约束;Return 位置与实参一样按可赋值规则比较(拓宽、T → T?、None → T?)。
|
|
8
|
+
* - core#234:truffle 把 equals / is / over / under / divide 等单词别名(不区分大小写)归一为 builtin,
|
|
9
|
+
* 与这些名字同名的非函数局部名被调用时不报「调用非函数局部名」;未声明时 TS 解释器同样按 builtin 分派。
|
|
10
|
+
* - ts#276:`Decimal` 是内置标量,不再被当作隐式类型参数;Int / Long → Decimal 放行,
|
|
11
|
+
* Float / Double ↔ Decimal(ADR 0025)、Decimal → Int、Text → Decimal 报错。
|
|
12
|
+
* - ts#277:`T?` 的值可能是裸值 / null(宿主传入,或 T → T? 直接传入):裸的非 null 值匹配 `When Some(v)`,
|
|
13
|
+
* null 匹配 `When None`(与 truffle 同步修复)。
|
|
14
|
+
*/
|
|
15
|
+
import { describe, it } from 'node:test';
|
|
16
|
+
import assert from 'node:assert/strict';
|
|
17
|
+
import { compileAndTypecheck, evaluate, EN_US } from '../../src/browser.js';
|
|
18
|
+
function check(body) {
|
|
19
|
+
const r = compileAndTypecheck(`Module demo.\n\n${body}`, { lexicon: EN_US });
|
|
20
|
+
const errors = [...(r.parseErrors ?? []), ...(r.resolutionDiagnostics ?? []), ...(r.typeErrors ?? [])]
|
|
21
|
+
.filter((d) => d.severity === 'error' || d.severity === undefined);
|
|
22
|
+
return { codes: errors.map((d) => d.code), messages: errors.map((d) => `${d.code} ${d.message}`), core: r.core };
|
|
23
|
+
}
|
|
24
|
+
function run(core, input) {
|
|
25
|
+
assert.ok(core, '应产出 Core IR');
|
|
26
|
+
const r = evaluate(core, 'main', input);
|
|
27
|
+
assert.equal(r.success, true, r.error);
|
|
28
|
+
return r.value;
|
|
29
|
+
}
|
|
30
|
+
describe('core#232 按名字推断的类型视为未知', () => {
|
|
31
|
+
it('★未写类型的 data 字段不按推断类型检查构造值(collateralRequired 推断为 Text,传 Int)', () => {
|
|
32
|
+
const { codes } = check('Define Decision has approved, collateralRequired, bmi.\n\n' +
|
|
33
|
+
'Rule main given n as Int, produce Decision:\n' +
|
|
34
|
+
' Return Decision with approved set to true, collateralRequired set to 1, bmi set to 22.\n');
|
|
35
|
+
assert.deepEqual(codes, []);
|
|
36
|
+
});
|
|
37
|
+
it('按名字推断类型的局部名放进写了类型的字段不报 E012', () => {
|
|
38
|
+
const { codes } = check('Define P has total as Int.\n\nRule main given amount, produce P:\n Return P with total set to amount.\n');
|
|
39
|
+
assert.deepEqual(codes, []);
|
|
40
|
+
});
|
|
41
|
+
it('★Return amount(推断为 Float)在 produce Int 规则中不报 E003,经 Let 传递同样', () => {
|
|
42
|
+
assert.deepEqual(check('Rule main given amount, produce Int:\n Return amount.\n').codes, []);
|
|
43
|
+
assert.deepEqual(check('Rule main given amount, produce Int:\n Let y be amount.\n Return y.\n').codes, []);
|
|
44
|
+
});
|
|
45
|
+
it('Set 为按名字推断类型的值不报 E002,之后 Return 也不报 E003', () => {
|
|
46
|
+
const { codes } = check('Rule main given amount, produce Int:\n Let y be 1.\n Set y to amount.\n Return y.\n');
|
|
47
|
+
assert.deepEqual(codes, []);
|
|
48
|
+
});
|
|
49
|
+
it('If 条件为按名字推断类型的局部名不报错', () => {
|
|
50
|
+
const { codes } = check('Rule main given approved_status, produce Int:\n If approved_status:\n Return 1.\n Return 0.\n');
|
|
51
|
+
assert.deepEqual(codes, []);
|
|
52
|
+
});
|
|
53
|
+
it('★Return 位置数值拓宽与可空放行:Int → Float / Long / Decimal、Long → Float、T → T?、None → T?', () => {
|
|
54
|
+
const cases = [
|
|
55
|
+
'Rule main given n as Int, produce Float:\n Return 1.\n',
|
|
56
|
+
'Rule main given n as Int, produce Long:\n Return n.\n',
|
|
57
|
+
'Rule main given n as Int, produce Decimal:\n Return n.\n',
|
|
58
|
+
'Rule main given n as Long, produce Float:\n Return n.\n',
|
|
59
|
+
'Rule main given n as Int, produce Int?:\n Return n.\n',
|
|
60
|
+
'Rule main given n as Int, produce Int?:\n Return None.\n',
|
|
61
|
+
'Rule main given n as Int, produce Long:\n Let g be function with x as Int, produce Long:\n Return x.\n Return g(n).\n',
|
|
62
|
+
];
|
|
63
|
+
for (const body of cases)
|
|
64
|
+
assert.deepEqual(check(body).codes, [], body);
|
|
65
|
+
});
|
|
66
|
+
it('收窄仍报错:Return Float → Int、Text → Int、T? → T、Double → Decimal、Decimal → Float;字段 Text → Int;Set Float → Int', () => {
|
|
67
|
+
const cases = [
|
|
68
|
+
['Rule main given n as Float, produce Int:\n Return n.\n', 'E003'],
|
|
69
|
+
['Rule main given t as Text, produce Int:\n Return t.\n', 'E003'],
|
|
70
|
+
['Rule main given n as Int?, produce Int:\n Return n.\n', 'E003'],
|
|
71
|
+
['Rule main given d as Double, produce Decimal:\n Return d.\n', 'E003'],
|
|
72
|
+
['Rule main given d as Decimal, produce Float:\n Return d.\n', 'E003'],
|
|
73
|
+
['Rule main given n as Float, produce Int:\n Let g be function with x as Float, produce Int:\n Return x.\n Return g(n).\n', 'E003'],
|
|
74
|
+
['Define P has total as Int.\n\nRule main given t as Text, produce P:\n Return P with total set to t.\n', 'E012'],
|
|
75
|
+
['Rule main given f as Float, produce Int:\n Let y be 1.\n Set y to f.\n Return 0.\n', 'E002'],
|
|
76
|
+
];
|
|
77
|
+
for (const [body, code] of cases)
|
|
78
|
+
assert.ok(check(body).codes.includes(code), `${body} 应报 ${code}`);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('core#234 truffle 归一化的 builtin 别名', () => {
|
|
82
|
+
it('★与别名同名的非函数局部名被调用不报 E001:over / divide / under / equals / is', () => {
|
|
83
|
+
const cases = [
|
|
84
|
+
'Rule main given over as Int, produce Bool:\n Return over(3, 2).\n',
|
|
85
|
+
'Rule main given divide as Int, produce Int:\n Return divide(10, 2).\n',
|
|
86
|
+
'Rule main given under as Int, produce Bool:\n Return under(1, 2).\n',
|
|
87
|
+
'Rule main given equals as Int, produce Bool:\n Return equals(2, 2).\n',
|
|
88
|
+
'Rule main given is as Int, produce Bool:\n Return is(2, 2).\n',
|
|
89
|
+
];
|
|
90
|
+
for (const body of cases)
|
|
91
|
+
assert.deepEqual(check(body).codes, [], body);
|
|
92
|
+
});
|
|
93
|
+
it('解释器按 builtin 分派别名(与 truffle Builtins.canonicalName 一致)', () => {
|
|
94
|
+
assert.equal(run(check('Rule main given over as Int, produce Bool:\n Return over(3, 2).\n').core, { over: 0 }), true);
|
|
95
|
+
assert.equal(run(check('Rule main given n as Int, produce Int:\n Return divide(10, 2).\n').core, { n: 0 }), 5);
|
|
96
|
+
assert.equal(run(check('Rule main given n as Int, produce Bool:\n Return equals(n, 2).\n').core, { n: 2 }), true);
|
|
97
|
+
});
|
|
98
|
+
it('不是别名的非函数局部名仍报 E001', () => {
|
|
99
|
+
const { codes } = check('Rule score given a as Int, produce Int:\n Return a.\n\nRule main given n as Int, produce Int:\n Let score be 3.\n Return score(n).\n');
|
|
100
|
+
assert.deepEqual(codes, ['E001']);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe('ts#276 Decimal 是内置标量', () => {
|
|
104
|
+
const MONEY = 'Rule money given x as Decimal, produce Decimal:\n Return x.\n\n';
|
|
105
|
+
const INC = 'Rule inc given x as Int, produce Int:\n Return x plus 1.\n\n';
|
|
106
|
+
it('Decimal 形参不再降级为类型参数', () => {
|
|
107
|
+
const { core } = check(MONEY);
|
|
108
|
+
const func = core.decls.find((d) => d.kind === 'Func');
|
|
109
|
+
assert.deepEqual(func.typeParams, []);
|
|
110
|
+
assert.equal(func.params[0].type.kind, 'TypeName');
|
|
111
|
+
});
|
|
112
|
+
it('★Int / Long / Decimal → Decimal 放行', () => {
|
|
113
|
+
for (const t of ['Int', 'Long', 'Decimal']) {
|
|
114
|
+
assert.deepEqual(check(MONEY + `Rule main given d as ${t}, produce Decimal:\n Return money(d).\n`).codes, [], t);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
it('★Text / Float / Double → Decimal、Decimal → Int / Double 报 E001(ADR 0025)', () => {
|
|
118
|
+
for (const t of ['Text', 'Float', 'Double']) {
|
|
119
|
+
assert.deepEqual(check(MONEY + `Rule main given d as ${t}, produce Decimal:\n Return money(d).\n`).codes, ['E001'], t);
|
|
120
|
+
}
|
|
121
|
+
assert.deepEqual(check(MONEY + 'Rule main given n as Int, produce Decimal:\n Return money(1.5).\n').codes, ['E001']);
|
|
122
|
+
assert.deepEqual(check(INC + 'Rule main given d as Decimal, produce Int:\n Return inc(d).\n').codes, ['E001']);
|
|
123
|
+
assert.deepEqual(check('Rule h given x as Double, produce Double:\n Return x.\n\nRule main given d as Decimal, produce Double:\n Return h(d).\n').codes, ['E001']);
|
|
124
|
+
});
|
|
125
|
+
it('produce Decimal 返回 Decimal 运算结果不报 E003(此前 TypeVar 与 TypeName 比较误报 expected Decimal, got Decimal)', () => {
|
|
126
|
+
const { codes } = check('Rule main given d as Decimal, produce Decimal:\n Return Decimal.round(d plus 1, 2, "HALF_UP").\n');
|
|
127
|
+
assert.deepEqual(codes, []);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe('ts#277 T? 的裸值与 Some / None 模式', () => {
|
|
131
|
+
const MATCH = 'Rule f given x as Int?, produce Int:\n Match x:\n When None, Return 0.\n When Some(v), Return v.\n\n';
|
|
132
|
+
it('★裸值实参 f(n) 走 Some 分支,Some(n) 与 None 不变', () => {
|
|
133
|
+
assert.equal(run(check(MATCH + 'Rule main given n as Int, produce Int:\n Return f(n).\n').core, { n: 3 }), 3);
|
|
134
|
+
assert.equal(run(check(MATCH + 'Rule main given n as Int, produce Int:\n Return f(Some(n)).\n').core, { n: 3 }), 3);
|
|
135
|
+
assert.equal(run(check(MATCH + 'Rule main given n as Int, produce Int:\n Return f(None).\n').core, { n: 3 }), 0);
|
|
136
|
+
});
|
|
137
|
+
it('★宿主传入的裸值 3 与 null', () => {
|
|
138
|
+
const body = 'Rule main given x as Int?, produce Int:\n Match x:\n When Some(v), Return v.\n When None, Return 0.\n';
|
|
139
|
+
const { codes, core } = check(body);
|
|
140
|
+
assert.deepEqual(codes, []);
|
|
141
|
+
assert.equal(run(core, { x: 3 }), 3);
|
|
142
|
+
assert.equal(run(core, { x: null }), 0);
|
|
143
|
+
});
|
|
144
|
+
it('Ok 值不匹配 Some(v)', () => {
|
|
145
|
+
const body = 'Rule main given n as Int, produce Int:\n Let y be Ok(n).\n Match y:\n When Some(v), Return 1.\n When other, Return 2.\n';
|
|
146
|
+
assert.equal(run(check(body).core, { n: 5 }), 2);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
describe('ts#279 workflow step / compensate 体的作用域(与 truffle#163 一致)', () => {
|
|
150
|
+
it('不同 step 与 compensate 中的同名 Let 不报 E104;Set 写回外层', () => {
|
|
151
|
+
const body = 'Rule runSteps given n as Int, produce Int. It performs io:\n Let x be n.\n workflow:\n' +
|
|
152
|
+
' step first:\n Let x be n plus 1.\n Let y be x times 2.\n Return ok of y.\n' +
|
|
153
|
+
' compensate:\n Let x be n minus 1.\n Return ok of x.\n\n' +
|
|
154
|
+
' step second:\n Let y be n plus 10.\n Return ok of y.\n\n' +
|
|
155
|
+
' step third:\n Set x to n plus 100.\n Return ok of x.\n .\n Return x.\n';
|
|
156
|
+
assert.deepEqual(check(body).codes, []);
|
|
157
|
+
});
|
|
158
|
+
it('跨 step 读取另一 step 的 Let 报未定义', () => {
|
|
159
|
+
const body = 'Rule runSteps given n as Int, produce Int. It performs io:\n workflow:\n' +
|
|
160
|
+
' step first:\n Let y be n plus 1.\n Return ok of y.\n\n' +
|
|
161
|
+
' step second:\n Return ok of y.\n .\n Return n.\n';
|
|
162
|
+
assert.ok(check(body).codes.length > 0);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=typecheck-followups.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck-followups.test.js","sourceRoot":"","sources":["../../../test/unit/typecheck-followups.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED