@aster-cloud/aster-lang-ts 1.2.2 → 1.2.3
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 +32 -0
- package/dist/src/core/interpreter.d.ts.map +1 -1
- package/dist/src/core/interpreter.js +62 -9
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/frontend/resolution-choice.d.ts +2 -0
- package/dist/src/frontend/resolution-choice.d.ts.map +1 -1
- package/dist/src/frontend/resolution-choice.js +33 -2
- package/dist/src/frontend/resolution-choice.js.map +1 -1
- package/dist/src/frontend/resolve-declarations.js +2 -2
- package/dist/src/frontend/resolve-declarations.js.map +1 -1
- package/dist/src/lsp/completion.d.ts +7 -2
- package/dist/src/lsp/completion.d.ts.map +1 -1
- package/dist/src/lsp/completion.js +11 -4
- package/dist/src/lsp/completion.js.map +1 -1
- package/dist/src/lsp/member-completion.d.ts +38 -3
- package/dist/src/lsp/member-completion.d.ts.map +1 -1
- package/dist/src/lsp/member-completion.js +102 -19
- package/dist/src/lsp/member-completion.js.map +1 -1
- package/dist/src/lsp/server.js +4 -1
- package/dist/src/lsp/server.js.map +1 -1
- package/dist/src/typecheck/context.d.ts.map +1 -1
- package/dist/src/typecheck/context.js +29 -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 +20 -2
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/pattern.js +2 -2
- package/dist/src/typecheck/pattern.js.map +1 -1
- package/dist/src/typecheck/statement.js +1 -1
- package/dist/src/typecheck/statement.js.map +1 -1
- package/dist/src/typecheck/symbol_table.d.ts +7 -1
- package/dist/src/typecheck/symbol_table.d.ts.map +1 -1
- package/dist/src/typecheck/symbol_table.js +14 -0
- package/dist/src/typecheck/symbol_table.js.map +1 -1
- package/dist/test/integration/lsp/lsp-member-completion.test.js +43 -4
- package/dist/test/integration/lsp/lsp-member-completion.test.js.map +1 -1
- package/dist/test/integration/lsp/package-exports.test.d.ts +2 -0
- package/dist/test/integration/lsp/package-exports.test.d.ts.map +1 -0
- package/dist/test/integration/lsp/package-exports.test.js +30 -0
- package/dist/test/integration/lsp/package-exports.test.js.map +1 -0
- package/dist/test/unit/canonicalizer/possessive-anchor.test.js +25 -28
- package/dist/test/unit/canonicalizer/possessive-anchor.test.js.map +1 -1
- package/dist/test/unit/formatter-corpus-roundtrip.test.js +42 -3
- package/dist/test/unit/formatter-corpus-roundtrip.test.js.map +1 -1
- package/dist/test/unit/frontend/resolution-choice.test.d.ts +2 -0
- package/dist/test/unit/frontend/resolution-choice.test.d.ts.map +1 -0
- package/dist/test/unit/frontend/resolution-choice.test.js +90 -0
- package/dist/test/unit/frontend/resolution-choice.test.js.map +1 -0
- package/dist/test/unit/interpreter/scope-writeback.test.d.ts +2 -0
- package/dist/test/unit/interpreter/scope-writeback.test.d.ts.map +1 -0
- package/dist/test/unit/interpreter/scope-writeback.test.js +154 -0
- package/dist/test/unit/interpreter/scope-writeback.test.js.map +1 -0
- package/dist/test/unit/lsp/member-completion.test.d.ts +2 -0
- package/dist/test/unit/lsp/member-completion.test.d.ts.map +1 -0
- package/dist/test/unit/lsp/member-completion.test.js +142 -0
- package/dist/test/unit/lsp/member-completion.test.js.map +1 -0
- package/dist/test/unit/rule-function-values.test.d.ts +2 -0
- package/dist/test/unit/rule-function-values.test.d.ts.map +1 -0
- package/dist/test/unit/rule-function-values.test.js +89 -0
- package/dist/test/unit/rule-function-values.test.js.map +1 -0
- package/dist/test/unit/typecheck/assign-mutability.test.d.ts +2 -0
- package/dist/test/unit/typecheck/assign-mutability.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/assign-mutability.test.js +144 -0
- package/dist/test/unit/typecheck/assign-mutability.test.js.map +1 -0
- package/package.json +5 -1
package/dist/src/lsp/server.js
CHANGED
|
@@ -82,6 +82,7 @@ let hasConfigurationCapability = false;
|
|
|
82
82
|
let hasWorkspaceFolderCapability = false;
|
|
83
83
|
let hasDiagnosticRelatedInformationCapability = false;
|
|
84
84
|
let hasWatchedFilesCapability = false;
|
|
85
|
+
let hasInsertReplaceCapability = false;
|
|
85
86
|
let watcherRegistered = false;
|
|
86
87
|
connection.onInitialize(async (params) => {
|
|
87
88
|
// LSP server 加载全部内置 lexicon —— 用户切换 locale 设置时 zh-CN / de-DE 必须可解析
|
|
@@ -96,6 +97,8 @@ connection.onInitialize(async (params) => {
|
|
|
96
97
|
hasWatchedFilesCapability = !!(capabilities.workspace &&
|
|
97
98
|
capabilities.workspace.didChangeWatchedFiles &&
|
|
98
99
|
capabilities.workspace.didChangeWatchedFiles.dynamicRegistration);
|
|
100
|
+
// 成员补全光标在名字中间时用 InsertReplaceEdit(#259);客户端未声明时退回覆盖整个名字的 TextEdit
|
|
101
|
+
hasInsertReplaceCapability = capabilities.textDocument?.completion?.completionItem?.insertReplaceSupport === true;
|
|
99
102
|
/* ★租户领域词汇:由客户端在 initialize 时推送(issue #161)。
|
|
100
103
|
*
|
|
101
104
|
* 背景:`vocabularyRegistry.registerCustom(tenantId, vocab)` 是**租户级**的
|
|
@@ -290,7 +293,7 @@ connection.onInitialized(() => {
|
|
|
290
293
|
// Register diagnostic handlers
|
|
291
294
|
registerDiagnosticHandlers(connection, documents, getOrParse, getLexiconForDoc);
|
|
292
295
|
// Register completion handlers
|
|
293
|
-
registerCompletionHandlers(connection, documents, getOrParse, getLexiconForDoc);
|
|
296
|
+
registerCompletionHandlers(connection, documents, getOrParse, getLexiconForDoc, { insertReplace: hasInsertReplaceCapability });
|
|
294
297
|
// Register navigation handlers
|
|
295
298
|
registerNavigationHandlers(connection, documents, getOrParse, getDocumentSettings, getLexiconForDoc);
|
|
296
299
|
// Register formatting handlers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/lsp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/lsp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMhE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CACtF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACxC;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,IAAI,GACV,IAAI,CAeN;AAoBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAwB9G"}
|
|
@@ -13,15 +13,42 @@ export function defineSymbol(context, name, type, kind, span) {
|
|
|
13
13
|
const options = {};
|
|
14
14
|
if (span)
|
|
15
15
|
options.span = span;
|
|
16
|
-
|
|
16
|
+
// ADR 0052:只有 Let 绑定可被 Set 赋值;形参、lambda 形参、模式绑定不可变(与 Java BaseTypeChecker 一致)。
|
|
17
|
+
options.mutable = kind === 'var';
|
|
17
18
|
context.symbols.define(name, type, kind, options);
|
|
18
19
|
}
|
|
20
|
+
/** 可作为 Set 目标查找的局部名种类。 */
|
|
21
|
+
const LOCAL_KINDS = new Set(['var', 'param', 'pattern']);
|
|
22
|
+
/** 不可赋值的绑定种类在诊断里的英文称呼(与 Java 端一致)。 */
|
|
23
|
+
const IMMUTABLE_KIND_LABEL = {
|
|
24
|
+
param: 'parameter',
|
|
25
|
+
pattern: 'pattern binding',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* 不可赋值目标在诊断里的英文称呼(与 Java 端一致);可赋值时返回 undefined。
|
|
29
|
+
* lambda 按值捕获外层变量,体内 Set 捕获变量的语义未定义,故一律拒绝(ADR 0052 §2.2)。
|
|
30
|
+
*/
|
|
31
|
+
function immutableTargetLabel(context, name, symbol) {
|
|
32
|
+
if (!symbol.mutable)
|
|
33
|
+
return IMMUTABLE_KIND_LABEL[symbol.kind];
|
|
34
|
+
return context.symbols.resolvesAcrossLambda(name) ? 'captured variable' : undefined;
|
|
35
|
+
}
|
|
19
36
|
export function assignSymbol(context, name, type, span) {
|
|
20
37
|
const symbol = context.symbols.lookup(name);
|
|
21
|
-
|
|
38
|
+
// 函数名、类型名不是局部名:与 Java 一致按未定义处理(E101)
|
|
39
|
+
if (!symbol || !LOCAL_KINDS.has(symbol.kind)) {
|
|
22
40
|
context.diagnostics.undefinedVariable(name, span);
|
|
23
41
|
return;
|
|
24
42
|
}
|
|
43
|
+
const immutable = immutableTargetLabel(context, name, symbol);
|
|
44
|
+
if (immutable) {
|
|
45
|
+
// 与 Java BaseTypeChecker 同码(E001)。专用错误码待语言包补齐译文后再引入(见 ADR 0052 §5)。
|
|
46
|
+
context.diagnostics.error("E001" /* ErrorCode.TYPE_MISMATCH */, span, {
|
|
47
|
+
expected: 'a Let binding',
|
|
48
|
+
actual: `${immutable} '${name}'`,
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
25
52
|
if (!typesEqual(symbol.type, type) && !TypeSystem.isSubtype(type, symbol.type)) {
|
|
26
53
|
context.diagnostics.error("E002" /* ErrorCode.TYPE_MISMATCH_ASSIGN */, span, {
|
|
27
54
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAiDnD,MAAM,UAAU,YAAY,CAC1B,OAA+B,EAC/B,IAAY,EACZ,IAAe,EACf,IAAgB,EAChB,IAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAkB;QAClB,OAAO,CAAC,WAAW,CAAC,KAAK,0CAA6B,IAAI,EAAE;YAC1D,IAAI;YACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAiDnD,MAAM,UAAU,YAAY,CAC1B,OAA+B,EAC/B,IAAY,EACZ,IAAe,EACf,IAAgB,EAChB,IAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAkB;QAClB,OAAO,CAAC,WAAW,CAAC,KAAK,0CAA6B,IAAI,EAAE;YAC1D,IAAI;YACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,OAAO,CAAC,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC;IACjC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,0BAA0B;AAC1B,MAAM,WAAW,GAA4B,IAAI,GAAG,CAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9F,sCAAsC;AACtC,MAAM,oBAAoB,GAAwC;IAChE,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF;;;GAGG;AACH,SAAS,oBAAoB,CAAC,OAA+B,EAAE,IAAY,EAAE,MAAkB;IAC7F,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA+B,EAAE,IAAY,EAAE,IAAe,EAAE,IAAW;IACtG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,qCAAqC;IACrC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,IAAI,SAAS,EAAE,CAAC;QACd,oEAAoE;QACpE,OAAO,CAAC,WAAW,CAAC,KAAK,uCAA0B,IAAI,EAAE;YACvD,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,GAAG,SAAS,KAAK,IAAI,GAAG;SACjC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,WAAW,CAAC,KAAK,8CAAiC,IAAI,EAAE;YAC9D,IAAI;YACJ,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/typecheck/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/typecheck/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,KAAK,EAAqB,aAAa,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAKL,YAAY,EAEb,MAAM,WAAW,CAAC;AAUnB,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,sBAAsB,CAAC;IACxE,OAAO,UAAS;IAChB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAiB;IAEhC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,sBAAsB,GAAG,IAAI;CA4d7F;AA+BD,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,CAAC,UAAU,EACrB,WAAW,EAAE,iBAAiB,GAC7B,IAAI,CAAC,IAAI,CAIX;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,IAAI,CAAC,IAAI,EACjB,IAAI,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EACrC,WAAW,EAAE,iBAAiB,GAC7B,IAAI,CAIN"}
|
|
@@ -87,9 +87,15 @@ export class TypeOfExprVisitor extends DefaultCoreVisitor {
|
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
89
|
const symbol = symbols.lookup(expression.name);
|
|
90
|
+
const signature = symbol ? undefined : module.funcSignatures.get(expression.name);
|
|
90
91
|
if (symbol) {
|
|
91
92
|
this.result = symbol.type;
|
|
92
93
|
}
|
|
94
|
+
else if (signature) {
|
|
95
|
+
// 值位置引用模块规则(`twice(inc, n)`、`Let g be inc`):函数值,类型为签名的 FuncType。
|
|
96
|
+
// 与 Java TypeChecker 一致——函数签名登记在模块作用域,局部名优先(已在上一分支命中)。
|
|
97
|
+
this.result = { kind: 'FuncType', params: signature.params, ret: signature.ret };
|
|
98
|
+
}
|
|
93
99
|
else {
|
|
94
100
|
let matched;
|
|
95
101
|
for (const en of module.enums.values()) {
|
|
@@ -382,7 +388,8 @@ export class TypeOfExprVisitor extends DefaultCoreVisitor {
|
|
|
382
388
|
// 在此瞎猜签名会误报。
|
|
383
389
|
if (expression.target.kind === 'Name' && !expression.target.name.includes('.')) {
|
|
384
390
|
const callee = expression.target.name;
|
|
385
|
-
|
|
391
|
+
// 局部名(函数类型参数、Let 绑定的函数值)遮蔽同名模块规则:按局部值的 FuncType 校验个数
|
|
392
|
+
const sig = calleeSignature(module, symbols, callee);
|
|
386
393
|
if (sig && sig.params.length !== expression.args.length) {
|
|
387
394
|
diagnostics.error("E032" /* ErrorCode.CALL_ARITY_MISMATCH */, originToSpan(expression.origin) ?? originToSpan(expression.target.origin), {
|
|
388
395
|
func: callee,
|
|
@@ -440,7 +447,8 @@ export class TypeOfExprVisitor extends DefaultCoreVisitor {
|
|
|
440
447
|
this.handled = true;
|
|
441
448
|
return;
|
|
442
449
|
}
|
|
443
|
-
|
|
450
|
+
// 本模块规则,或函数类型的局部名(参数 `f as (Int) -> Int`、`Let g be inc`):结果为其返回类型
|
|
451
|
+
const signature = calleeSignature(module, symbols, expression.target.name);
|
|
444
452
|
if (signature) {
|
|
445
453
|
this.result = signature.ret;
|
|
446
454
|
this.handled = true;
|
|
@@ -473,6 +481,16 @@ function inferDataDeclFromField(module, baseName, fieldName) {
|
|
|
473
481
|
return narrowed[0];
|
|
474
482
|
return null;
|
|
475
483
|
}
|
|
484
|
+
/**
|
|
485
|
+
* 单段调用目标的签名:局部名优先(类型为 FuncType 时取其参数与返回类型,其它类型无签名),
|
|
486
|
+
* 否则取本模块规则签名。与 Java BaseTypeChecker 一致——函数签名登记在模块作用域,局部名遮蔽之。
|
|
487
|
+
*/
|
|
488
|
+
function calleeSignature(module, symbols, name) {
|
|
489
|
+
const local = symbols.lookup(name);
|
|
490
|
+
if (!local)
|
|
491
|
+
return module.funcSignatures.get(name);
|
|
492
|
+
return local.type.kind === 'FuncType' ? { params: [...local.type.params], ret: local.type.ret } : undefined;
|
|
493
|
+
}
|
|
476
494
|
export function typeOfExpr(ctx, symbols, expr, diagnostics) {
|
|
477
495
|
const visitor = new TypeOfExprVisitor();
|
|
478
496
|
visitor.visitExpression(expr, { module: ctx, symbols, diagnostics });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/typecheck/expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE3H,uDAAuD;AACvD,SAAS,eAAe,CAAC,MAAqB,EAAE,KAAwB;IACtE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACvC,OAAO,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,iBAAkB,SAAQ,kBAA0C;IACxE,OAAO,GAAG,KAAK,CAAC;IAChB,MAAM,GAAc,WAAW,EAAE,CAAC;IAEhC,eAAe,CAAC,UAA2B,EAAE,OAA+B;QACnF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACjD,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC9E,IAAI,aAAa,EAAE,CAAC;wBAClB,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAmB,CAAC;wBAC9E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,WAAW,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;wBACzE,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;wBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,OAAO;oBACT,CAAC;oBACD,IAAI,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;oBAClC,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;wBAClC,4DAA4D;wBAC5D,IAAI,SAAS,CAAC,WAAW,CAAC;4BAAE,MAAM;wBAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;wBAC1E,qEAAqE;wBACrE,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;4BACzD,WAAW,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;4BAClE,SAAS;wBACX,CAAC;wBACD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACjD,MAAM,gBAAgB,GACpB,QAAQ,IAAI,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;4BAClE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gCACtB,WAAW,CAAC,KAAK,uCAA0B,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;oCAC1E,KAAK,EAAE,SAAS;oCAChB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;iCAC9B,CAAC,CAAC;gCACH,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gCAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gCACpB,OAAO;4BACT,CAAC;4BACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;4BAC5E,IAAI,CAAC,KAAK,EAAE,CAAC;gCACX,WAAW,CAAC,KAAK,uCAA0B,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;oCAC1E,KAAK,EAAE,SAAS;oCAChB,IAAI,EAAE,gBAAgB,CAAC,IAAI;iCAC5B,CAAC,CAAC;gCACH,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gCAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gCACpB,OAAO;4BACT,CAAC;4BACD,8DAA8D;4BAC9D,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAE,KAAK,CAAC,IAAkB,CAAC;wBACvF,CAAC;6BAAM,CAAC;4BACN,WAAW,CAAC,KAAK,uCAA0B,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gCAC1E,KAAK,EAAE,SAAS;gCAChB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;6BAC9B,CAAC,CAAC;4BACH,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;4BAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;4BACpB,OAAO;wBACT,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;oBAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO;gBACT,CAAC;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,IAAI,OAA8B,CAAC;oBACnC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1C,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,OAAO,EAAE,CAAC;wBACZ,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAmB,CAAC;oBAC1E,CAAC;yBAAM,CAAC;wBACN,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;wBAChF,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;gBAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,KAAK;gBACR,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAmB,CAAC;gBACjE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;gBAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAmB,CAAC;gBACpE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,SAAS;gBACZ,uCAAuC;gBACvC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAmB,CAAC;gBACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;gBAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAgB,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,GAAG;oBACZ,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK;oBAC5C,GAAG,EAAE,WAAW,EAAE;iBACJ,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,GAAG;oBACZ,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,WAAW,EAAE;oBACjB,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK;iBAC/B,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,GAAG;oBACZ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK;iBAChC,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,EAAiB,CAAC;gBACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO;gBACT,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACtC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,WAAW,CAAC,KAAK,uCAA0B,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;4BAC1E,KAAK,EAAE,KAAK,CAAC,IAAI;4BACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;yBACpB,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBACD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oBACvE,4CAA4C;oBAC5C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAiB,EAAE,SAAS,CAAC,EAAE,CAAC;wBAC5D,WAAW,CAAC,KAAK,6CAAgC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;4BACnH,KAAK,EAAE,KAAK,CAAC,IAAI;4BACjB,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,IAAiB,CAAC;4BACnD,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC;yBAC9B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC9B,WAAW,CAAC,KAAK,gDAAmC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;4BACnF,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,KAAK,EAAE,KAAK,CAAC,IAAI;yBAClB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAmB,CAAC;gBAC/E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC1E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACpD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAiB,CAAC;gBAC1C,CAAC;qBAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,EAAe,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,OAAO,oCAAuB,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC1G,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAiB,CAAC,CAAyB,CAAC;gBAC9G,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,OAAoB,CAAC,CAAC;gBAC3D,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC7B,IAAI,CAAC;oBACH,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBACzC,YAAY,CACV,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAChC,KAAK,CAAC,IAAI,EACV,MAAM,CAAC,KAAK,CAAE,EACd,OAAO;wBACP,0CAA0C;wBAC1C,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAChC,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACH,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oBAC/E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;wBAC5E,WAAW,CAAC,KAAK,8CAAiC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;4BACjF,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC;4BACzB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;yBAC7B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM,QAAQ,GAAkB;oBAC9B,IAAI,EAAE,UAAU;oBAChB,MAAM;oBACN,GAAG;oBACH,YAAY,EAAE,EAAE;oBAChB,eAAe,EAAE,EAAE;iBACpB,CAAC;gBACF,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,iDAAiD;gBACjD,gEAAgE;gBAChE,gCAAgC;gBAChC,0BAA0B,CACxB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,EACzD,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EACvE,WAAW,CACZ,CAAC;gBACF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC5E,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC3D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oBAC1E,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACjC,WAAW,CAAC,KAAK,wCAA2B,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7H,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;wBACpC,0BAA0B,CACxB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EACjD,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAC/D,WAAW,CACZ,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;oBAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO;gBACT,CAAC;gBAED,kDAAkD;gBAClD,gDAAgD;gBAChD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClF,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;wBACjI,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;wBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,OAAO;oBACT,CAAC;oBACD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;oBAC3F,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;oBACtC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACxB,WAAW,CAAC,KAAK,gDAAmC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;4BACnF,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;4BAC5B,QAAQ;4BACR,MAAM;yBACP,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAmB,CAAC;wBACjE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;4BACxB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gCACjD,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;4BACjH,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAmB,CAAC;oBAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO;gBACT,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;oBAClC,KAAK,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;gBACrD,CAAC;gBAED,+DAA+D;gBAC/D,2DAA2D;gBAC3D,+DAA+D;gBAC/D,yEAAyE;gBACzE,yEAAyE;gBACzE,UAAU;gBACV,MAAM,KAAK,GAAG,CAAC,CAAY,EAAE,CAAS,EAAW,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;gBAC1F,MAAM,KAAK,GAAG,CAAC,CAAY,EAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC7D,MAAM,KAAK,GAAG,CAAC,CAAY,EAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC5D,MAAM,SAAS,GAAG,CAAC,CAAY,EAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACjF,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACvD,IACE,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;oBACjC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC5F,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAC5B,CAAC;oBACD,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAC;oBAC1E,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAC;oBAC1E,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;wBAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACvF,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;wBACnD,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;oBACrD,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBAC7D,WAAW,CAAC,KAAK,+CAEf,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EACzE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjB,CAAC;oBACJ,CAAC;oBACD,kEAAkE;oBAClE,4DAA4D;oBAC5D,iDAAiD;oBACjD,IACE,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACtB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,EAC9F,CAAC;wBACD,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAmB,CAAC;wBACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,6EAA6E;gBAC7E,+EAA+E;gBAC/E,+BAA+B;gBAC/B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;oBACjC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,EAAE,CAAC;oBAChG,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3E,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAC;wBACzE,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;4BACd,WAAW,CAAC,KAAK,+CAEf,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAC3E,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CACrC,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,8BAA8B;gBAC9B,EAAE;gBACF,qDAAqD;gBACrD,4CAA4C;gBAC5C,yCAAyC;gBACzC,uEAAuE;gBACvE,EAAE;gBACF,oDAAoD;gBACpD,+DAA+D;gBAC/D,8CAA8C;gBAC9C,iCAAiC;gBACjC,wBAAwB;gBACxB,EAAE;gBACF,uCAAuC;gBACvC,eAAe;gBACf,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;oBACtC,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACxD,WAAW,CAAC,KAAK,6CAEf,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EACzE;4BACE,IAAI,EAAE,MAAM;4BACZ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;4BAC3B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM;yBAC/B,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9E,IAAI,MAAM,GAAG,KAAK,CAAC;oBACnB,IAAI,OAAO,GAAG,KAAK,CAAC;oBACpB,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;wBAClC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;4BACjB,KAAK,KAAK;gCACR,MAAM,GAAG,IAAI,CAAC;gCACd,MAAM;4BACR,KAAK,MAAM;gCACT,OAAO,GAAG,IAAI,CAAC;gCACf,MAAM;4BACR,KAAK,QAAQ;gCACX,SAAS,GAAG,IAAI,CAAC;gCACjB,MAAM;wBACV,CAAC;oBACH,CAAC;oBACD,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7E,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;wBAClB,WAAW,CAAC,OAAO,mDAAsC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;4BAClI,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;4BAC9B,MAAM;4BACN,OAAO;4BACP,SAAS;yBACV,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5G,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAC;oBAClF,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5D,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAiB,CAAC;oBAC9C,CAAC;yBAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpE,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,EAAe,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACN,WAAW,CAAC,OAAO,oCAAuB,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBAC9G,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;oBAC9B,CAAC;oBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO;gBACT,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACtC,gEAAgE;oBAChE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAC9F,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAmB,CAAC;wBACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,OAAO;oBACT,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACpE,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC;wBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO;YACT,CAAC;YACD;gBACE,MAAM;QACV,CAAC;IACH,CAAC;CACF;AAED,SAAS,sBAAsB,CAC7B,MAAqB,EACrB,QAAgB,EAChB,SAAiB;IAEjB,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,GAAkB,EAClB,OAAoB,EACpB,IAAqB,EACrB,WAA8B;IAE9B,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACxC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAiB,EACjB,IAAqC,EACrC,WAA8B;IAE9B,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/typecheck/expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { defineSymbol } from './context.js';
|
|
|
2
2
|
import { formatType, isUnknown, unknownType } from './pure.js';
|
|
3
3
|
export function bindPattern(ctx, symbols, pattern, scrutineeType, diagnostics) {
|
|
4
4
|
if (pattern.kind === 'PatName') {
|
|
5
|
-
defineSymbol({ module: ctx, symbols, diagnostics }, pattern.name, scrutineeType, '
|
|
5
|
+
defineSymbol({ module: ctx, symbols, diagnostics }, pattern.name, scrutineeType, 'pattern', pattern.span);
|
|
6
6
|
return;
|
|
7
7
|
}
|
|
8
8
|
if (pattern.kind === 'PatNull')
|
|
@@ -51,7 +51,7 @@ function bindPatternCtor(ctx, symbols, pattern, scrutineeType, diagnostics) {
|
|
|
51
51
|
if (!dataDecl) {
|
|
52
52
|
if (pattern.names) {
|
|
53
53
|
for (const name of pattern.names) {
|
|
54
|
-
defineSymbol({ module: ctx, symbols, diagnostics }, name, unknownType(), '
|
|
54
|
+
defineSymbol({ module: ctx, symbols, diagnostics }, name, unknownType(), 'pattern', pattern.span);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
const ctor = pattern;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../src/typecheck/pattern.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE/D,MAAM,UAAU,WAAW,CACzB,GAAkB,EAClB,OAAoB,EACpB,OAAqB,EACrB,aAAwB,EACxB,WAA8B;IAE9B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../../src/typecheck/pattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ export class TypecheckVisitor extends DefaultCoreVisitor {
|
|
|
27
27
|
}
|
|
28
28
|
case 'Set': {
|
|
29
29
|
const valueType = typeOfExpr(module, symbols, statement.expr, diagnostics);
|
|
30
|
-
assignSymbol(context, statement.name, valueType, statement.span);
|
|
30
|
+
assignSymbol(context, statement.name, valueType, statement.span ?? originToSpan(statement.origin));
|
|
31
31
|
this.result = valueType;
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,OAAO,gBAAiB,SAAQ,kBAA0C;IACvE,MAAM,GAAc,WAAW,EAAE,CAAC;IAEhC,UAAU,CAAC,KAAiB,EAAE,OAA+B;QACpE,IAAI,IAAI,GAAc,WAAW,EAAE,CAAC;QACpC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEQ,cAAc,CAAC,SAAyB,EAAE,OAA+B;QAChF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACjD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC3E,mEAAmE;gBACnE,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1G,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC3E,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Core, Span } from '../types.js';
|
|
2
2
|
type Type = Core.Type;
|
|
3
|
-
|
|
3
|
+
/** `var` 为 Let 绑定(唯一可被 `Set` 赋值的种类);`pattern` 为 match 模式绑定。 */
|
|
4
|
+
export type SymbolKind = 'var' | 'func' | 'data' | 'enum' | 'type_alias' | 'param' | 'pattern';
|
|
4
5
|
export type ScopeType = 'module' | 'function' | 'block' | 'lambda';
|
|
5
6
|
export interface SymbolInfo {
|
|
6
7
|
name: string;
|
|
@@ -50,6 +51,11 @@ export declare class SymbolTable {
|
|
|
50
51
|
getCurrentScope(): Scope;
|
|
51
52
|
define(name: string, type: Type, kind: SymbolKind, options?: DefineOptions): void;
|
|
52
53
|
lookup(name: string): SymbolInfo | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* name 的最近绑定是否在某个 lambda 作用域之外(即 lambda 体内引用的是捕获的外层变量)。
|
|
56
|
+
* 名字未定义时返回 false。
|
|
57
|
+
*/
|
|
58
|
+
resolvesAcrossLambda(name: string): boolean;
|
|
53
59
|
lookupInCurrentScope(name: string): SymbolInfo | undefined;
|
|
54
60
|
markCaptured(name: string): void;
|
|
55
61
|
getCapturedSymbols(): SymbolInfo[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol_table.d.ts","sourceRoot":"","sources":["../../../src/typecheck/symbol_table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAEtB,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"symbol_table.d.ts","sourceRoot":"","sources":["../../../src/typecheck/symbol_table.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,20 @@ export class SymbolTable {
|
|
|
106
106
|
lookup(name) {
|
|
107
107
|
return this.current.lookup(name);
|
|
108
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* name 的最近绑定是否在某个 lambda 作用域之外(即 lambda 体内引用的是捕获的外层变量)。
|
|
111
|
+
* 名字未定义时返回 false。
|
|
112
|
+
*/
|
|
113
|
+
resolvesAcrossLambda(name) {
|
|
114
|
+
let crossed = false;
|
|
115
|
+
for (let scope = this.current; scope; scope = scope.getParent()) {
|
|
116
|
+
if (scope.lookupLocal(name))
|
|
117
|
+
return crossed;
|
|
118
|
+
if (scope.getType() === 'lambda')
|
|
119
|
+
crossed = true;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
109
123
|
lookupInCurrentScope(name) {
|
|
110
124
|
return this.current.lookupLocal(name);
|
|
111
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol_table.js","sourceRoot":"","sources":["../../../src/typecheck/symbol_table.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"symbol_table.js","sourceRoot":"","sources":["../../../src/typecheck/symbol_table.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,11 +35,11 @@ after(() => {
|
|
|
35
35
|
rmSync(workDir, { recursive: true, force: true });
|
|
36
36
|
});
|
|
37
37
|
/** 以 locale 打开 lines,在第 line 行 character 处请求补全 */
|
|
38
|
-
async function complete(locale, lines, line, character, context) {
|
|
39
|
-
|
|
38
|
+
async function complete(locale, lines, line, character, context, via = client) {
|
|
39
|
+
via.notify('workspace/didChangeConfiguration', { settings: { asterLanguageServer: { locale, index: { persist: false } } } });
|
|
40
40
|
const uri = `inmemory://policy/member-${seq++}.aster`;
|
|
41
|
-
|
|
42
|
-
const res = (await
|
|
41
|
+
via.notify('textDocument/didOpen', { textDocument: { uri, languageId: 'aster-cnl', version: 1, text: lines.join('\n') } });
|
|
42
|
+
const res = (await via.request('textDocument/completion', { textDocument: { uri }, position: { line, character }, context }));
|
|
43
43
|
return Array.isArray(res) ? res : res?.items ?? [];
|
|
44
44
|
}
|
|
45
45
|
const fieldsOf = (items) => items.filter((i) => i.kind === FIELD).map((i) => i.label).sort();
|
|
@@ -129,5 +129,44 @@ describe('成员补全:协议级', () => {
|
|
|
129
129
|
const items = await complete('en-US', lines, 5, ' Return 1.'.length, DOT);
|
|
130
130
|
assert.deepEqual(fieldsOf(items), []);
|
|
131
131
|
});
|
|
132
|
+
it('#259 光标在名字中间 `d.ag|e`、客户端未声明 insertReplaceSupport:TextEdit 覆盖整个名字', async () => {
|
|
133
|
+
const body = ' Return d.age.';
|
|
134
|
+
const dot = ' Return d.'.length;
|
|
135
|
+
const items = await complete('en-US', [...EN_HEAD, body, ''], 5, dot + 2, INVOKED);
|
|
136
|
+
assert.deepEqual(fieldsOf(items), ['age', 'name']);
|
|
137
|
+
assertEdits(items, 5, dot, dot + 3);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
describe('成员补全:客户端支持 InsertReplaceEdit(#259)', () => {
|
|
141
|
+
let irClient;
|
|
142
|
+
before(async () => {
|
|
143
|
+
irClient = new LSPClient();
|
|
144
|
+
irClient.spawn(SERVER, { cwd: workDir });
|
|
145
|
+
await irClient.request('initialize', {
|
|
146
|
+
processId: process.pid,
|
|
147
|
+
rootUri: null,
|
|
148
|
+
capabilities: { textDocument: { completion: { completionItem: { insertReplaceSupport: true } } } },
|
|
149
|
+
});
|
|
150
|
+
irClient.notify('initialized', {});
|
|
151
|
+
});
|
|
152
|
+
after(() => irClient.close());
|
|
153
|
+
it('`d.ag|e`:insert 为点号后到光标,replace 延伸到名字末尾', async () => {
|
|
154
|
+
const body = ' Return d.age.';
|
|
155
|
+
const dot = ' Return d.'.length;
|
|
156
|
+
const items = await complete('en-US', [...EN_HEAD, body, ''], 5, dot + 2, INVOKED, irClient);
|
|
157
|
+
assert.deepEqual(fieldsOf(items), ['age', 'name']);
|
|
158
|
+
for (const i of items.filter((x) => x.kind === FIELD)) {
|
|
159
|
+
assert.deepEqual(i.textEdit, {
|
|
160
|
+
insert: { start: { line: 5, character: dot }, end: { line: 5, character: dot + 2 } },
|
|
161
|
+
replace: { start: { line: 5, character: dot }, end: { line: 5, character: dot + 3 } },
|
|
162
|
+
newText: i.label,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
it('光标在名字末尾:仍为普通 TextEdit', async () => {
|
|
167
|
+
const body = ' Return d.ag.';
|
|
168
|
+
const items = await complete('en-US', [...EN_HEAD, body, ''], 5, body.length - 1, INVOKED, irClient);
|
|
169
|
+
assertEdits(items, 5, body.length - 3, body.length - 1);
|
|
170
|
+
});
|
|
132
171
|
});
|
|
133
172
|
//# sourceMappingURL=lsp-member-completion.test.js.map
|