@aster-cloud/aster-lang-ts 1.2.4 → 1.2.6
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 +68 -0
- package/dist/scripts/generate_error_codes.js +3 -0
- package/dist/scripts/generate_error_codes.js.map +1 -1
- package/dist/src/browser.d.ts +18 -0
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +13 -18
- package/dist/src/browser.js.map +1 -1
- package/dist/src/cli/utils/error-handler.js +1 -1
- package/dist/src/cli/utils/error-handler.js.map +1 -1
- 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 +28 -3
- 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 +34 -22
- package/dist/src/core/resolve-typed-references.js.map +1 -1
- package/dist/src/diagnostics/diagnostics.d.ts +33 -2
- package/dist/src/diagnostics/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics/diagnostics.js +47 -1
- package/dist/src/diagnostics/diagnostics.js.map +1 -1
- package/dist/src/diagnostics/error_codes.d.ts +21 -1
- package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
- package/dist/src/diagnostics/error_codes.js +160 -0
- package/dist/src/diagnostics/error_codes.js.map +1 -1
- package/dist/src/frontend/lexer.js +1 -1
- package/dist/src/frontend/lexer.js.map +1 -1
- package/dist/src/frontend/resolve-declarations.d.ts.map +1 -1
- package/dist/src/frontend/resolve-declarations.js +24 -1
- package/dist/src/frontend/resolve-declarations.js.map +1 -1
- package/dist/src/lsp/completion.d.ts +2 -2
- package/dist/src/lsp/completion.d.ts.map +1 -1
- package/dist/src/lsp/completion.js +65 -55
- package/dist/src/lsp/completion.js.map +1 -1
- package/dist/src/lsp/diagnostics.d.ts.map +1 -1
- package/dist/src/lsp/diagnostics.js +4 -0
- package/dist/src/lsp/diagnostics.js.map +1 -1
- package/dist/src/lsp/member-completion.d.ts +10 -0
- package/dist/src/lsp/member-completion.d.ts.map +1 -1
- package/dist/src/lsp/member-completion.js +25 -10
- package/dist/src/lsp/member-completion.js.map +1 -1
- package/dist/src/parser/constraint-parser.d.ts +2 -1
- package/dist/src/parser/constraint-parser.d.ts.map +1 -1
- package/dist/src/parser/constraint-parser.js +9 -7
- package/dist/src/parser/constraint-parser.js.map +1 -1
- package/dist/src/parser/context.d.ts.map +1 -1
- package/dist/src/parser/context.js +1 -0
- package/dist/src/parser/context.js.map +1 -1
- package/dist/src/parser/decl-parser.d.ts +4 -3
- package/dist/src/parser/decl-parser.d.ts.map +1 -1
- package/dist/src/parser/decl-parser.js +19 -17
- package/dist/src/parser/decl-parser.js.map +1 -1
- package/dist/src/parser/expr-stmt-parser.d.ts +10 -9
- package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
- package/dist/src/parser/expr-stmt-parser.js +96 -90
- package/dist/src/parser/expr-stmt-parser.js.map +1 -1
- package/dist/src/parser/field-variant-parser.d.ts +4 -3
- package/dist/src/parser/field-variant-parser.d.ts.map +1 -1
- package/dist/src/parser/field-variant-parser.js +3 -2
- package/dist/src/parser/field-variant-parser.js.map +1 -1
- package/dist/src/parser/import-parser.d.ts +5 -5
- package/dist/src/parser/import-parser.d.ts.map +1 -1
- package/dist/src/parser/import-parser.js +4 -3
- package/dist/src/parser/import-parser.js.map +1 -1
- package/dist/src/parser/parse-issue.d.ts +44 -0
- package/dist/src/parser/parse-issue.d.ts.map +1 -0
- package/dist/src/parser/parse-issue.js +37 -0
- package/dist/src/parser/parse-issue.js.map +1 -0
- package/dist/src/parser/parser-tools.d.ts +5 -5
- package/dist/src/parser/parser-tools.d.ts.map +1 -1
- package/dist/src/parser/parser-tools.js +20 -7
- package/dist/src/parser/parser-tools.js.map +1 -1
- package/dist/src/parser/type-parser.d.ts +4 -3
- package/dist/src/parser/type-parser.d.ts.map +1 -1
- package/dist/src/parser/type-parser.js +18 -16
- package/dist/src/parser/type-parser.js.map +1 -1
- package/dist/src/typecheck/browser.d.ts.map +1 -1
- package/dist/src/typecheck/browser.js +4 -10
- 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 +12 -9
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/generics.d.ts.map +1 -1
- package/dist/src/typecheck/generics.js +2 -26
- package/dist/src/typecheck/generics.js.map +1 -1
- package/dist/src/typecheck/module.d.ts.map +1 -1
- package/dist/src/typecheck/module.js +4 -9
- package/dist/src/typecheck/module.js.map +1 -1
- package/dist/src/typecheck/pattern.d.ts.map +1 -1
- package/dist/src/typecheck/pattern.js +5 -4
- package/dist/src/typecheck/pattern.js.map +1 -1
- package/dist/src/typecheck/pure.d.ts +6 -2
- package/dist/src/typecheck/pure.d.ts.map +1 -1
- package/dist/src/typecheck/pure.js +19 -2
- package/dist/src/typecheck/pure.js.map +1 -1
- package/dist/src/typecheck/statement.d.ts +8 -0
- package/dist/src/typecheck/statement.d.ts.map +1 -1
- package/dist/src/typecheck/statement.js +60 -3
- package/dist/src/typecheck/statement.js.map +1 -1
- package/dist/src/typecheck/workflow.d.ts.map +1 -1
- package/dist/src/typecheck/workflow.js +23 -34
- package/dist/src/typecheck/workflow.js.map +1 -1
- package/dist/test/integration/lsp/lsp-completion.test.js +3 -1
- package/dist/test/integration/lsp/lsp-completion.test.js.map +1 -1
- package/dist/test/integration/scripts/typecheck-cli-repl.test.js +2 -1
- package/dist/test/integration/scripts/typecheck-cli-repl.test.js.map +1 -1
- package/dist/test/unit/diagnostics/diagnostic-overlays.test.js +8 -0
- package/dist/test/unit/diagnostics/diagnostic-overlays.test.js.map +1 -1
- package/dist/test/unit/diagnostics/legacy-codes.test.d.ts +6 -0
- package/dist/test/unit/diagnostics/legacy-codes.test.d.ts.map +1 -0
- package/dist/test/unit/diagnostics/legacy-codes.test.js +81 -0
- package/dist/test/unit/diagnostics/legacy-codes.test.js.map +1 -0
- package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.d.ts +9 -0
- package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.d.ts.map +1 -0
- package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js +121 -0
- package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js.map +1 -0
- package/dist/test/unit/frontend/resolve-declarations.test.js +47 -0
- package/dist/test/unit/frontend/resolve-declarations.test.js.map +1 -1
- package/dist/test/unit/int-pattern-decimal.test.d.ts +2 -0
- package/dist/test/unit/int-pattern-decimal.test.d.ts.map +1 -0
- package/dist/test/unit/int-pattern-decimal.test.js +54 -0
- package/dist/test/unit/int-pattern-decimal.test.js.map +1 -0
- package/dist/test/unit/lsp/completion-lexicon.test.js +1 -1
- package/dist/test/unit/lsp/completion-lexicon.test.js.map +1 -1
- package/dist/test/unit/lsp/completion-list.test.d.ts +2 -0
- package/dist/test/unit/lsp/completion-list.test.d.ts.map +1 -0
- package/dist/test/unit/lsp/completion-list.test.js +64 -0
- package/dist/test/unit/lsp/completion-list.test.js.map +1 -0
- package/dist/test/unit/lsp/member-completion.test.js +99 -1
- package/dist/test/unit/lsp/member-completion.test.js.map +1 -1
- package/dist/test/unit/lsp/resolution-completion.test.js +2 -2
- package/dist/test/unit/lsp/resolution-completion.test.js.map +1 -1
- package/dist/test/unit/lsp/resolution-diagnostics.test.js +4 -2
- package/dist/test/unit/lsp/resolution-diagnostics.test.js.map +1 -1
- package/dist/test/unit/parser/depth-limit.test.js +3 -3
- package/dist/test/unit/parser/depth-limit.test.js.map +1 -1
- package/dist/test/unit/parser/parser.test.js +4 -1
- package/dist/test/unit/parser/parser.test.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/java-parity-281.test.d.ts +2 -0
- package/dist/test/unit/typecheck/java-parity-281.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/java-parity-281.test.js +87 -0
- package/dist/test/unit/typecheck/java-parity-281.test.js.map +1 -0
- package/dist/test/unit/typecheck/regression-fixes.test.js +2 -2
- package/dist/test/unit/typecheck/regression-fixes.test.js.map +1 -1
- package/dist/test/unit/typecheck/return-paths.test.d.ts +2 -0
- package/dist/test/unit/typecheck/return-paths.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/return-paths.test.js +54 -0
- package/dist/test/unit/typecheck/return-paths.test.js.map +1 -0
- package/dist/test/unit/typecheck/typecheck-advanced.test.js +2 -2
- package/dist/test/unit/typecheck/typecheck-advanced.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
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TS 不比 Java 严(aster-lang-ts#281):语料中 Java 放行而 TS 报错的三处。
|
|
3
|
+
*
|
|
4
|
+
* - int_match:未写类型的 `given n` 按名字推断(视为未知),作 Match scrutinee 时整数模式不报 E010;
|
|
5
|
+
* - workflow-compensate:compensate 体的返回值运行时被丢弃,Java 不检查其类型,TS 不再报 E022;
|
|
6
|
+
* - vocab-de/type-alias-localized:签名中引用类型别名(Core 不含别名声明)不报 E006。
|
|
7
|
+
* 在 parse → R1 → lower → R2 管线中未声明的类型名已由 E800 报告,E006 只会误伤别名,Java 亦不报。
|
|
8
|
+
*/
|
|
9
|
+
import { describe, it } from 'node:test';
|
|
10
|
+
import assert from 'node:assert/strict';
|
|
11
|
+
import { compileAndTypecheck, EN_US, DE_DE } from '../../../src/browser.js';
|
|
12
|
+
function errorCodes(source, options = { lexicon: EN_US }) {
|
|
13
|
+
const r = compileAndTypecheck(source, options);
|
|
14
|
+
return [...(r.parseErrors ?? []), ...(r.resolutionDiagnostics ?? []), ...(r.typeErrors ?? [])]
|
|
15
|
+
.map((d) => d)
|
|
16
|
+
.filter((d) => d.severity === 'error' || d.severity === undefined)
|
|
17
|
+
.map((d) => d.code);
|
|
18
|
+
}
|
|
19
|
+
describe('#281 TS 不比 Java 严', () => {
|
|
20
|
+
it('int_match:按名推断的 scrutinee 上的整数模式不报 E010', () => {
|
|
21
|
+
const src = [
|
|
22
|
+
'Module demo.int_match.',
|
|
23
|
+
'',
|
|
24
|
+
'Rule classify given n, produce:',
|
|
25
|
+
' Match n:',
|
|
26
|
+
' When 0, Return "zero".',
|
|
27
|
+
' When 42, Return "answer".',
|
|
28
|
+
'',
|
|
29
|
+
].join('\n');
|
|
30
|
+
assert.deepEqual(errorCodes(src), []);
|
|
31
|
+
});
|
|
32
|
+
it('显式 Int scrutinee 上的整数模式仍然放行', () => {
|
|
33
|
+
const src = 'Module m.\n\nRule f given n as Int, produce Text:\n Match n:\n When 0, Return "zero".\n Return "other".\n';
|
|
34
|
+
assert.deepEqual(errorCodes(src), []);
|
|
35
|
+
});
|
|
36
|
+
it('workflow-compensate:compensate 返回 Result of Text 不报 E022', () => {
|
|
37
|
+
const src = [
|
|
38
|
+
'Module demo.workflow.compensate.',
|
|
39
|
+
'',
|
|
40
|
+
'Rule processOrder, produce. It performs io:',
|
|
41
|
+
' workflow:',
|
|
42
|
+
' step reserve:',
|
|
43
|
+
' return ok of "reserved".',
|
|
44
|
+
'',
|
|
45
|
+
' compensate:',
|
|
46
|
+
' return ok of "released".',
|
|
47
|
+
'',
|
|
48
|
+
' step execute:',
|
|
49
|
+
' return ok of "executed".',
|
|
50
|
+
' .',
|
|
51
|
+
'',
|
|
52
|
+
].join('\n');
|
|
53
|
+
assert.deepEqual(errorCodes(src), []);
|
|
54
|
+
});
|
|
55
|
+
it('签名引用类型别名不报 E006(en)', () => {
|
|
56
|
+
const src = 'Module m.\n\ntype Score as Int.\n\nRule up given x as Score, produce Score:\n Return x plus 1.\n';
|
|
57
|
+
assert.deepEqual(errorCodes(src), []);
|
|
58
|
+
});
|
|
59
|
+
it('vocab-de/type-alias-localized:本地化别名名不报 E006', () => {
|
|
60
|
+
const vocabulary = {
|
|
61
|
+
id: 'parity.vocab.type-alias-localized',
|
|
62
|
+
name: '本地化类型别名名',
|
|
63
|
+
locale: 'de-DE',
|
|
64
|
+
version: '1.0.0',
|
|
65
|
+
structs: [{ canonical: 'Score', localized: 'Punkte', kind: 'struct' }],
|
|
66
|
+
fields: [],
|
|
67
|
+
functions: [],
|
|
68
|
+
enumValues: [],
|
|
69
|
+
literals: [],
|
|
70
|
+
};
|
|
71
|
+
const src = [
|
|
72
|
+
'Modul versicherung.alias.',
|
|
73
|
+
'',
|
|
74
|
+
'type Punkte as Ganzzahl.',
|
|
75
|
+
'',
|
|
76
|
+
'Regel erhoehen gegeben x als Punkte, liefert Punkte:',
|
|
77
|
+
' gib zurueck x plus 1.',
|
|
78
|
+
'',
|
|
79
|
+
].join('\n');
|
|
80
|
+
assert.deepEqual(errorCodes(src, { lexicon: DE_DE, vocabulary }), []);
|
|
81
|
+
});
|
|
82
|
+
it('未声明的类型名仍由名称解析报 E800', () => {
|
|
83
|
+
const src = 'Module m.\n\nRule bad of T given x as U, produce T:\n Return x.\n';
|
|
84
|
+
assert.ok(errorCodes(src).includes('E800'));
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=java-parity-281.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java-parity-281.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/java-parity-281.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -424,7 +424,7 @@ describe('回归测试:KNOWN_SCALARS 扩展', () => {
|
|
|
424
424
|
const diagnostics = typecheckModule(mod);
|
|
425
425
|
assert.ok(!diagnostics.some(d => d.code === "E006" /* ErrorCode.TYPEVAR_LIKE_UNDECLARED */), 'Result/Option/List/Map/Set/Workflow 容器类型不应被误认为未声明的类型变量');
|
|
426
426
|
});
|
|
427
|
-
it('
|
|
427
|
+
it('Core 中的未知类型名不触发 TYPEVAR_LIKE_UNDECLARED(可能是类型别名,未声明的类型由 E800 报告,#281)', () => {
|
|
428
428
|
// 使用一个未在 KNOWN_SCALARS 中且未定义的类型名
|
|
429
429
|
const func = {
|
|
430
430
|
kind: 'Func',
|
|
@@ -450,7 +450,7 @@ describe('回归测试:KNOWN_SCALARS 扩展', () => {
|
|
|
450
450
|
decls: [func],
|
|
451
451
|
};
|
|
452
452
|
const diagnostics = typecheckModule(mod);
|
|
453
|
-
assert.ok(diagnostics.some(d => d.code === "E006" /* ErrorCode.TYPEVAR_LIKE_UNDECLARED */), '未知类型名 UnknownCustomType
|
|
453
|
+
assert.ok(!diagnostics.some(d => d.code === "E006" /* ErrorCode.TYPEVAR_LIKE_UNDECLARED */), '未知类型名 UnknownCustomType 不应触发 TYPEVAR_LIKE_UNDECLARED(Java 亦不报)');
|
|
454
454
|
});
|
|
455
455
|
});
|
|
456
456
|
//# sourceMappingURL=regression-fixes.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regression-fixes.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/regression-fixes.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"regression-fixes.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/regression-fixes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"return-paths.test.d.ts","sourceRoot":"","sources":["../../../../test/unit/typecheck/return-paths.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 函数返回类型按每条返回路径检查(aster-lang-ts#283,与 aster-lang-core#239 同步)。
|
|
3
|
+
*
|
|
4
|
+
* 曾经只比较函数体块的单一结果类型:无 Otherwise 的 If 里的提前 Return 不与声明返回类型比对,
|
|
5
|
+
* 且 E003 的 span 为整个函数体(编辑器标在第 1 行)。现在每条 Return 都按可赋值规则
|
|
6
|
+
* (Unknown / 按名推断 / Int → Float、Decimal 拓宽放行)与声明类型比较,E003 落在该 Return 行。
|
|
7
|
+
* 夹具 test/fixtures/return-paths/return-paths-fixtures.json 与 core 仓同一份,errors 为 [code, 1 起行号]。
|
|
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, EN_US } from '../../../src/browser.js';
|
|
14
|
+
const FIXTURES = JSON.parse(readFileSync(resolve(process.cwd(), 'test', 'fixtures', 'return-paths', 'return-paths-fixtures.json'), 'utf8'));
|
|
15
|
+
function errorsOf(source) {
|
|
16
|
+
const r = compileAndTypecheck(source, { lexicon: EN_US });
|
|
17
|
+
return [...(r.parseErrors ?? []), ...(r.resolutionDiagnostics ?? []), ...(r.typeErrors ?? [])]
|
|
18
|
+
.map((d) => d)
|
|
19
|
+
.filter((d) => d.severity === 'error' || d.severity === undefined)
|
|
20
|
+
.map((d) => [d.code, d.span?.start.line ?? -1]);
|
|
21
|
+
}
|
|
22
|
+
describe('#283 每条返回路径与声明返回类型比对(共享夹具)', () => {
|
|
23
|
+
for (const fx of FIXTURES) {
|
|
24
|
+
it(fx.name, () => {
|
|
25
|
+
const errors = errorsOf(fx.source);
|
|
26
|
+
assert.equal(errors.length === 0, fx.success, `success 不符:${JSON.stringify(errors)}`);
|
|
27
|
+
assert.deepEqual(errors, fx.errors);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
describe('#283 其他返回路径', () => {
|
|
32
|
+
it('Match 分支中的错误 Return 报 E003 于该行', () => {
|
|
33
|
+
const src = 'Module m.\nRule r given x as Int, produce Int:\n Match x:\n When 1, Return "one".\n When n, Return 0.\n';
|
|
34
|
+
const e3 = errorsOf(src).filter(([c]) => c === 'E003');
|
|
35
|
+
assert.deepEqual(e3.map(([, l]) => l), [4]);
|
|
36
|
+
});
|
|
37
|
+
it('If…Otherwise 两支类型不同:E008 与 E003 都有行号(不落在第 1 行)', () => {
|
|
38
|
+
const src = 'Module m.\nRule r given x as Int, produce Int:\n If x greater than 1\n Return 1.\n Otherwise\n Return "a".\n';
|
|
39
|
+
const errs = errorsOf(src);
|
|
40
|
+
assert.ok(errs.some(([c]) => c === 'E008'), JSON.stringify(errs));
|
|
41
|
+
assert.ok(errs.some(([c, l]) => c === 'E003' && l === 6), JSON.stringify(errs));
|
|
42
|
+
assert.ok(errs.every(([, l]) => l > 1), JSON.stringify(errs));
|
|
43
|
+
});
|
|
44
|
+
it('workflow step 内的 Return 是 step 结果,不与规则声明类型比较', () => {
|
|
45
|
+
const src = 'Module m.\nRule r given n as Int, produce Int. It performs io:\n workflow:\n' +
|
|
46
|
+
' step first:\n Return ok of n.\n .\n Return n.\n';
|
|
47
|
+
assert.deepEqual(errorsOf(src), []);
|
|
48
|
+
});
|
|
49
|
+
it('lambda 内的 Return 不与外层规则的声明类型比较', () => {
|
|
50
|
+
const src = 'Module m.\nRule r given x as Int, produce Int:\n Let f be function with s as Text, produce Text:\n Return s.\n Return 0.\n';
|
|
51
|
+
assert.deepEqual(errorsOf(src), []);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=return-paths.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"return-paths.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/return-paths.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ describe('泛型诊断', () => {
|
|
|
42
42
|
const diagnostics = typecheckModule(mod);
|
|
43
43
|
assert.equal(diagnostics.some(d => d.code === "E004" /* ErrorCode.TYPE_VAR_UNDECLARED */), true, '参数类型使用未声明的类型变量应提示错误');
|
|
44
44
|
});
|
|
45
|
-
it('
|
|
45
|
+
it('疑似类型变量的未知类型名不触发 TYPEVAR_LIKE_UNDECLARED(与 Java 一致,#281)', () => {
|
|
46
46
|
const typeName = (name) => ({ kind: 'TypeName', name });
|
|
47
47
|
const func = {
|
|
48
48
|
kind: 'Func',
|
|
@@ -69,7 +69,7 @@ describe('泛型诊断', () => {
|
|
|
69
69
|
decls: [func]
|
|
70
70
|
};
|
|
71
71
|
const diagnostics = typecheckModule(mod);
|
|
72
|
-
assert.equal(diagnostics.some(d => d.code === "E006" /* ErrorCode.TYPEVAR_LIKE_UNDECLARED */),
|
|
72
|
+
assert.equal(diagnostics.some(d => d.code === "E006" /* ErrorCode.TYPEVAR_LIKE_UNDECLARED */), false, 'Core 不含类型别名声明,未知类型名可能是别名,不应报 E006');
|
|
73
73
|
});
|
|
74
74
|
});
|
|
75
75
|
describe('模式匹配 Result/Maybe 绑定', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typecheck-advanced.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/typecheck-advanced.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,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;AAI5D,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;IAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAiB,CAAC;QAC9E,MAAM,IAAI,GAAc;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,kBAAkB,EAAE,KAAK;YACzB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;YACjB,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE;oBACV;wBACE,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAe;qBACnD;iBACF;aACF;SACF,CAAC;QACF,MAAM,GAAG,GAAgB;YACvB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,mCAAmC;YACzC,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAC;QACF,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CACV,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,+CAAkC,CAAC,EAC/D,IAAI,EACJ,qBAAqB,CACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"typecheck-advanced.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/typecheck-advanced.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":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAK5E,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,CAAC,GAAG,mBAAmB,CAAC,mBAAmB,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;SACnG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAU,CAAC,QAAQ,KAAK,OAAO,IAAK,CAAU,CAAC,QAAQ,KAAK,SAAS,CAAW,CAAC;IACnG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACnH,CAAC;AAED,SAAS,GAAG,CAAC,IAA6B,EAAE,KAA8B;IACxE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,KAAK,CAAC;AACjB,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CACrB,4DAA4D;YAC1D,+CAA+C;YAC/C,4FAA4F,CAC/F,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,0GAA0G,CAAC,CAAC;QACpI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,wFAAwF,CAAC,CAAC;QAClH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,oGAAoG,CAAC,CAAC;QAC9H,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,KAAK,GAAG;YACZ,yDAAyD;YACzD,wDAAwD;YACxD,2DAA2D;YAC3D,0DAA0D;YAC1D,wDAAwD;YACxD,2DAA2D;YAC3D,4HAA4H;SAC7H,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2GAA2G,EAAE,GAAG,EAAE;QACnH,MAAM,KAAK,GAAuB;YAChC,CAAC,yDAAyD,EAAE,MAAM,CAAC;YACnE,CAAC,wDAAwD,EAAE,MAAM,CAAC;YAClE,CAAC,wDAAwD,EAAE,MAAM,CAAC;YAClE,CAAC,8DAA8D,EAAE,MAAM,CAAC;YACxE,CAAC,6DAA6D,EAAE,MAAM,CAAC;YACvE,CAAC,8HAA8H,EAAE,MAAM,CAAC;YACxI,CAAC,wGAAwG,EAAE,MAAM,CAAC;YAClH,CAAC,uFAAuF,EAAE,MAAM,CAAC;SAClG,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK;YAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG;YACZ,oEAAoE;YACpE,wEAAwE;YACxE,sEAAsE;YACtE,wEAAwE;YACxE,gEAAgE;SACjE,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACvH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACrH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,yIAAyI,CAAC,CAAC;QACnK,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,MAAM,KAAK,GAAG,kEAAkE,CAAC;IACjF,MAAM,GAAG,GAAG,+DAA+D,CAAC;IAE5E,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAc,CAAC;QACrE,MAAM,CAAC,SAAS,CAAE,IAA4C,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,wBAAwB,CAAC,0CAA0C,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACpH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,wBAAwB,CAAC,0CAA0C,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1H,CAAC;QACD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,oEAAoE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,gEAAgE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAChH,MAAM,CAAC,SAAS,CACd,KAAK,CAAC,2HAA2H,CAAC,CAAC,KAAK,EACxI,CAAC,MAAM,CAAC,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kGAAkG,EAAE,GAAG,EAAE;QAC1G,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,mGAAmG,CAAC,CAAC;QAC7H,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,KAAK,GAAG,6GAA6G,CAAC;IAE5H,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,0DAA0D,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/G,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,gEAAgE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,6DAA6D,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAG,8GAA8G,CAAC;QAC5H,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,IAAI,GAAG,iIAAiI,CAAC;QAC/I,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2DAA2D,EAAE,GAAG,EAAE;IACzE,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GACR,0FAA0F;YAC1F,+FAA+F;YAC/F,uEAAuE;YACvE,wEAAwE;YACxE,wFAAwF,CAAC;QAC3F,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GACR,2EAA2E;YAC3E,sEAAsE;YACtE,6DAA6D,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED