@aster-cloud/aster-lang-ts 1.0.31 → 1.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scripts/corpus-loader.d.ts +10 -4
- package/dist/scripts/corpus-loader.d.ts.map +1 -1
- package/dist/scripts/corpus-loader.js +24 -9
- package/dist/scripts/corpus-loader.js.map +1 -1
- package/dist/scripts/lexicon-completeness.d.ts +42 -0
- package/dist/scripts/lexicon-completeness.d.ts.map +1 -0
- package/dist/scripts/lexicon-completeness.js +57 -0
- package/dist/scripts/lexicon-completeness.js.map +1 -0
- package/dist/scripts/lsp-client-helper.d.ts +7 -1
- package/dist/scripts/lsp-client-helper.d.ts.map +1 -1
- package/dist/scripts/lsp-client-helper.js +6 -1
- package/dist/scripts/lsp-client-helper.js.map +1 -1
- package/dist/scripts/verify-lexicon-sync.js +14 -44
- package/dist/scripts/verify-lexicon-sync.js.map +1 -1
- package/dist/src/lsp/codeaction.d.ts.map +1 -1
- package/dist/src/lsp/codeaction.js +12 -4
- package/dist/src/lsp/codeaction.js.map +1 -1
- package/dist/src/lsp/diagnostics.d.ts +2 -0
- 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/navigation/hover.d.ts.map +1 -1
- package/dist/src/lsp/navigation/hover.js +23 -0
- package/dist/src/lsp/navigation/hover.js.map +1 -1
- package/dist/src/lsp/navigation/references.d.ts +3 -1
- package/dist/src/lsp/navigation/references.d.ts.map +1 -1
- package/dist/src/lsp/navigation/references.js +16 -6
- package/dist/src/lsp/navigation/references.js.map +1 -1
- package/dist/src/lsp/navigation/rename.d.ts +1 -1
- package/dist/src/lsp/navigation/rename.d.ts.map +1 -1
- package/dist/src/lsp/navigation/rename.js +31 -42
- package/dist/src/lsp/navigation/rename.js.map +1 -1
- package/dist/src/lsp/navigation/shared.d.ts +34 -2
- package/dist/src/lsp/navigation/shared.d.ts.map +1 -1
- package/dist/src/lsp/navigation/shared.js +88 -10
- package/dist/src/lsp/navigation/shared.js.map +1 -1
- package/dist/src/lsp/navigation.js +2 -2
- package/dist/src/lsp/navigation.js.map +1 -1
- package/dist/src/lsp/parse-document.d.ts +11 -0
- package/dist/src/lsp/parse-document.d.ts.map +1 -0
- package/dist/src/lsp/parse-document.js +51 -0
- package/dist/src/lsp/parse-document.js.map +1 -0
- package/dist/src/lsp/server.js +18 -23
- package/dist/src/lsp/server.js.map +1 -1
- package/dist/src/lsp/settings.d.ts +35 -0
- package/dist/src/lsp/settings.d.ts.map +1 -0
- package/dist/src/lsp/settings.js +31 -0
- package/dist/src/lsp/settings.js.map +1 -0
- package/dist/src/lsp/source-positions.d.ts +47 -0
- package/dist/src/lsp/source-positions.d.ts.map +1 -0
- package/dist/src/lsp/source-positions.js +92 -0
- package/dist/src/lsp/source-positions.js.map +1 -0
- package/dist/src/lsp/workspace/document-indexer.d.ts +3 -1
- package/dist/src/lsp/workspace/document-indexer.d.ts.map +1 -1
- package/dist/src/lsp/workspace/document-indexer.js +5 -7
- package/dist/src/lsp/workspace/document-indexer.js.map +1 -1
- package/dist/src/lsp/workspace/symbol-finder.d.ts +8 -1
- package/dist/src/lsp/workspace/symbol-finder.d.ts.map +1 -1
- package/dist/src/lsp/workspace/symbol-finder.js +10 -13
- package/dist/src/lsp/workspace/symbol-finder.js.map +1 -1
- package/dist/src/parser/constraint-parser.d.ts.map +1 -1
- package/dist/src/parser/constraint-parser.js +18 -7
- package/dist/src/parser/constraint-parser.js.map +1 -1
- package/dist/src/parser/decl-parser.d.ts.map +1 -1
- package/dist/src/parser/decl-parser.js +6 -5
- package/dist/src/parser/decl-parser.js.map +1 -1
- package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
- package/dist/src/parser/expr-stmt-parser.js +95 -38
- package/dist/src/parser/expr-stmt-parser.js.map +1 -1
- package/dist/src/parser/import-parser.d.ts.map +1 -1
- package/dist/src/parser/import-parser.js +2 -1
- package/dist/src/parser/import-parser.js.map +1 -1
- package/dist/src/parser/keyword-display.d.ts +40 -0
- package/dist/src/parser/keyword-display.d.ts.map +1 -0
- package/dist/src/parser/keyword-display.js +73 -0
- package/dist/src/parser/keyword-display.js.map +1 -0
- package/dist/src/parser/type-parser.d.ts.map +1 -1
- package/dist/src/parser/type-parser.js +5 -4
- package/dist/src/parser/type-parser.js.map +1 -1
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +1 -0
- package/dist/src/parser.js.map +1 -1
- package/dist/test/integration/lsp/lsp-rename-safety.test.d.ts +2 -0
- package/dist/test/integration/lsp/lsp-rename-safety.test.d.ts.map +1 -0
- package/dist/test/integration/lsp/lsp-rename-safety.test.js +114 -0
- package/dist/test/integration/lsp/lsp-rename-safety.test.js.map +1 -0
- package/dist/test/integration/lsp/lsp-source-positions.test.d.ts +2 -0
- package/dist/test/integration/lsp/lsp-source-positions.test.d.ts.map +1 -0
- package/dist/test/integration/lsp/lsp-source-positions.test.js +161 -0
- package/dist/test/integration/lsp/lsp-source-positions.test.js.map +1 -0
- package/dist/test/integration/lsp/lsp-zh-inmemory-navigation.test.d.ts +2 -0
- package/dist/test/integration/lsp/lsp-zh-inmemory-navigation.test.d.ts.map +1 -0
- package/dist/test/integration/lsp/lsp-zh-inmemory-navigation.test.js +79 -0
- package/dist/test/integration/lsp/lsp-zh-inmemory-navigation.test.js.map +1 -0
- package/dist/test/unit/eval-regression-poker-straight-high.test.d.ts +2 -0
- package/dist/test/unit/eval-regression-poker-straight-high.test.d.ts.map +1 -0
- package/dist/test/unit/eval-regression-poker-straight-high.test.js +61 -0
- package/dist/test/unit/eval-regression-poker-straight-high.test.js.map +1 -0
- package/dist/test/unit/lexicon-completeness.test.d.ts +2 -0
- package/dist/test/unit/lexicon-completeness.test.d.ts.map +1 -0
- package/dist/test/unit/lexicon-completeness.test.js +42 -0
- package/dist/test/unit/lexicon-completeness.test.js.map +1 -0
- package/dist/test/unit/lsp/codeaction.test.js +28 -0
- package/dist/test/unit/lsp/codeaction.test.js.map +1 -1
- package/dist/test/unit/lsp/lsp-locale-fixes.test.d.ts +2 -0
- package/dist/test/unit/lsp/lsp-locale-fixes.test.d.ts.map +1 -0
- package/dist/test/unit/lsp/lsp-locale-fixes.test.js +105 -0
- package/dist/test/unit/lsp/lsp-locale-fixes.test.js.map +1 -0
- package/dist/test/unit/lsp/parse-document.test.d.ts +2 -0
- package/dist/test/unit/lsp/parse-document.test.d.ts.map +1 -0
- package/dist/test/unit/lsp/parse-document.test.js +30 -0
- package/dist/test/unit/lsp/parse-document.test.js.map +1 -0
- package/dist/test/unit/mapping/redos-budget.test.js +60 -23
- package/dist/test/unit/mapping/redos-budget.test.js.map +1 -1
- package/dist/test/unit/parser/keyword-display.test.d.ts +8 -0
- package/dist/test/unit/parser/keyword-display.test.d.ts.map +1 -0
- package/dist/test/unit/parser/keyword-display.test.js +27 -0
- package/dist/test/unit/parser/keyword-display.test.js.map +1 -0
- package/dist/test/unit/parser/localized-diagnostic-keywords.test.d.ts +15 -0
- package/dist/test/unit/parser/localized-diagnostic-keywords.test.d.ts.map +1 -0
- package/dist/test/unit/parser/localized-diagnostic-keywords.test.js +98 -0
- package/dist/test/unit/parser/localized-diagnostic-keywords.test.js.map +1 -0
- package/dist/test/unit/parser/prefix-operator-call.test.js +119 -1
- package/dist/test/unit/parser/prefix-operator-call.test.js.map +1 -1
- package/dist/test/unit/scripts/corpus-loader.test.js +44 -9
- package/dist/test/unit/scripts/corpus-loader.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-parser.js","sourceRoot":"","sources":["../../../src/parser/type-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type-parser.js","sourceRoot":"","sources":["../../../src/parser/type-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/src/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAiB1D;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAS9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,OAAO,GAAE,OAAe,GACvB,WAAW,
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAiB1D;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAS9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,OAAO,GAAE,OAAe,GACvB,WAAW,CAcb"}
|
package/dist/src/parser.js
CHANGED
|
@@ -68,6 +68,7 @@ export function parseWithLexicon(tokens, lexicon = EN_US) {
|
|
|
68
68
|
const translatedTokens = translator.translateTokens(tokens);
|
|
69
69
|
// 附加类型推断规则后传递给 parse
|
|
70
70
|
const effective = attachTypeInferenceRules(lexicon);
|
|
71
|
+
// 报错文案里的关键词槽位由各子解析器经 keyword-display 按 effective 的 lexicon 显示
|
|
71
72
|
return parse(translatedTokens, effective);
|
|
72
73
|
}
|
|
73
74
|
//# sourceMappingURL=parser.js.map
|
package/dist/src/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAenD;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CAAC,MAAwB,EAAE,OAAiB;IAC/D,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACvD,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAwB,EACxB,UAAmB,KAAK;IAExB,gCAAgC;IAChC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,qCAAqC;IACrC,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAE5D,qBAAqB;IACrB,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAenD;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CAAC,MAAwB,EAAE,OAAiB;IAC/D,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACvD,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAwB,EACxB,UAAmB,KAAK;IAExB,gCAAgC;IAChC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,qCAAqC;IACrC,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAE5D,qBAAqB;IACrB,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACpD,8DAA8D;IAC9D,OAAO,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-rename-safety.test.d.ts","sourceRoot":"","sources":["../../../../test/integration/lsp/lsp-rename-safety.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 重命名 / 引用的安全性:只有光标落在**位置确定的标识符 token** 上才产生结果。
|
|
3
|
+
*
|
|
4
|
+
* ★冠词(en: the,de: eine)不是 token。旧实现取不到 token 时退回字符级取词拿到 `the`,
|
|
5
|
+
* 再退回全文正则——在 the 上按 F2 会把全文每个 the 都改掉。
|
|
6
|
+
* ★领域词汇:canonicalize 把「申请人」替换成规范名 Applicant。旧实现在原文里找不到
|
|
7
|
+
* Applicant 就推算位置,该 token 及其后同一行的位置全部错位;推算出的位置绝不能用于编辑。
|
|
8
|
+
* 期望位置一律由原文 indexOf 计算。
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, after, before } from 'node:test';
|
|
11
|
+
import assert from 'node:assert/strict';
|
|
12
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
13
|
+
import { tmpdir } from 'node:os';
|
|
14
|
+
import { join, resolve } from 'node:path';
|
|
15
|
+
import { LSPClient } from '../../../scripts/lsp-client-helper.js';
|
|
16
|
+
import { FINANCE_LOAN_ZH_CN } from '../../../src/config/lexicons/identifiers/domains/finance.loan.zh-CN.js';
|
|
17
|
+
const SERVER = resolve('dist/src/lsp/server.js');
|
|
18
|
+
const URI = 'inmemory://policy/default.aster';
|
|
19
|
+
function rangeOf(text, word, nth = 0) {
|
|
20
|
+
const lines = text.split('\n');
|
|
21
|
+
let seen = 0;
|
|
22
|
+
for (let line = 0; line < lines.length; line++) {
|
|
23
|
+
for (let i = lines[line].indexOf(word); i !== -1; i = lines[line].indexOf(word, i + 1)) {
|
|
24
|
+
const b = lines[line][i - 1] ?? ' ';
|
|
25
|
+
const a = lines[line][i + word.length] ?? ' ';
|
|
26
|
+
if (/[\p{L}\p{N}_]/u.test(b) || /[\p{L}\p{N}_]/u.test(a))
|
|
27
|
+
continue;
|
|
28
|
+
if (seen++ === nth)
|
|
29
|
+
return { start: { line, character: i }, end: { line, character: i + word.length } };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`${word}#${nth} not found`);
|
|
33
|
+
}
|
|
34
|
+
const inside = (r, k = 1) => ({ line: r.start.line, character: r.start.character + k });
|
|
35
|
+
const sortR = (rs) => [...rs].sort((a, b) => a.start.line - b.start.line || a.start.character - b.start.character);
|
|
36
|
+
let workDir;
|
|
37
|
+
let client = null;
|
|
38
|
+
before(() => { workDir = mkdtempSync(join(tmpdir(), 'lsp-rename-safety-')); });
|
|
39
|
+
after(() => { client?.close(); rmSync(workDir, { recursive: true, force: true }); });
|
|
40
|
+
async function open(locale, text, initializationOptions = {}) {
|
|
41
|
+
client?.close();
|
|
42
|
+
const c = new LSPClient();
|
|
43
|
+
c.spawn(SERVER, { cwd: workDir });
|
|
44
|
+
await c.request('initialize', { processId: process.pid, rootUri: null, capabilities: {}, initializationOptions });
|
|
45
|
+
c.notify('initialized', {});
|
|
46
|
+
c.notify('workspace/didChangeConfiguration', { settings: { asterLanguageServer: { locale, index: { persist: false } } } });
|
|
47
|
+
c.notify('textDocument/didOpen', { textDocument: { uri: URI, languageId: 'aster-cnl', version: 1, text } });
|
|
48
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
49
|
+
client = c;
|
|
50
|
+
return c;
|
|
51
|
+
}
|
|
52
|
+
const td = { uri: URI };
|
|
53
|
+
async function assertNotRenameable(c, at, label) {
|
|
54
|
+
assert.equal(await c.request('textDocument/prepareRename', { textDocument: td, position: at }), null, `prepareRename ${label}`);
|
|
55
|
+
assert.equal(await c.request('textDocument/rename', { textDocument: td, position: at, newName: 'NEU' }), null, `rename ${label}`);
|
|
56
|
+
assert.deepEqual(await c.request('textDocument/references', { textDocument: td, position: at, context: { includeDeclaration: true } }), [], `references ${label}`);
|
|
57
|
+
}
|
|
58
|
+
const EN = [
|
|
59
|
+
'Module demo.p.', '',
|
|
60
|
+
'Rule helper given x as Int, produce Int:', ' Return x plus 1.', '',
|
|
61
|
+
'Rule twice given x as Int, produce Int:', ' Let the sum be the total plus a helper(the total).', ' Return the sum.', '',
|
|
62
|
+
].join('\n');
|
|
63
|
+
describe('冠词上不产生重命名 / 引用', () => {
|
|
64
|
+
it('★en:在 the 上 F2 不改任何东西(旧实现把每个 the 都改掉)', async () => {
|
|
65
|
+
const c = await open('en-US', EN);
|
|
66
|
+
await assertNotRenameable(c, inside(rangeOf(EN, 'the', 0)), 'the');
|
|
67
|
+
});
|
|
68
|
+
it('★de:在 eine 上 F2 不改任何东西', async () => {
|
|
69
|
+
const DE = ['Modul demo.p.', '', 'Regel helfer gegeben eine größe als Ganzzahl, liefert Ganzzahl:', ' gib zurueck größe plus 1.', ''].join('\n');
|
|
70
|
+
const c = await open('de-DE', DE);
|
|
71
|
+
await assertNotRenameable(c, inside(rangeOf(DE, 'eine', 0)), 'eine');
|
|
72
|
+
});
|
|
73
|
+
/* A3:标识符恰好是同行被删冠词的子串(he ⊂ the)。对齐若不检查词边界,he 会被对到 the 里 */
|
|
74
|
+
it('★标识符 he 出现在冠词 the 之后:高亮与重命名都落在 he 上', async () => {
|
|
75
|
+
// 冠词 the 紧挨在 he 之前:对齐查找 he 时游标还在 the 之前,不检查词边界就会落进 the 里
|
|
76
|
+
const T = ['Module demo.p.', '', 'Rule f given x as Int, produce Int:', ' Let the he be x plus 1.', ' Return he.', ''].join('\n');
|
|
77
|
+
const c = await open('en-US', T);
|
|
78
|
+
const use = rangeOf(T, 'he', 1);
|
|
79
|
+
const expected = sortR([rangeOf(T, 'he', 0), use]);
|
|
80
|
+
const hl = (await c.request('textDocument/documentHighlight', { textDocument: td, position: inside(use) }));
|
|
81
|
+
assert.deepEqual(sortR(hl.map((h) => h.range)), expected);
|
|
82
|
+
const r = (await c.request('textDocument/rename', { textDocument: td, position: inside(use), newName: 'h2' }));
|
|
83
|
+
assert.deepEqual(sortR(r.changes[URI].map((e) => e.range)), expected);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
const ZH = [
|
|
87
|
+
'模块 demo.p。', '',
|
|
88
|
+
'规则 评估 给定 甲 作为 申请人,乙 作为 整数 产出 整数:', ' 返回 乙。', '',
|
|
89
|
+
].join('\n');
|
|
90
|
+
describe('领域词汇(finance.loan)', () => {
|
|
91
|
+
const init = { tenantId: 'tenant-test', domainVocabularies: [FINANCE_LOAN_ZH_CN] };
|
|
92
|
+
it('★词汇词之后同一行的位置仍是原文坐标(旧实现全部塌缩到同一位置)', async () => {
|
|
93
|
+
const c = await open('zh-CN', ZH, init);
|
|
94
|
+
const use = rangeOf(ZH, '乙', 1);
|
|
95
|
+
const hl = (await c.request('textDocument/documentHighlight', { textDocument: td, position: inside(use, 0) }));
|
|
96
|
+
assert.deepEqual(sortR(hl.map((h) => h.range)), sortR([rangeOf(ZH, '乙', 0), use]));
|
|
97
|
+
const def = (await c.request('textDocument/definition', { textDocument: td, position: inside(use, 0) }));
|
|
98
|
+
assert.deepEqual(def?.range.start, rangeOf(ZH, '乙', 0).start);
|
|
99
|
+
});
|
|
100
|
+
it('★词汇词本身不可重命名(它不是用户标识符,位置也不能基于推算)', async () => {
|
|
101
|
+
const c = await open('zh-CN', ZH, init);
|
|
102
|
+
await assertNotRenameable(c, inside(rangeOf(ZH, '申请人', 0)), '申请人');
|
|
103
|
+
});
|
|
104
|
+
/* 用户自己写的 Applicant 与词汇词「申请人」规范化后同名:重命名若只改逐字对齐的那处,
|
|
105
|
+
* 会让两者从同一个名字变成两个名字(语义改变)。必须整体拒绝。 */
|
|
106
|
+
it('★与词汇词同名的标识符:重命名整体拒绝,而不是只改一部分', async () => {
|
|
107
|
+
const T = ['模块 demo.p。', '', '规则 评估 给定 甲 作为 申请人,乙 作为 Applicant 产出 整数:', ' 返回 1。', ''].join('\n');
|
|
108
|
+
const c = await open('zh-CN', T, init);
|
|
109
|
+
const at = inside(rangeOf(T, 'Applicant', 0), 2);
|
|
110
|
+
assert.equal(await c.request('textDocument/prepareRename', { textDocument: td, position: at }), null);
|
|
111
|
+
assert.equal(await c.request('textDocument/rename', { textDocument: td, position: at, newName: 'Borrower' }), null);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=lsp-rename-safety.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-rename-safety.test.js","sourceRoot":"","sources":["../../../../test/integration/lsp/lsp-rename-safety.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wEAAwE,CAAC;AAE5G,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACjD,MAAM,GAAG,GAAG,iCAAiC,CAAC;AAG9C,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,GAAG,GAAG,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzF,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;YAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;YACrF,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,SAAS;YACnE,IAAI,IAAI,EAAE,KAAK,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1G,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC;AAC9C,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,CAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/F,MAAM,KAAK,GAAG,CAAC,EAAW,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAE5H,IAAI,OAAe,CAAC;AACpB,IAAI,MAAM,GAAqB,IAAI,CAAC;AACpC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAErF,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,IAAY,EAAE,wBAAiD,EAAE;IACnG,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;IAC1B,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAClH,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,MAAM,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3H,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5G,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,CAAC,CAAC;AACX,CAAC;AACD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAExB,KAAK,UAAU,mBAAmB,CAAC,CAAY,EAAE,EAAuC,EAAE,KAAa;IACrG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,KAAK,EAAE,CAAC,CAAC;IAChI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;IAClI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,KAAK,EAAE,CAAC,CAAC;AACrK,CAAC;AAED,MAAM,EAAE,GAAG;IACT,gBAAgB,EAAE,EAAE;IACpB,0CAA0C,EAAE,oBAAoB,EAAE,EAAE;IACpE,yCAAyC,EAAE,sDAAsD,EAAE,mBAAmB,EAAE,EAAE;CAC3H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,EAAE,GAAG,CAAC,eAAe,EAAE,EAAE,EAAE,iEAAiE,EAAE,6BAA6B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClJ,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,yDAAyD;QACzD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,EAAE,qCAAqC,EAAE,2BAA2B,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpI,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAA4B,CAAC;QACvI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAyD,CAAC;QACvK,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,EAAE,GAAG;IACT,YAAY,EAAE,EAAE;IAChB,kCAAkC,EAAE,SAAS,EAAE,EAAE;CAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAEnF,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;QAC1I,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;QACpI,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH;0CACsC;IACtC,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,EAAE,yCAAyC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACtG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-source-positions.test.d.ts","sourceRoot":"","sources":["../../../../test/integration/lsp/lsp-source-positions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 真实拉起 dist/src/lsp/server.js:LSP 返回的位置必须是**原文**坐标。
|
|
3
|
+
*
|
|
4
|
+
* ★canonicalize 删冠词(en: the/a,de: eine/die/der)会改变行内长度。旧实现把规范化文本
|
|
5
|
+
* 上的列号直接用于原文:`Let the total be helper(x).` 里重命名 helper 改掉的是 ` be he`,
|
|
6
|
+
* 光标在 helper 中间时甚至改成了 x;de 里 `eine größe` 改掉的是 `eine `。
|
|
7
|
+
* 期望位置一律由原文 indexOf 计算,与实现无关。
|
|
8
|
+
*/
|
|
9
|
+
import { describe, it, after, before } from 'node:test';
|
|
10
|
+
import assert from 'node:assert/strict';
|
|
11
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
12
|
+
import { tmpdir } from 'node:os';
|
|
13
|
+
import { join, resolve } from 'node:path';
|
|
14
|
+
import { LSPClient } from '../../../scripts/lsp-client-helper.js';
|
|
15
|
+
const SERVER = resolve('dist/src/lsp/server.js');
|
|
16
|
+
const URI = 'inmemory://policy/default.aster';
|
|
17
|
+
/** 原文里第 n 次出现 word 的 LSP 范围(独立于实现的期望值) */
|
|
18
|
+
function rangeOf(text, word, nth = 0) {
|
|
19
|
+
const lines = text.split('\n');
|
|
20
|
+
let seen = 0;
|
|
21
|
+
for (let line = 0; line < lines.length; line++) {
|
|
22
|
+
let from = 0;
|
|
23
|
+
for (let i = lines[line].indexOf(word, from); i !== -1; i = lines[line].indexOf(word, from)) {
|
|
24
|
+
const before = lines[line][i - 1] ?? ' ';
|
|
25
|
+
const afterCh = lines[line][i + word.length] ?? ' ';
|
|
26
|
+
from = i + 1;
|
|
27
|
+
if (/[\p{L}\p{N}_]/u.test(before) || /[\p{L}\p{N}_]/u.test(afterCh))
|
|
28
|
+
continue;
|
|
29
|
+
if (seen++ === nth)
|
|
30
|
+
return { start: { line, character: i }, end: { line, character: i + word.length } };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`${word}#${nth} not found`);
|
|
34
|
+
}
|
|
35
|
+
const inside = (r, k = 2) => ({ line: r.start.line, character: r.start.character + k });
|
|
36
|
+
const sortR = (rs) => [...rs].sort((a, b) => a.start.line - b.start.line || a.start.character - b.start.character);
|
|
37
|
+
function applyEdits(text, edits) {
|
|
38
|
+
const lines = text.split('\n');
|
|
39
|
+
for (const e of [...edits].sort((a, b) => b.range.start.line - a.range.start.line || b.range.start.character - a.range.start.character)) {
|
|
40
|
+
const l = lines[e.range.start.line];
|
|
41
|
+
lines[e.range.start.line] = l.slice(0, e.range.start.character) + e.newText + l.slice(e.range.end.character);
|
|
42
|
+
}
|
|
43
|
+
return lines.join('\n');
|
|
44
|
+
}
|
|
45
|
+
let workDir;
|
|
46
|
+
let client = null;
|
|
47
|
+
before(() => { workDir = mkdtempSync(join(tmpdir(), 'lsp-srcpos-')); });
|
|
48
|
+
after(() => { client?.close(); rmSync(workDir, { recursive: true, force: true }); });
|
|
49
|
+
async function open(locale, text) {
|
|
50
|
+
client?.close();
|
|
51
|
+
const c = new LSPClient();
|
|
52
|
+
c.spawn(SERVER, { cwd: workDir });
|
|
53
|
+
await c.request('initialize', { processId: process.pid, rootUri: null, capabilities: {} });
|
|
54
|
+
c.notify('initialized', {});
|
|
55
|
+
c.notify('workspace/didChangeConfiguration', { settings: { asterLanguageServer: { locale, index: { persist: false } } } });
|
|
56
|
+
c.notify('textDocument/didOpen', { textDocument: { uri: URI, languageId: 'aster-cnl', version: 1, text } });
|
|
57
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
58
|
+
client = c;
|
|
59
|
+
return c;
|
|
60
|
+
}
|
|
61
|
+
const td = { uri: URI };
|
|
62
|
+
const EN = [
|
|
63
|
+
'Module demo.p.', '',
|
|
64
|
+
'Rule helper given x as Int, produce Int:', ' Return x plus 1.', '',
|
|
65
|
+
'Rule twice given x as Int, produce Int:', ' Let the total be helper(x).', ' Return total.', '',
|
|
66
|
+
'Rule quad given x as Int, produce Int:', ' Return twice(twice(x)).', '',
|
|
67
|
+
].join('\n');
|
|
68
|
+
describe('en:冠词所在行的位置', () => {
|
|
69
|
+
it('★重命名改对字符,行保持完整;光标在 helper 中间时改的是 helper 而不是 x', async () => {
|
|
70
|
+
const c = await open('en-US', EN);
|
|
71
|
+
const call = rangeOf(EN, 'helper', 1); // Let the total be helper(x) 里的调用
|
|
72
|
+
for (const k of [2, 4]) {
|
|
73
|
+
const r = (await c.request('textDocument/rename', { textDocument: td, position: inside(call, k), newName: 'thrice' }));
|
|
74
|
+
const edits = r.changes[URI];
|
|
75
|
+
assert.deepEqual(sortR(edits.map((e) => e.range)), sortR([rangeOf(EN, 'helper', 0), call]), `k=${k}`);
|
|
76
|
+
const after = applyEdits(EN, edits).split('\n')[6];
|
|
77
|
+
assert.equal(after, ' Let the total be thrice(x).');
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
it('★引用 / 高亮 / 跳转定义的范围都是原文坐标', async () => {
|
|
81
|
+
const c = await open('en-US', EN);
|
|
82
|
+
const call = rangeOf(EN, 'helper', 1);
|
|
83
|
+
const expected = sortR([rangeOf(EN, 'helper', 0), call]);
|
|
84
|
+
const refs = (await c.request('textDocument/references', { textDocument: td, position: inside(call), context: { includeDeclaration: true } }));
|
|
85
|
+
assert.deepEqual(sortR(refs.map((r) => r.range)), expected);
|
|
86
|
+
const hl = (await c.request('textDocument/documentHighlight', { textDocument: td, position: inside(call) }));
|
|
87
|
+
assert.deepEqual(sortR(hl.map((h) => h.range)), expected);
|
|
88
|
+
const def = (await c.request('textDocument/definition', { textDocument: td, position: inside(call) }));
|
|
89
|
+
assert.deepEqual(def?.range.start, rangeOf(EN, 'helper', 0).start);
|
|
90
|
+
// total 定义在冠词之后:高亮两处都要对上原文
|
|
91
|
+
const total = rangeOf(EN, 'total', 1);
|
|
92
|
+
const hl2 = (await c.request('textDocument/documentHighlight', { textDocument: td, position: inside(total) }));
|
|
93
|
+
assert.deepEqual(sortR(hl2.map((h) => h.range)), sortR([rangeOf(EN, 'total', 0), total]));
|
|
94
|
+
});
|
|
95
|
+
it('★关键字不可重命名(en 无 lexicon 时按 en-US 判定)', async () => {
|
|
96
|
+
const c = await open('en-US', EN);
|
|
97
|
+
for (const kw of ['Return', 'Rule']) {
|
|
98
|
+
const at = inside(rangeOf(EN, kw, 0), 1);
|
|
99
|
+
assert.equal(await c.request('textDocument/prepareRename', { textDocument: td, position: at }), null, `prepareRename ${kw}`);
|
|
100
|
+
assert.equal(await c.request('textDocument/rename', { textDocument: td, position: at, newName: 'zzz' }), null, `rename ${kw}`);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
it('★hover 调用处显示被调函数,而不是外层函数', async () => {
|
|
104
|
+
const c = await open('en-US', EN);
|
|
105
|
+
for (const nth of [1, 2]) {
|
|
106
|
+
const h = (await c.request('textDocument/hover', { textDocument: td, position: inside(rangeOf(EN, 'twice', nth)) }));
|
|
107
|
+
assert.match(h.contents.value, /twice/, `twice#${nth}: ${h.contents.value}`);
|
|
108
|
+
assert.doesNotMatch(h.contents.value, /quad/);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
const ZH = [
|
|
113
|
+
'模块 demo.p。', '',
|
|
114
|
+
'规则 加倍 给定 数值 作为 整数 产出 整数:', ' 返回 数值 乘以 2。', '',
|
|
115
|
+
'规则 四倍 给定 数值 作为 整数 产出 整数:', ' 返回 加倍(加倍(数值))。', '',
|
|
116
|
+
].join('\n');
|
|
117
|
+
describe('zh', () => {
|
|
118
|
+
it('★hover 调用处显示被调函数「加倍」', async () => {
|
|
119
|
+
const c = await open('zh-CN', ZH);
|
|
120
|
+
const h = (await c.request('textDocument/hover', { textDocument: td, position: inside(rangeOf(ZH, '加倍', 1), 1) }));
|
|
121
|
+
assert.match(h.contents.value, /加倍/);
|
|
122
|
+
assert.doesNotMatch(h.contents.value, /四倍/);
|
|
123
|
+
});
|
|
124
|
+
/* T9b:引用若不带 lexicon,「规则」不被识别为关键字,会被当成标识符去找引用 */
|
|
125
|
+
it('★在 zh 关键字上查引用返回空', async () => {
|
|
126
|
+
const c = await open('zh-CN', ZH);
|
|
127
|
+
const refs = (await c.request('textDocument/references', { textDocument: td, position: inside(rangeOf(ZH, '规则', 0), 1), context: { includeDeclaration: true } }));
|
|
128
|
+
assert.deepEqual(refs, []);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
const DE = [
|
|
132
|
+
'Modul demo.p.', '',
|
|
133
|
+
'Regel helfer gegeben eine größe als Ganzzahl, liefert Ganzzahl:', ' gib zurueck größe plus 1.', '',
|
|
134
|
+
'Regel doppelt gegeben eine zahl als Ganzzahl, liefert Ganzzahl:', ' gib zurueck helfer(zahl) mal 2.', '',
|
|
135
|
+
].join('\n');
|
|
136
|
+
describe('de:冠词所在行的位置', () => {
|
|
137
|
+
it('★重命名「größe」改对字符(旧实现改掉的是「eine 」)', async () => {
|
|
138
|
+
const c = await open('de-DE', DE);
|
|
139
|
+
const r = (await c.request('textDocument/rename', { textDocument: td, position: inside(rangeOf(DE, 'größe', 0)), newName: 'menge' }));
|
|
140
|
+
assert.deepEqual(sortR(r.changes[URI].map((e) => e.range)), sortR([rangeOf(DE, 'größe', 0), rangeOf(DE, 'größe', 1)]));
|
|
141
|
+
assert.equal(applyEdits(DE, r.changes[URI]).split('\n')[2], 'Regel helfer gegeben eine menge als Ganzzahl, liefert Ganzzahl:');
|
|
142
|
+
});
|
|
143
|
+
it('★引用 / 高亮 / 跳转定义(参数在冠词之后)', async () => {
|
|
144
|
+
const c = await open('de-DE', DE);
|
|
145
|
+
const use = rangeOf(DE, 'zahl', 1);
|
|
146
|
+
const expected = sortR([rangeOf(DE, 'zahl', 0), use]);
|
|
147
|
+
const refs = (await c.request('textDocument/references', { textDocument: td, position: inside(use), context: { includeDeclaration: true } }));
|
|
148
|
+
assert.deepEqual(sortR(refs.map((x) => x.range)), expected);
|
|
149
|
+
const hl = (await c.request('textDocument/documentHighlight', { textDocument: td, position: inside(use) }));
|
|
150
|
+
assert.deepEqual(sortR(hl.map((h) => h.range)), expected);
|
|
151
|
+
const def = (await c.request('textDocument/definition', { textDocument: td, position: inside(rangeOf(DE, 'helfer', 1)) }));
|
|
152
|
+
assert.deepEqual(def?.range.start, rangeOf(DE, 'helfer', 0).start);
|
|
153
|
+
});
|
|
154
|
+
it('★hover 调用处显示被调函数 helfer', async () => {
|
|
155
|
+
const c = await open('de-DE', DE);
|
|
156
|
+
const h = (await c.request('textDocument/hover', { textDocument: td, position: inside(rangeOf(DE, 'helfer', 1)) }));
|
|
157
|
+
assert.match(h.contents.value, /helfer/);
|
|
158
|
+
assert.doesNotMatch(h.contents.value, /doppelt/);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=lsp-source-positions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-source-positions.test.js","sourceRoot":"","sources":["../../../../test/integration/lsp/lsp-source-positions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-zh-inmemory-navigation.test.d.ts","sourceRoot":"","sources":["../../../../test/integration/lsp/lsp-zh-inmemory-navigation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 真实拉起 dist/src/lsp/server.js(stdio),按 aster-cloud 编辑器的方式使用:
|
|
3
|
+
* inmemory:// 文档、只推 locale 设置、不声明 workspace.configuration。
|
|
4
|
+
*
|
|
5
|
+
* ★锁住服务端接线:getOrParse 必须把文档 lexicon 交给解析(M5:传 undefined 会让
|
|
6
|
+
* zh 文档的符号/hover 全部失败),rename/references 必须读打开中的内存文本。
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it, after } from 'node:test';
|
|
9
|
+
import assert from 'node:assert/strict';
|
|
10
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
11
|
+
import { tmpdir } from 'node:os';
|
|
12
|
+
import { join, resolve } from 'node:path';
|
|
13
|
+
import { LSPClient } from '../../../scripts/lsp-client-helper.js';
|
|
14
|
+
/* ★必须在独立空目录里启动:未传 rootUri 时服务端把 cwd 当工作区,扫描其中的 .aster 文件并
|
|
15
|
+
* 读回 cwd/.asteri 的持久化索引。在仓库根启动会把语料里的同名符号算进引用(CI 实测 7 != 2)。
|
|
16
|
+
* 这与 aster-cloud 网关为每个连接分配独立工作目录是同一个隔离要求。 */
|
|
17
|
+
const SERVER = resolve('dist/src/lsp/server.js');
|
|
18
|
+
const workDir = mkdtempSync(join(tmpdir(), 'lsp-zh-nav-'));
|
|
19
|
+
const URI = 'inmemory://policy/default.aster';
|
|
20
|
+
const ZH_DOC = '模块 demo.p。\n\n定义 Req 包含\n a 作为 整数。\n\n规则 helper 给定 x 作为 整数 产出 整数:\n 返回 x 加上 1。\n\n规则 twice 给定 r 作为 Req 产出 整数:\n 返回 helper(r.a) 乘以 2。\n';
|
|
21
|
+
let initCapabilities = {};
|
|
22
|
+
async function open(locale, text) {
|
|
23
|
+
const client = new LSPClient();
|
|
24
|
+
client.spawn(SERVER, { cwd: workDir });
|
|
25
|
+
const init = (await client.request('initialize', { processId: process.pid, rootUri: null, capabilities: {} }));
|
|
26
|
+
initCapabilities = init.capabilities;
|
|
27
|
+
client.notify('initialized', {});
|
|
28
|
+
// 持久化索引关掉:测试不在仓库目录写 .asteri/
|
|
29
|
+
client.notify('workspace/didChangeConfiguration', { settings: { asterLanguageServer: { locale, index: { persist: false } } } });
|
|
30
|
+
client.notify('textDocument/didOpen', { textDocument: { uri: URI, languageId: 'aster-cnl', version: 1, text } });
|
|
31
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
32
|
+
return client;
|
|
33
|
+
}
|
|
34
|
+
describe('LSP zh + inmemory 文档(真实服务端进程)', () => {
|
|
35
|
+
let client = null;
|
|
36
|
+
after(() => { client?.close(); rmSync(workDir, { recursive: true, force: true }); });
|
|
37
|
+
it('★文档符号 / hover / 跳转定义 / 重命名 / 引用 都返回真实结果', async () => {
|
|
38
|
+
client = await open('zh-CN', ZH_DOC);
|
|
39
|
+
// 客户端按这两个标志决定是否注册对应功能(见 server.ts experimental.aster)
|
|
40
|
+
assert.deepEqual(initCapabilities.experimental?.aster, { localizedParsing: true, openDocumentNavigation: true });
|
|
41
|
+
const symbols = (await client.request('textDocument/documentSymbol', { textDocument: { uri: URI } }));
|
|
42
|
+
assert.deepEqual(symbols.map((s) => s.name), ['demo.p']);
|
|
43
|
+
const hover = (await client.request('textDocument/hover', { textDocument: { uri: URI }, position: { line: 8, character: 4 } }));
|
|
44
|
+
assert.match(hover.contents.value, /twice/);
|
|
45
|
+
const def = (await client.request('textDocument/definition', { textDocument: { uri: URI }, position: { line: 9, character: 6 } }));
|
|
46
|
+
assert.equal(def.uri, URI);
|
|
47
|
+
assert.equal(def.range.start.line, 5);
|
|
48
|
+
const rename = (await client.request('textDocument/rename', { textDocument: { uri: URI }, position: { line: 5, character: 4 }, newName: 'inc' }));
|
|
49
|
+
assert.equal(rename.changes[URI]?.length, 2, `helper 定义 + 调用应各改一处,实际: ${JSON.stringify(rename)}`);
|
|
50
|
+
const refs = (await client.request('textDocument/references', { textDocument: { uri: URI }, position: { line: 5, character: 4 }, context: { includeDeclaration: true } }));
|
|
51
|
+
assert.equal(refs.length, 2);
|
|
52
|
+
assert.ok(refs.every((r) => r.uri === URI));
|
|
53
|
+
});
|
|
54
|
+
/* ★标识符本身是中文 / 带变音的德文时,引用与重命名必须按 lexicon 的词法规则取词。
|
|
55
|
+
* 旧实现 captureWordAt 只认 [A-Za-z0-9_.]:「加倍」上 prepareRename 成功、rename 回 null、
|
|
56
|
+
* 引用回 []。文档里故意放一个字符串字面量「加倍」:按 token 精确匹配时不应被算进去,
|
|
57
|
+
* 漏传 lexicon(退化成正则)时会多算一处,从而让测试变红。 */
|
|
58
|
+
it('★zh 中文标识符:重命名与引用命中定义与调用,不含字符串字面量', async () => {
|
|
59
|
+
client?.close();
|
|
60
|
+
const ZH_CJK = '模块 demo.p。\n\n规则 加倍 给定 数值 作为 整数 产出 整数:\n 返回 数值 乘以 2。\n\n规则 四倍 给定 数值 作为 整数 产出 整数:\n 返回 加倍(加倍(数值))。\n\n规则 名称 给定 数值 作为 整数 产出 文本:\n 返回 「加倍」。\n';
|
|
61
|
+
client = await open('zh-CN', ZH_CJK);
|
|
62
|
+
const at = { line: 2, character: 4 }; // 定义处的「加倍」
|
|
63
|
+
const prep = (await client.request('textDocument/prepareRename', { textDocument: { uri: URI }, position: at }));
|
|
64
|
+
assert.equal(prep?.placeholder, '加倍');
|
|
65
|
+
const rename = (await client.request('textDocument/rename', { textDocument: { uri: URI }, position: at, newName: '翻倍' }));
|
|
66
|
+
const lines = (rename?.changes[URI] ?? []).map((e) => e.range.start.line).sort();
|
|
67
|
+
assert.deepEqual(lines, [2, 6, 6], `应改定义 1 处 + 调用 2 处,实际: ${JSON.stringify(rename)}`);
|
|
68
|
+
const refs = (await client.request('textDocument/references', { textDocument: { uri: URI }, position: at, context: { includeDeclaration: true } }));
|
|
69
|
+
assert.deepEqual(refs.map((r) => r.range.start.line).sort(), [2, 6, 6]);
|
|
70
|
+
});
|
|
71
|
+
it('★de 带变音的标识符可重命名', async () => {
|
|
72
|
+
client?.close();
|
|
73
|
+
const DE = 'Modul demo.p.\n\nRegel verdoppeln gegeben größe als Ganzzahl, liefert Ganzzahl:\n gib zurueck größe mal 2.\n';
|
|
74
|
+
client = await open('de-DE', DE);
|
|
75
|
+
const rename = (await client.request('textDocument/rename', { textDocument: { uri: URI }, position: { line: 2, character: 27 }, newName: 'menge' }));
|
|
76
|
+
assert.equal(rename?.changes[URI]?.length, 2, `参数与使用各一处,实际: ${JSON.stringify(rename)}`);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=lsp-zh-inmemory-navigation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-zh-inmemory-navigation.test.js","sourceRoot":"","sources":["../../../../test/integration/lsp/lsp-zh-inmemory-navigation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-regression-poker-straight-high.test.d.ts","sourceRoot":"","sources":["../../../test/unit/eval-regression-poker-straight-high.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { compile } from '../../src/browser.js';
|
|
7
|
+
import { evaluate } from '../../src/core/interpreter.js';
|
|
8
|
+
/**
|
|
9
|
+
* aster-cloud 扑克摊牌引擎在 1.0.29+ 报「List.get: index out of bounds: 4 (size=4)」的回归护栏。
|
|
10
|
+
*
|
|
11
|
+
* 根因:规则里 `Let straightHigh be List.get(sortedDistinct, 4)` 无条件求值,
|
|
12
|
+
* 含对子的 5 张牌只有 4 个不同点数,下标 4 必然越界。1.0.28 及以前 TS 解释器
|
|
13
|
+
* 越界静默返回 undefined(该值又恰好没被用到),所以「看起来能跑」;
|
|
14
|
+
* 1.0.29 起 List.get 越界抛错,与 truffle 一致(aster-dev#32),潜伏缺陷暴露。
|
|
15
|
+
*
|
|
16
|
+
* 本测试固定三条契约:
|
|
17
|
+
* - Let 绑定按序立即求值,不因后续分支未使用而跳过——越界照样报错(两引擎一致);
|
|
18
|
+
* - 用不越界的写法(List.max)取顺子高牌即可得到正确结果;
|
|
19
|
+
* - `and` 短路:左侧为假时右侧的越界 List.get 不会被求值(TS 求值器的设计语义)。
|
|
20
|
+
*/
|
|
21
|
+
const repoRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..');
|
|
22
|
+
const source = readFileSync(join(repoRoot, 'test', 'fixtures', 'eval-regression', 'poker-straight-high.aster'), 'utf8');
|
|
23
|
+
// 对子 K 的 5 张牌:4 个不同点数,即原 KK>QQ 用例里的组合形态。
|
|
24
|
+
const PAIR_HAND = [13, 13, 12, 2, 5];
|
|
25
|
+
const STRAIGHT_HAND = [9, 10, 11, 12, 13];
|
|
26
|
+
const WHEEL_HAND = [14, 2, 3, 4, 5];
|
|
27
|
+
function run(entry, ranks) {
|
|
28
|
+
const c = compile(source);
|
|
29
|
+
assert.ok(c.core, `compile: ${JSON.stringify(c.diagnostics ?? [])}`);
|
|
30
|
+
const ev = evaluate(c.core, entry, { ranks });
|
|
31
|
+
return { success: ev.success, value: ev.value, error: String(ev.error ?? '') };
|
|
32
|
+
}
|
|
33
|
+
describe('扑克顺子高牌:Let 立即求值 + List.get 越界(aster-cloud 1.0.31 升级回归)', () => {
|
|
34
|
+
it('★原写法遇对子手牌越界报错(复现 aster-cloud 的失败信息)', () => {
|
|
35
|
+
const r = run('straightHighEager', PAIR_HAND);
|
|
36
|
+
assert.equal(r.success, false, `必须失败,实际 value=${JSON.stringify(r.value)}`);
|
|
37
|
+
assert.match(r.error, /List\.get: index out of bounds: 4 \(size=4\)/, `实际:${r.error}`);
|
|
38
|
+
});
|
|
39
|
+
it('原写法遇 5 个不同点数时正常返回顺子高牌', () => {
|
|
40
|
+
const r = run('straightHighEager', STRAIGHT_HAND);
|
|
41
|
+
assert.equal(r.success, true, r.error);
|
|
42
|
+
assert.equal(r.value, 13);
|
|
43
|
+
});
|
|
44
|
+
it('改用 List.max 后对子手牌不再越界,顺子结果不变', () => {
|
|
45
|
+
const pair = run('straightHighSafe', PAIR_HAND);
|
|
46
|
+
assert.equal(pair.success, true, pair.error);
|
|
47
|
+
assert.equal(pair.value, 0);
|
|
48
|
+
const straight = run('straightHighSafe', STRAIGHT_HAND);
|
|
49
|
+
assert.equal(straight.success, true, straight.error);
|
|
50
|
+
assert.equal(straight.value, 13);
|
|
51
|
+
});
|
|
52
|
+
it('and 短路护住越界下标:对子手牌判轮子为假且不报错', () => {
|
|
53
|
+
const pair = run('isWheel', PAIR_HAND);
|
|
54
|
+
assert.equal(pair.success, true, pair.error);
|
|
55
|
+
assert.equal(pair.value, false);
|
|
56
|
+
const wheel = run('isWheel', WHEEL_HAND);
|
|
57
|
+
assert.equal(wheel.success, true, wheel.error);
|
|
58
|
+
assert.equal(wheel.value, true);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=eval-regression-poker-straight-high.test.js.map
|