@aster-cloud/aster-lang-ts 1.2.3 → 1.2.4
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 +61 -0
- package/dist/src/config/semantic.d.ts +8 -0
- package/dist/src/config/semantic.d.ts.map +1 -1
- package/dist/src/config/semantic.js +13 -0
- package/dist/src/config/semantic.js.map +1 -1
- package/dist/src/core/interpreter.js +22 -7
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/core/resolve-typed-references.d.ts.map +1 -1
- package/dist/src/core/resolve-typed-references.js +18 -1
- package/dist/src/core/resolve-typed-references.js.map +1 -1
- package/dist/src/lsp/member-completion.d.ts.map +1 -1
- package/dist/src/lsp/member-completion.js +22 -5
- package/dist/src/lsp/member-completion.js.map +1 -1
- package/dist/src/typecheck/browser.d.ts.map +1 -1
- package/dist/src/typecheck/browser.js +3 -3
- package/dist/src/typecheck/browser.js.map +1 -1
- package/dist/src/typecheck/context.d.ts +1 -1
- package/dist/src/typecheck/context.d.ts.map +1 -1
- package/dist/src/typecheck/context.js +6 -3
- 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 +60 -19
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/module.d.ts.map +1 -1
- package/dist/src/typecheck/module.js +3 -3
- package/dist/src/typecheck/module.js.map +1 -1
- package/dist/src/typecheck/pure.d.ts +15 -0
- package/dist/src/typecheck/pure.d.ts.map +1 -1
- package/dist/src/typecheck/pure.js +83 -0
- package/dist/src/typecheck/pure.js.map +1 -1
- package/dist/src/typecheck/statement.d.ts.map +1 -1
- package/dist/src/typecheck/statement.js +3 -1
- package/dist/src/typecheck/statement.js.map +1 -1
- package/dist/src/typecheck/symbol_table.d.ts +3 -0
- package/dist/src/typecheck/symbol_table.d.ts.map +1 -1
- package/dist/src/typecheck/symbol_table.js +1 -0
- package/dist/src/typecheck/symbol_table.js.map +1 -1
- package/dist/src/typecheck/utils.d.ts +1 -1
- package/dist/src/typecheck/utils.d.ts.map +1 -1
- package/dist/src/typecheck/utils.js +1 -1
- package/dist/src/typecheck/utils.js.map +1 -1
- package/dist/test/unit/core/caseless-pattern-name.test.d.ts +2 -0
- package/dist/test/unit/core/caseless-pattern-name.test.d.ts.map +1 -0
- package/dist/test/unit/core/caseless-pattern-name.test.js +114 -0
- package/dist/test/unit/core/caseless-pattern-name.test.js.map +1 -0
- package/dist/test/unit/formatter-corpus-roundtrip.test.js +2 -0
- package/dist/test/unit/formatter-corpus-roundtrip.test.js.map +1 -1
- package/dist/test/unit/lsp/member-completion.test.js +67 -6
- package/dist/test/unit/lsp/member-completion.test.js.map +1 -1
- package/dist/test/unit/rule-call-checks.test.d.ts +2 -0
- package/dist/test/unit/rule-call-checks.test.d.ts.map +1 -0
- package/dist/test/unit/rule-call-checks.test.js +269 -0
- package/dist/test/unit/rule-call-checks.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module test/unit/core/caseless-pattern-name.test
|
|
3
|
+
*
|
|
4
|
+
* 无大小写文字(中文等)的裸模式名(ADR 0051 裁决 R55,aster-lang-core#227)。
|
|
5
|
+
*
|
|
6
|
+
* 成员还是绑定由 R2 按 R12 判定(主语为枚举时查该枚举的成员,主语类型未知时查全部枚举成员的精确写法,
|
|
7
|
+
* 其余为绑定),两引擎一致;R2 再按判定结果给出统一的 IR 形态:成员为无参数 PatCtor,绑定为 PatName。
|
|
8
|
+
* 首字母为 ASCII 大写的名字 IR 不变;de 变音开头成员与小写 ASCII 成员同样产出 PatCtor。用例与 aster-lang-core 的 CaselessPatternNameTest 同输入同断言,
|
|
9
|
+
* 另加解释器求值(core 没有解释器,求值由 truffle 与 aster-lang-test 的 tier1 样本覆盖)。
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it } from 'node:test';
|
|
12
|
+
import assert from 'node:assert/strict';
|
|
13
|
+
import { compileAndTypecheck } from '../../../src/browser.js';
|
|
14
|
+
import { evaluate } from '../../../src/core/interpreter.js';
|
|
15
|
+
import { ZH_CN } from '../../../src/config/lexicons/zh-CN.js';
|
|
16
|
+
import { DE_DE } from '../../../src/config/lexicons/de-DE.js';
|
|
17
|
+
const ENUM_ZH = '模块 探针.样例。\n\n定义 状态 为以下之一 待处理、进行中、已删除。\n\n';
|
|
18
|
+
function compileClean(source, lexicon) {
|
|
19
|
+
const result = compileAndTypecheck(source, lexicon ? { lexicon } : {});
|
|
20
|
+
assert.equal(result.success, true, JSON.stringify(result.parseErrors));
|
|
21
|
+
const errors = (result.typeErrors ?? []).filter((d) => d.severity === 'error');
|
|
22
|
+
assert.deepEqual(errors, [], '类型检查');
|
|
23
|
+
return result.core;
|
|
24
|
+
}
|
|
25
|
+
function patterns(core, func) {
|
|
26
|
+
const fn = core.decls.find((d) => d.kind === 'Func' && d.name === func);
|
|
27
|
+
assert.ok(fn, `缺少规则 ${func}`);
|
|
28
|
+
const match = fn.body.statements.find((s) => s.kind === 'Match');
|
|
29
|
+
assert.ok(match, `${func} 中没有 匹配于`);
|
|
30
|
+
return match.cases.map((c) => c.pattern);
|
|
31
|
+
}
|
|
32
|
+
function assertVariant(name, p) {
|
|
33
|
+
assert.equal(p?.kind, 'PatCtor', `成员应为无参数 PatCtor:${name}`);
|
|
34
|
+
const ctor = p;
|
|
35
|
+
assert.equal(ctor.typeName, name);
|
|
36
|
+
assert.deepEqual([...(ctor.names ?? [])], []);
|
|
37
|
+
assert.deepEqual([...(ctor.args ?? [])], []);
|
|
38
|
+
}
|
|
39
|
+
function assertBinding(name, p) {
|
|
40
|
+
assert.equal(p?.kind, 'PatName', `绑定应为 PatName:${name}`);
|
|
41
|
+
assert.equal(p.name, name);
|
|
42
|
+
}
|
|
43
|
+
function run(core, entry, context) {
|
|
44
|
+
const result = evaluate(core, entry, context);
|
|
45
|
+
assert.equal(result.success, true, result.error);
|
|
46
|
+
return result.value;
|
|
47
|
+
}
|
|
48
|
+
describe('无大小写文字的裸模式名(R55)', () => {
|
|
49
|
+
const describeSource = ENUM_ZH
|
|
50
|
+
+ '规则 描述 给定 s 作为 状态,产出 整数:\n 匹配于 s:\n 当 待处理,返回 1。\n 当 进行中,返回 2。\n'
|
|
51
|
+
+ ' 当 其余,返回 9。\n\n'
|
|
52
|
+
+ '规则 删除后,产出 整数:\n 返回 描述(已删除)。\n\n'
|
|
53
|
+
+ '规则 进行时,产出 整数:\n 返回 描述(进行中)。\n';
|
|
54
|
+
it('主语枚举的成员是变体,其余名字是绑定', () => {
|
|
55
|
+
const ps = patterns(compileClean(describeSource, ZH_CN), '描述');
|
|
56
|
+
assertVariant('待处理', ps[0]);
|
|
57
|
+
assertVariant('进行中', ps[1]);
|
|
58
|
+
assertBinding('其余', ps[2]);
|
|
59
|
+
});
|
|
60
|
+
it('变体只匹配同名成员,绑定兜底其余成员', () => {
|
|
61
|
+
const core = compileClean(describeSource, ZH_CN);
|
|
62
|
+
assert.equal(run(core, '进行时', {}), 2);
|
|
63
|
+
assert.equal(run(core, '删除后', {}), 9);
|
|
64
|
+
});
|
|
65
|
+
it('非枚举主语下的名字是绑定', () => {
|
|
66
|
+
const core = compileClean(ENUM_ZH
|
|
67
|
+
+ '规则 分类 给定 n 作为 整数,产出 整数:\n 匹配于 n:\n 当 0,返回 100。\n 当 其他,返回 其他 加上 1。\n', ZH_CN);
|
|
68
|
+
assertBinding('其他', patterns(core, '分类')[1]);
|
|
69
|
+
assert.equal(run(core, '分类', { n: 5 }), 6);
|
|
70
|
+
assert.equal(run(core, '分类', { n: 0 }), 100);
|
|
71
|
+
});
|
|
72
|
+
it('非枚举主语下与枚举成员同名的名字仍是绑定', () => {
|
|
73
|
+
const core = compileClean(ENUM_ZH
|
|
74
|
+
+ '规则 分类 给定 n 作为 整数,产出 整数:\n 匹配于 n:\n 当 待处理,返回 待处理 加上 1。\n', ZH_CN);
|
|
75
|
+
assertBinding('待处理', patterns(core, '分类')[0]);
|
|
76
|
+
});
|
|
77
|
+
it('主语类型未知时精确命中的成员是变体,其余是绑定', () => {
|
|
78
|
+
const ps = patterns(compileClean(ENUM_ZH
|
|
79
|
+
+ '规则 选择 给定 s,产出 整数:\n 匹配于 s:\n 当 已删除,返回 1。\n 当 别的,返回 2。\n', ZH_CN), '选择');
|
|
80
|
+
assertVariant('已删除', ps[0]);
|
|
81
|
+
assertBinding('别的', ps[1]);
|
|
82
|
+
});
|
|
83
|
+
it('de 变音字母开头的成员是变体,非成员是绑定', () => {
|
|
84
|
+
const core = compileClean('Modul probe.de.\n\nDefiniere Laune als eines von Übel, Gut, Ärger.\n\n'
|
|
85
|
+
+ 'Regel wert gegeben l als Laune, liefert Ganzzahl:\n pruefe l:\n bei Übel, gib zurueck 1.\n'
|
|
86
|
+
+ ' bei Gut, gib zurueck 2.\n bei rest, gib zurueck 9.\n\n'
|
|
87
|
+
+ 'Regel wAerger, liefert Ganzzahl:\n gib zurueck wert(Laune.Ärger).\n\n'
|
|
88
|
+
+ 'Regel bind gegeben n als Ganzzahl, liefert Ganzzahl:\n pruefe n:\n bei 0, gib zurueck 100.\n'
|
|
89
|
+
+ ' bei Ärger, gib zurueck Ärger.\n', DE_DE);
|
|
90
|
+
const ps = patterns(core, 'wert');
|
|
91
|
+
assertVariant('Übel', ps[0]);
|
|
92
|
+
assert.equal(ps[1]?.kind, 'PatName');
|
|
93
|
+
assertBinding('rest', ps[2]);
|
|
94
|
+
assertBinding('Ärger', patterns(core, 'bind')[1]);
|
|
95
|
+
assert.equal(run(core, 'wAerger', {}), 9);
|
|
96
|
+
assert.equal(run(core, 'bind', { n: 7 }), 7);
|
|
97
|
+
});
|
|
98
|
+
it('小写 ASCII 枚举成员是变体(本仓接受的写法)', () => {
|
|
99
|
+
const core = compileClean('Module probe.lc.\n\nDefine Color as one of red, Green.\n\n'
|
|
100
|
+
+ 'Rule f given c as Color, produce Int:\n Match c:\n When red, Return 1.\n When Green, Return 2.\n\n'
|
|
101
|
+
+ 'Rule g, produce Int:\n Return f(Color.Green).\n');
|
|
102
|
+
assertVariant('red', patterns(core, 'f')[0]);
|
|
103
|
+
assert.equal(run(core, 'g', {}), 2);
|
|
104
|
+
});
|
|
105
|
+
it('首字母为 ASCII 大写的名字 IR 不变', () => {
|
|
106
|
+
// en:裸 TYPE_IDENT 在 TS 仍为 PatName(运行时按大写判为变体),小写绑定仍为 PatName,IR 不变
|
|
107
|
+
const ps = patterns(compileClean('Module demo.cased.\n\nDefine Color as one of Red, Green.\n\n'
|
|
108
|
+
+ 'Rule f given c as Color, produce Int:\n Match c:\n When Red, Return 1.\n When other, Return 2.\n'), 'f');
|
|
109
|
+
assert.equal(ps[0]?.kind, 'PatName');
|
|
110
|
+
assert.equal(ps[0].name, 'Red');
|
|
111
|
+
assertBinding('other', ps[1]);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=caseless-pattern-name.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caseless-pattern-name.test.js","sourceRoot":"","sources":["../../../../test/unit/core/caseless-pattern-name.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,8 @@ const ALLOW_LIST = new Map([
|
|
|
48
48
|
['corpus/tier1-parity/vocab-zh/synonyms.aster', CJK_IDENTIFIERS],
|
|
49
49
|
['corpus/tier1-parity/vocab-zh/type-equals-field.aster', CJK_IDENTIFIERS],
|
|
50
50
|
['corpus/tier1-parity/vocab-zh/set-writeback.aster', CJK_IDENTIFIERS],
|
|
51
|
+
['corpus/tier1-parity/vocab-zh/block-scope-shadowing.aster', CJK_IDENTIFIERS],
|
|
52
|
+
['corpus/tier1-parity/vocab-zh/cjk-pattern-binding.aster', CJK_IDENTIFIERS],
|
|
51
53
|
['corpus/tier1-reject/vocab-e804-zh-member-vs-rule.aster', CJK_IDENTIFIERS],
|
|
52
54
|
]);
|
|
53
55
|
function asterFiles(dir, out = []) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter-corpus-roundtrip.test.js","sourceRoot":"","sources":["../../../test/unit/formatter-corpus-roundtrip.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formatter-corpus-roundtrip.test.js","sourceRoot":"","sources":["../../../test/unit/formatter-corpus-roundtrip.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -107,23 +107,84 @@ describe('#258 修补推断的缓存与规模上限', () => {
|
|
|
107
107
|
return { text, ...parseDocumentText(text, ZH_CN, undefined, undefined) };
|
|
108
108
|
};
|
|
109
109
|
const ZH_AT = { line: 5, character: ' 如果 司机.'.length };
|
|
110
|
+
/** 统计次数、但每份修补都推断不出接收者类型的 parse(模拟所有修补都失败) */
|
|
111
|
+
const failingParse = () => {
|
|
112
|
+
let n = 0;
|
|
113
|
+
return {
|
|
114
|
+
parse: ((_text, lexicon, vocabulary) => {
|
|
115
|
+
n += 1;
|
|
116
|
+
return parseDocumentWith('Module demo.p.\n', lexicon, vocabulary);
|
|
117
|
+
}),
|
|
118
|
+
count: () => n,
|
|
119
|
+
};
|
|
120
|
+
};
|
|
110
121
|
it('★累计耗时超过预算后放弃其余修补:第一份修补失败即返回 null', () => {
|
|
111
|
-
const probe =
|
|
112
|
-
const items = memberCompletions(
|
|
122
|
+
const probe = failingParse();
|
|
123
|
+
const items = memberCompletions(docOf(broken('')), at(''), EN_US, { parse: probe.parse, now: ticking(1000), repairBudgetMs: 150, repairBudgetFromLines: 0 });
|
|
113
124
|
assert.equal(items, null);
|
|
114
125
|
assert.equal(probe.count(), 1, '第一份修补总会尝试,之后超预算即停止');
|
|
115
126
|
});
|
|
116
|
-
it('
|
|
127
|
+
it('★#267 块头行(如果/If/Match/Otherwise 开头)先试「换成 返回 接收者.」:高负载下首次请求即出字段', () => {
|
|
128
|
+
const filler = Array.from({ length: 1200 }, () => '');
|
|
129
|
+
const lines = [...ZH_LINES.slice(0, 5), ' 如果 司机.', ...filler];
|
|
130
|
+
assert.ok(lines.length >= 1000, '须达到预算生效的行数');
|
|
131
|
+
const text = lines.join('\n');
|
|
132
|
+
const doc = { text, ...parseDocumentText(text, ZH_CN, undefined, undefined) };
|
|
117
133
|
const probe = countingParse();
|
|
118
|
-
const items = memberCompletions(
|
|
134
|
+
const items = memberCompletions(doc, ZH_AT, ZH_CN, { parse: probe.parse, now: ticking(1000), repairBudgetMs: 150 });
|
|
119
135
|
assert.deepEqual(labels(items), ['姓名', '年龄'].sort());
|
|
136
|
+
assert.equal(probe.count(), 1, '块头行第一份修补即为「换成 返回 接收者.」');
|
|
137
|
+
});
|
|
138
|
+
it('#267 英文块头同样优先:Match d. / Otherwise if d. 在预算耗尽时首次请求即出字段', () => {
|
|
139
|
+
for (const header of [' Match d.', ' Otherwise if d.', ' if d.']) {
|
|
140
|
+
clearMemberRepairCache();
|
|
141
|
+
const lines = [...HEAD, ' If d.age greater than 1:', ' Return 1.', header, ''];
|
|
142
|
+
const probe = countingParse();
|
|
143
|
+
const items = memberCompletions(docOf(lines), { line: 7, character: header.length }, EN_US, { parse: probe.parse, now: ticking(1000), repairBudgetMs: 150, repairBudgetFromLines: 0 });
|
|
144
|
+
assert.deepEqual(labels(items), ['age', 'name'], header);
|
|
145
|
+
assert.equal(probe.count(), 1, header);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
it('#267 非块头行保持原修补顺序:先删 `.前缀`', () => {
|
|
149
|
+
const tried = [];
|
|
150
|
+
const parse = (text, lexicon, vocabulary) => {
|
|
151
|
+
tried.push(text.split('\n')[5]);
|
|
152
|
+
return parseDocumentWith(text, lexicon, vocabulary);
|
|
153
|
+
};
|
|
154
|
+
const line = ' Let x be d. plus 1';
|
|
155
|
+
memberCompletions(docOf([...HEAD, line, ' Return 1.', '']), { line: 5, character: ' Let x be d.'.length }, EN_US, { parse, now: ticking(0), repairBudgetFromLines: 0 });
|
|
156
|
+
assert.equal(tried[0], ' Let x be d plus 1');
|
|
157
|
+
});
|
|
158
|
+
/** 前 failures 份修补推断失败、之后正常解析的 parse */
|
|
159
|
+
const failFirst = (failures) => {
|
|
160
|
+
let n = 0;
|
|
161
|
+
return {
|
|
162
|
+
parse: ((text, lexicon, vocabulary) => {
|
|
163
|
+
n += 1;
|
|
164
|
+
return parseDocumentWith(n <= failures ? 'Module demo.p.\n' : text, lexicon, vocabulary);
|
|
165
|
+
}),
|
|
166
|
+
count: () => n,
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
const LET_LINES = [...HEAD, ' Let x be d. plus 1', ' Return 1.', ''];
|
|
170
|
+
const LET_AT = { line: 5, character: ' Let x be d.'.length };
|
|
171
|
+
it('小文档(不足 MEMBER_REPAIR_BUDGET_FROM_LINES 行)不受预算约束:冷启动或高负载下也依次尝试到成功', () => {
|
|
172
|
+
const probe = failFirst(2);
|
|
173
|
+
const items = memberCompletions(docOf(LET_LINES), LET_AT, EN_US, { parse: probe.parse, now: ticking(1000), repairBudgetMs: 150 });
|
|
174
|
+
assert.deepEqual(labels(items), ['age', 'name']);
|
|
120
175
|
assert.equal(probe.count(), 3);
|
|
121
176
|
});
|
|
122
177
|
it('预算未超出时依次尝试,直到某份修补成功', () => {
|
|
178
|
+
const probe = failFirst(2);
|
|
179
|
+
const items = memberCompletions(docOf(LET_LINES), LET_AT, EN_US, { parse: probe.parse, now: ticking(0), repairBudgetMs: 150, repairBudgetFromLines: 0 });
|
|
180
|
+
assert.deepEqual(labels(items), ['age', 'name']);
|
|
181
|
+
assert.equal(probe.count(), 3);
|
|
182
|
+
});
|
|
183
|
+
it('zh 块头 `如果 司机.` 在小文档里同样一次修补即成功', () => {
|
|
123
184
|
const probe = countingParse();
|
|
124
|
-
const items = memberCompletions(zhDoc(), ZH_AT, ZH_CN, { parse: probe.parse, now: ticking(
|
|
185
|
+
const items = memberCompletions(zhDoc(), ZH_AT, ZH_CN, { parse: probe.parse, now: ticking(1000), repairBudgetMs: 150 });
|
|
125
186
|
assert.deepEqual(labels(items), ['姓名', '年龄'].sort());
|
|
126
|
-
assert.equal(probe.count(),
|
|
187
|
+
assert.equal(probe.count(), 1);
|
|
127
188
|
});
|
|
128
189
|
it('命中缓存的修补不计耗时:预算耗尽时继续输入前缀仍能补全', () => {
|
|
129
190
|
memberCompletions(docOf(broken('')), at(''), EN_US);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-completion.test.js","sourceRoot":"","sources":["../../../../test/unit/lsp/member-completion.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"member-completion.test.js","sourceRoot":"","sources":["../../../../test/unit/lsp/member-completion.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-call-checks.test.d.ts","sourceRoot":"","sources":["../../../test/unit/rule-call-checks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 用户规则调用的静态检查与运行期调用目标(#266 #268)。
|
|
3
|
+
*
|
|
4
|
+
* #266:调用本模块规则或函数值局部名时,按**显式写了类型**的形参比较实参类型,不符报 E001
|
|
5
|
+
* (与 Java BaseTypeChecker.checkCall 同码)。未写类型的形参(解析器按名字推断出类型,
|
|
6
|
+
* `typeInferred`)不参与比较——推断类型只是按名字猜的。Java 目前仍按推断类型比较并拒绝这类调用,
|
|
7
|
+
* TS 放行(向 TS 对齐见 aster-lang-core#229)。原则:能正常运行的程序不新增 E001,拿不准时放行。
|
|
8
|
+
* #268:调用目标解析与 Java/truffle 一致——局部名遮蔽同名规则。局部名类型已知且不是函数类型时
|
|
9
|
+
* 报 E001(期望函数);TS 解释器同样按局部名分派,不再悄悄改调同名规则。
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it } from 'node:test';
|
|
12
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
13
|
+
import { join, resolve } from 'node:path';
|
|
14
|
+
import assert from 'node:assert/strict';
|
|
15
|
+
import { compileAndTypecheck, evaluate, EN_US } from '../../src/browser.js';
|
|
16
|
+
import { NAMED_BUILTIN_OPS } from '../../src/config/semantic.js';
|
|
17
|
+
const INC = 'Rule inc given x as Int, produce Int:\n Return x plus 1.\n\n';
|
|
18
|
+
const GREET = 'Rule greet given name as Text, produce Text:\n Return name.\n\n';
|
|
19
|
+
const TWICE = 'Rule twice given f as (Int) -> Int, n as Int, produce Int:\n Return f(f(n)).\n\n';
|
|
20
|
+
function check(body) {
|
|
21
|
+
const r = compileAndTypecheck(`Module demo.\n\n${body}`, { lexicon: EN_US });
|
|
22
|
+
const errors = [...(r.parseErrors ?? []), ...(r.resolutionDiagnostics ?? []), ...(r.typeErrors ?? [])]
|
|
23
|
+
.filter((d) => d.severity === 'error');
|
|
24
|
+
return { errors, core: r.core };
|
|
25
|
+
}
|
|
26
|
+
function mismatches(errors) {
|
|
27
|
+
return errors.filter((d) => d.code === 'E001').map((d) => d.data);
|
|
28
|
+
}
|
|
29
|
+
describe('#266 用户规则调用的实参类型', () => {
|
|
30
|
+
it('★inc("a"):形参 Int、实参 Text,报 E001', () => {
|
|
31
|
+
const { errors } = check(INC + 'Rule main given n as Int, produce Int:\n Return inc("a").\n');
|
|
32
|
+
assert.deepEqual(mismatches(errors), [{ expected: 'Int', actual: 'Text' }]);
|
|
33
|
+
});
|
|
34
|
+
it('经函数值局部名调用同样比较:Let g be inc. Return g("a").', () => {
|
|
35
|
+
const { errors } = check(INC + 'Rule main given n as Int, produce Int:\n Let g be inc.\n Return g("a").\n');
|
|
36
|
+
assert.deepEqual(mismatches(errors), [{ expected: 'Int', actual: 'Text' }]);
|
|
37
|
+
});
|
|
38
|
+
it('函数值实参与函数类型形参不符:twice(greet, n) 报 E001', () => {
|
|
39
|
+
const { errors } = check(GREET + TWICE + 'Rule main given n as Int, produce Int:\n Return twice(greet, n).\n');
|
|
40
|
+
assert.deepEqual(mismatches(errors), [{ expected: '(Int) -> Int', actual: '(Text) -> Text' }]);
|
|
41
|
+
});
|
|
42
|
+
it('类型相符不报错:inc(n)、twice(inc, n)', () => {
|
|
43
|
+
const { errors } = check(INC + TWICE + 'Rule main given n as Int, produce Int:\n Return twice(inc, inc(n)).\n');
|
|
44
|
+
assert.deepEqual(errors, []);
|
|
45
|
+
});
|
|
46
|
+
it('★未写类型的形参不比较:greet given name 推断为 Text,传 Int 不报错', () => {
|
|
47
|
+
const { errors } = check('Rule label given amount, produce Text:\n Return "x".\n\n' +
|
|
48
|
+
'Rule main given n as Int, produce Text:\n Return label("a").\n');
|
|
49
|
+
assert.deepEqual(errors, []);
|
|
50
|
+
});
|
|
51
|
+
it('未写类型的形参经函数值传递也不比较:twice(bump, n) 不因推断类型报错', () => {
|
|
52
|
+
const { errors } = check('Rule bump given amount, produce Int:\n Return 1.\n\n' + TWICE +
|
|
53
|
+
'Rule main given n as Int, produce Int:\n Return twice(bump, n).\n');
|
|
54
|
+
assert.deepEqual(mismatches(errors), []);
|
|
55
|
+
});
|
|
56
|
+
it('lambda 函数值:显式类型形参比较,未写类型的形参不比较', () => {
|
|
57
|
+
const typed = check('Rule main given n as Int, produce Int:\n Let f be function with x as Int, produce Int:\n Return x.\n Return f("a").\n');
|
|
58
|
+
assert.deepEqual(mismatches(typed.errors), [{ expected: 'Int', actual: 'Text' }]);
|
|
59
|
+
const untyped = check('Rule main given flag as Bool, produce Int:\n Let f be function with x, produce:\n Return 1.\n Return f(flag).\n');
|
|
60
|
+
assert.deepEqual(mismatches(untyped.errors), []);
|
|
61
|
+
});
|
|
62
|
+
it('Int 实参传给 Float 形参按数值拓宽放行', () => {
|
|
63
|
+
const { errors } = check('Rule half given x as Float, produce Float:\n Return x.\n\n' +
|
|
64
|
+
'Rule main given n as Int, produce Float:\n Return half(n).\n');
|
|
65
|
+
assert.deepEqual(mismatches(errors), []);
|
|
66
|
+
});
|
|
67
|
+
it('函数类型形参位按逆变比较:期望 (Int) -> Int 时可传 (Float) -> Int', () => {
|
|
68
|
+
const { errors } = check('Rule widen given x as Float, produce Int:\n Return 1.\n\n' + TWICE +
|
|
69
|
+
'Rule main given n as Int, produce Int:\n Return twice(widen, n).\n');
|
|
70
|
+
assert.deepEqual(mismatches(errors), []);
|
|
71
|
+
});
|
|
72
|
+
it('实参只类型化一次:实参内部的诊断不重复', () => {
|
|
73
|
+
const { errors } = check(INC + 'Rule main given n as Int, produce Int:\n Return inc(Verdict.nope()).\n');
|
|
74
|
+
assert.deepEqual(errors.map((d) => d.code), ['E101'], JSON.stringify(errors));
|
|
75
|
+
});
|
|
76
|
+
it('个数不符报 E032,前缀位置照常比较类型(与 Java 一致,按 min 个数比较)', () => {
|
|
77
|
+
const { errors } = check(INC + 'Rule main given n as Int, produce Int:\n Return inc("a", n).\n');
|
|
78
|
+
assert.deepEqual(errors.map((d) => d.code).sort(), ['E001', 'E032']);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('#268 非函数局部名与规则同名', () => {
|
|
82
|
+
const SCORE = 'Rule score given a as Int, produce Int:\n Return a.\n\n';
|
|
83
|
+
it('★Rule main given score as Int … Return score(1, 2).:报 E001(期望函数),不按同名规则校验', () => {
|
|
84
|
+
const { errors } = check(SCORE + 'Rule main given score as Int, produce Int:\n Return score(1, 2).\n');
|
|
85
|
+
assert.deepEqual(errors.map((d) => d.code), ['E001']);
|
|
86
|
+
assert.deepEqual(errors[0].data, { expected: 'a function', actual: "'score' of type Int" });
|
|
87
|
+
});
|
|
88
|
+
it('没有同名规则时调用非函数局部名同样报 E001', () => {
|
|
89
|
+
const { errors } = check('Rule main given n as Int, produce Int:\n Return n(1).\n');
|
|
90
|
+
assert.deepEqual(errors.map((d) => d.data), [{ expected: 'a function', actual: "'n' of type Int" }]);
|
|
91
|
+
});
|
|
92
|
+
it('★解释器按局部名分派:局部值不可调用时报错,不再静默调用同名规则', () => {
|
|
93
|
+
const { core } = check(SCORE + 'Rule main given score as Int, produce Int:\n Return score(1, 2).\n');
|
|
94
|
+
assert.ok(core, '应产出 Core IR');
|
|
95
|
+
const r = evaluate(core, 'main', { score: 7 });
|
|
96
|
+
assert.equal(r.success, false, `不应求值成功:${JSON.stringify(r)}`);
|
|
97
|
+
assert.match(r.error ?? '', /score/);
|
|
98
|
+
});
|
|
99
|
+
it('函数类型局部名遮蔽同名规则的既有行为不变', () => {
|
|
100
|
+
const { errors, core } = check(INC + 'Rule main given inc as (Int) -> Int, n as Int, produce Int:\n Return inc(n).\n\n' +
|
|
101
|
+
'Rule dec given x as Int, produce Int:\n Return x minus 1.\n\n' +
|
|
102
|
+
'Rule run given n as Int, produce Int:\n Return main(dec, n).\n');
|
|
103
|
+
assert.deepEqual(errors, []);
|
|
104
|
+
const r = evaluate(core, 'run', { n: 5 });
|
|
105
|
+
assert.equal(r.success, true, r.error);
|
|
106
|
+
assert.equal(r.value, 4);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
/** 运行 main 并断言成功:放行的用例须是真能跑通的程序 */
|
|
110
|
+
function runsOk(core, input) {
|
|
111
|
+
assert.ok(core, '应产出 Core IR');
|
|
112
|
+
const r = evaluate(core, 'main', input);
|
|
113
|
+
assert.equal(r.success, true, r.error);
|
|
114
|
+
return r.value;
|
|
115
|
+
}
|
|
116
|
+
describe('#266 审查跟进:能正常运行的调用不新增 E001', () => {
|
|
117
|
+
it('M1 实参为推断失败的返回类型(produce:):inc(mk(n)) 放行', () => {
|
|
118
|
+
const { errors, core } = check(INC + 'Rule mk given x as Int, produce:\n Return x.\n\nRule main given n as Int, produce Int:\n Return inc(mk(n)).\n');
|
|
119
|
+
assert.deepEqual(mismatches(errors), []);
|
|
120
|
+
assert.equal(runsOk(core, { n: 1 }), 2);
|
|
121
|
+
});
|
|
122
|
+
it('M1 函数值的返回类型为推断占位:twice(inc2, n)(inc2 写 produce:)放行', () => {
|
|
123
|
+
const { errors, core } = check('Rule inc2 given x as Int, produce:\n Return x plus 1.\n\n' + TWICE + 'Rule main given n as Int, produce Int:\n Return twice(inc2, n).\n');
|
|
124
|
+
assert.deepEqual(mismatches(errors), []);
|
|
125
|
+
assert.equal(runsOk(core, { n: 1 }), 3);
|
|
126
|
+
});
|
|
127
|
+
it('M1 未写类型且 produce: 推断不出返回类型的规则作函数值:twice(bump, n) 放行', () => {
|
|
128
|
+
// `amount plus 1` 推断不出返回类型,签名 ret 为 TypeVar 'Unknown' 占位,函数值类型为 (Unknown) -> Unknown
|
|
129
|
+
const { errors, core } = check('Rule bump given amount, produce:\n Return amount plus 1.\n\n' + TWICE + 'Rule main given n as Int, produce Int:\n Return twice(bump, n).\n');
|
|
130
|
+
assert.deepEqual(mismatches(errors), []);
|
|
131
|
+
assert.equal(runsOk(core, { n: 1 }), 3);
|
|
132
|
+
});
|
|
133
|
+
it('M1 泛型规则 id of T 作函数值传给 (Int) -> Int 放行', () => {
|
|
134
|
+
const { errors, core } = check('Rule id of T given x as T, produce T:\n Return x.\n\n' + TWICE + 'Rule main given n as Int, produce Int:\n Return twice(id, n).\n');
|
|
135
|
+
assert.deepEqual(mismatches(errors), []);
|
|
136
|
+
assert.equal(runsOk(core, { n: 4 }), 4);
|
|
137
|
+
});
|
|
138
|
+
it('M2 T → T?、None → T?、T? ↔ Option of T、Some(n) → Option of Int 都放行', () => {
|
|
139
|
+
const OPT = 'Rule pick given x as Text?, produce Text:\n Return "k".\n\nRule pickO given x as Option of Text, produce Text:\n Return "o".\n\nRule pickI given x as Option of Int, produce Text:\n Return "i".\n\n';
|
|
140
|
+
for (const call of ['pick(t)', 'pick(None)', 'pickO(m)', 'pick(o)', 'pickI(Some(n))']) {
|
|
141
|
+
const { errors, core } = check(OPT + `Rule main given t as Text, m as Text?, o as Option of Text, n as Int, produce Text:\n Return ${call}.\n`);
|
|
142
|
+
assert.deepEqual(mismatches(errors), [], call);
|
|
143
|
+
runsOk(core, { t: 'a', m: 'b', o: 'c', n: 1 });
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
it('M2 内层类型不符仍报:Text? 形参传 Int', () => {
|
|
147
|
+
const { errors } = check('Rule pick given x as Text?, produce Text:\n Return "k".\n\nRule main given n as Int, produce Text:\n Return pick(n).\n');
|
|
148
|
+
assert.deepEqual(mismatches(errors), [{ expected: 'Text?', actual: 'Int' }]);
|
|
149
|
+
});
|
|
150
|
+
it('M3 实参类型只来自名字推断(given amount)时放行:inc(amount)', () => {
|
|
151
|
+
const { errors, core } = check(INC + 'Rule main given amount, produce Int:\n Return inc(amount).\n');
|
|
152
|
+
assert.deepEqual(mismatches(errors), []);
|
|
153
|
+
assert.equal(runsOk(core, { amount: 1 }), 2);
|
|
154
|
+
});
|
|
155
|
+
it('M3 调用未写类型的形参(given f … f(n))不报「期望函数」', () => {
|
|
156
|
+
const { errors, core } = check(INC + 'Rule ap given f, n as Int, produce Int:\n Return f(n).\n\nRule main given n as Int, produce Int:\n Return ap(inc, n).\n');
|
|
157
|
+
assert.deepEqual(errors, []);
|
|
158
|
+
assert.equal(runsOk(core, { n: 1 }), 2);
|
|
159
|
+
});
|
|
160
|
+
it('数值拓宽统一放行:Int → Long / Float、Long → Float,含字面量与容器元素', () => {
|
|
161
|
+
const DECLS = 'Rule toL given x as Long, produce Int:\n Return 1.\n\nRule toF given x as Float, produce Int:\n Return 1.\n\n' +
|
|
162
|
+
'Rule toLF given xs as List of Float, produce Int:\n Return 1.\n\nRule toOF given x as Option of Float, produce Int:\n Return 1.\n\n';
|
|
163
|
+
for (const call of ['toL(n)', 'toL(5)', 'toF(5)', 'toF(l)', 'toLF(xs)', 'toLF([1, 2])', 'toOF(Some(n))']) {
|
|
164
|
+
const { errors } = check(DECLS + `Rule main given n as Int, l as Long, xs as List of Int, produce Int:\n Return ${call}.\n`);
|
|
165
|
+
assert.deepEqual(mismatches(errors), [], call);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
// Decimal 形参目前被降级为类型变量(#276),任何实参都放行,断言没有意义;#276 修复后去掉 skip
|
|
169
|
+
it('数值拓宽:Int / Long 实参传给 Decimal 形参放行,Double 传 Decimal 报错(ADR 0025)', { skip: '#276 Decimal 形参被降级为类型变量' }, () => {
|
|
170
|
+
const DECLS = 'Rule toD given x as Decimal, produce Int:\n Return 1.\n\n';
|
|
171
|
+
for (const call of ['toD(n)', 'toD(l)', 'toD(5)']) {
|
|
172
|
+
const { errors } = check(DECLS + `Rule main given n as Int, l as Long, produce Int:\n Return ${call}.\n`);
|
|
173
|
+
assert.deepEqual(mismatches(errors), [], call);
|
|
174
|
+
}
|
|
175
|
+
const { errors } = check(DECLS + 'Rule main given x as Float, produce Int:\n Return toD(x).\n');
|
|
176
|
+
assert.equal(mismatches(errors).length, 1);
|
|
177
|
+
});
|
|
178
|
+
it('收窄仍报:Float 实参传给 Int 形参', () => {
|
|
179
|
+
const { errors } = check(INC + 'Rule main given x as Float, produce Int:\n Return inc(x).\n');
|
|
180
|
+
assert.deepEqual(mismatches(errors), [{ expected: 'Int', actual: 'Double' }]);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
describe('core#231 审查跟进:TS 不比 Java 严', () => {
|
|
184
|
+
const codes = (errors) => errors.map((d) => d.code);
|
|
185
|
+
it('F2 字段构造(E012)复用实参兼容规则:T? ← T、T? ← None、Long ← Int、List of Float ← List of Int 放行', () => {
|
|
186
|
+
const DATA = 'Define Box has t as Text?, l as Long, fs as List of Float.\n\n';
|
|
187
|
+
for (const [t, l, fs] of [['s', 'n', 'xs'], ['None', '5', '[1, 2]']]) {
|
|
188
|
+
const { errors, core } = check(DATA + `Rule main given s as Text, n as Int, xs as List of Int, produce Int:\n Let b be Box with t set to ${t}, l set to ${l}, fs set to ${fs}.\n Return 1.\n`);
|
|
189
|
+
assert.deepEqual(codes(errors), [], `${t} ${l} ${fs}`);
|
|
190
|
+
runsOk(core, { s: 'a', n: 1, xs: [1] });
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
it('F2 字段构造:推断不出返回类型的实参(produce:)放行,不再报 expects Float, got Unknown', () => {
|
|
194
|
+
const { errors } = check('Define Q has cost as Float.\n\nRule est given x as Int, produce:\n Return x plus 1.\n\n' +
|
|
195
|
+
'Rule main given n as Int, produce Int:\n Let q be Q with cost set to est(n).\n Return 1.\n');
|
|
196
|
+
assert.deepEqual(codes(errors), []);
|
|
197
|
+
});
|
|
198
|
+
it('F2 字段构造的收窄仍报 E012:Int 字段 ← Float', () => {
|
|
199
|
+
const { errors } = check('Define Box has i as Int.\n\nRule main given x as Float, produce Int:\n Let b be Box with i set to x.\n Return 1.\n');
|
|
200
|
+
assert.deepEqual(codes(errors), ['E012']);
|
|
201
|
+
});
|
|
202
|
+
it('F2 Set(E002)复用实参兼容规则:Float 变量 ← Int、Text? 变量 ← Text 放行', () => {
|
|
203
|
+
const { errors, core } = check('Rule main given n as Int, f as Float, m as Text?, t as Text, produce Int:\n Let x be f.\n Set x to n.\n Let y be m.\n Set y to t.\n Return 1.\n');
|
|
204
|
+
assert.deepEqual(codes(errors), []);
|
|
205
|
+
runsOk(core, { n: 1, f: 1.5, m: 'a', t: 'b' });
|
|
206
|
+
});
|
|
207
|
+
it('F2 Set 的收窄仍报 E002:Int 变量 ← Float', () => {
|
|
208
|
+
const { errors } = check('Rule main given n as Int, f as Float, produce Int:\n Let x be n.\n Set x to f.\n Return 1.\n');
|
|
209
|
+
assert.deepEqual(codes(errors), ['E002']);
|
|
210
|
+
});
|
|
211
|
+
it('按名字推断的标记随 Let 传播:given amount 后 Let y be amount. inc(y) 放行', () => {
|
|
212
|
+
const { errors, core } = check(INC + 'Rule main given amount, produce Int:\n Let y be amount.\n Return inc(y).\n');
|
|
213
|
+
assert.deepEqual(codes(errors), []);
|
|
214
|
+
assert.equal(runsOk(core, { amount: 1 }), 2);
|
|
215
|
+
});
|
|
216
|
+
it('F1 局部名与单段 builtin 同名、调用的正是 builtin:不报「期望函数」,解释器先调 builtin(与 truffle 一致)', () => {
|
|
217
|
+
const cases = [
|
|
218
|
+
['Rule main given add as Int, produce Int:\n Return add(1, 2).\n', { add: 7 }, 3],
|
|
219
|
+
['Rule main given n as Int, produce Int:\n Let sub be 3.\n Return sub(5, n).\n', { n: 2 }, 3],
|
|
220
|
+
['Rule main given gt as Int, produce Bool:\n Return gt(2, 1).\n', { gt: 0 }, true],
|
|
221
|
+
];
|
|
222
|
+
for (const [body, input, expected] of cases) {
|
|
223
|
+
const { errors, core } = check(body);
|
|
224
|
+
assert.deepEqual(codes(errors), [], body);
|
|
225
|
+
assert.equal(runsOk(core, input), expected, body);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
it('F1 builtin 名一律不做调用目标检查(与 core CallTargetBuiltins 一致);有同名规则时运行期按局部值分派,与 truffle 一致失败', () => {
|
|
229
|
+
const { errors, core } = check('Rule add given a as Int, b as Int, produce Int:\n Return a.\n\nRule main given add as Int, produce Int:\n Return add(1, 2).\n');
|
|
230
|
+
assert.deepEqual(codes(errors), []);
|
|
231
|
+
const r = evaluate(core, 'main', { add: 7 });
|
|
232
|
+
assert.equal(r.success, false);
|
|
233
|
+
assert.match(r.error ?? '', /'add' is not a function/);
|
|
234
|
+
});
|
|
235
|
+
it('R1 局部函数值优先于同名 builtin:函数类型形参 gt、闭包 add、单参闭包 add 都调用局部值', () => {
|
|
236
|
+
const cases = [
|
|
237
|
+
[
|
|
238
|
+
'Rule lessThan given a as Int, b as Int, produce Bool:\n Return a less than b.\n\n' +
|
|
239
|
+
'Rule ap given gt as (Int, Int) -> Bool, produce Bool:\n Return gt(1, 2).\n\n' +
|
|
240
|
+
'Rule main given n as Int, produce Bool:\n Return ap(lessThan).\n',
|
|
241
|
+
{ n: 0 },
|
|
242
|
+
true,
|
|
243
|
+
],
|
|
244
|
+
['Rule main given n as Int, produce Int:\n Let add be function with a as Int, b as Int, produce Int:\n Return a times b.\n Return add(2, 3).\n', { n: 0 }, 6],
|
|
245
|
+
['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(n).\n', { n: 1 }, 1],
|
|
246
|
+
];
|
|
247
|
+
for (const [body, input, expected] of cases) {
|
|
248
|
+
const { errors, core } = check(body);
|
|
249
|
+
assert.deepEqual(codes(errors), [], body);
|
|
250
|
+
assert.equal(runsOk(core, input), expected, body);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
it('R1 与 builtin 同名的局部函数值按局部函数类型检查:add 闭包为 (Int) -> Int 时 add(1, 2) 报 E032', () => {
|
|
254
|
+
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
|
+
assert.deepEqual(codes(errors), ['E032']);
|
|
256
|
+
});
|
|
257
|
+
it('F1 交叉核对:单段 builtin 名单与 aster-lang-core CallTargetBuiltins.NAMES 一致(找不到 core 即失败)', () => {
|
|
258
|
+
// CI 的 test job 把 core 检出到工作区内 ./aster-lang-core;本地可用 ASTER_CORE_DIR 指定,或放在兄弟目录 ../aster-lang-core
|
|
259
|
+
const RELATIVE = 'src/main/java/aster/core/typecheck/CallTargetBuiltins.java';
|
|
260
|
+
const roots = [process.env['ASTER_CORE_DIR'], resolve(process.cwd(), 'aster-lang-core'), resolve(process.cwd(), '..', 'aster-lang-core')];
|
|
261
|
+
const file = roots.filter((r) => !!r).map((r) => join(r, RELATIVE)).find((f) => existsSync(f));
|
|
262
|
+
assert.ok(file, `找不到 aster-lang-core 的 ${RELATIVE}(CI 检出 ./aster-lang-core;本地用 ASTER_CORE_DIR 指定)`);
|
|
263
|
+
const block = /Set\.of\(([^)]*)\)/.exec(readFileSync(file, 'utf8'));
|
|
264
|
+
assert.ok(block, 'CallTargetBuiltins.NAMES 的 Set.of(...) 未找到');
|
|
265
|
+
const names = [...block[1].matchAll(/"([^"]+)"/g)].map((m) => m[1]);
|
|
266
|
+
assert.deepEqual([...new Set(names)].sort(), Object.keys(NAMED_BUILTIN_OPS).sort());
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
//# sourceMappingURL=rule-call-checks.test.js.map
|