@aster-cloud/aster-lang-ts 1.0.25 → 1.0.27

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.
Files changed (52) hide show
  1. package/dist/src/browser.d.ts +1 -1
  2. package/dist/src/browser.d.ts.map +1 -1
  3. package/dist/src/browser.js +1 -1
  4. package/dist/src/browser.js.map +1 -1
  5. package/dist/src/core/index.d.ts +1 -1
  6. package/dist/src/core/index.d.ts.map +1 -1
  7. package/dist/src/core/index.js +1 -1
  8. package/dist/src/core/index.js.map +1 -1
  9. package/dist/src/core/interpreter.d.ts +13 -0
  10. package/dist/src/core/interpreter.d.ts.map +1 -1
  11. package/dist/src/core/interpreter.js +302 -24
  12. package/dist/src/core/interpreter.js.map +1 -1
  13. package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
  14. package/dist/src/frontend/canonicalizer.js +6 -1
  15. package/dist/src/frontend/canonicalizer.js.map +1 -1
  16. package/dist/src/lower_to_core.js +30 -1
  17. package/dist/src/lower_to_core.js.map +1 -1
  18. package/dist/test/unit/builtin-arity.test.d.ts +2 -0
  19. package/dist/test/unit/builtin-arity.test.d.ts.map +1 -0
  20. package/dist/test/unit/builtin-arity.test.js +90 -0
  21. package/dist/test/unit/builtin-arity.test.js.map +1 -0
  22. package/dist/test/unit/canonicalizer/canonicalizer.test.js +23 -0
  23. package/dist/test/unit/canonicalizer/canonicalizer.test.js.map +1 -1
  24. package/dist/test/unit/ctor-call-form-lowering.test.d.ts +2 -0
  25. package/dist/test/unit/ctor-call-form-lowering.test.d.ts.map +1 -0
  26. package/dist/test/unit/ctor-call-form-lowering.test.js +78 -0
  27. package/dist/test/unit/ctor-call-form-lowering.test.js.map +1 -0
  28. package/dist/test/unit/guest-map-serialization.test.d.ts +2 -0
  29. package/dist/test/unit/guest-map-serialization.test.d.ts.map +1 -0
  30. package/dist/test/unit/guest-map-serialization.test.js +60 -0
  31. package/dist/test/unit/guest-map-serialization.test.js.map +1 -0
  32. package/dist/test/unit/list-builtins-fail-loud.test.d.ts +2 -0
  33. package/dist/test/unit/list-builtins-fail-loud.test.d.ts.map +1 -0
  34. package/dist/test/unit/list-builtins-fail-loud.test.js +52 -0
  35. package/dist/test/unit/list-builtins-fail-loud.test.js.map +1 -0
  36. package/dist/test/unit/map-get-maybe.test.d.ts +2 -0
  37. package/dist/test/unit/map-get-maybe.test.d.ts.map +1 -0
  38. package/dist/test/unit/map-get-maybe.test.js +52 -0
  39. package/dist/test/unit/map-get-maybe.test.js.map +1 -0
  40. package/dist/test/unit/map-type-guard.test.d.ts +2 -0
  41. package/dist/test/unit/map-type-guard.test.d.ts.map +1 -0
  42. package/dist/test/unit/map-type-guard.test.js +147 -0
  43. package/dist/test/unit/map-type-guard.test.js.map +1 -0
  44. package/dist/test/unit/maybe-isnone-semantics.test.d.ts +2 -0
  45. package/dist/test/unit/maybe-isnone-semantics.test.d.ts.map +1 -0
  46. package/dist/test/unit/maybe-isnone-semantics.test.js +74 -0
  47. package/dist/test/unit/maybe-isnone-semantics.test.js.map +1 -0
  48. package/dist/test/unit/maybe-map-type-guard.test.d.ts +2 -0
  49. package/dist/test/unit/maybe-map-type-guard.test.d.ts.map +1 -0
  50. package/dist/test/unit/maybe-map-type-guard.test.js +88 -0
  51. package/dist/test/unit/maybe-map-type-guard.test.js.map +1 -0
  52. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-arity.test.js","sourceRoot":"","sources":["../../../test/unit/builtin-arity.test.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,29 @@ describe('canonicalizer', () => {
39
39
  it('冠词后紧跟句末(无修饰名词)不应被吞', () => {
40
40
  assert.strictEqual(canonicalize('Return a.'), 'Return a.');
41
41
  });
42
+ // aster-lang-core#120:裸 `not equal to`(不带 `is`)是合法比较运算符,
43
+ // 但 follow-set 漏了 `not`,导致左操作数被当冠词删掉:
44
+ // `Return a not equal to b.` → `Return not equal to b.`
45
+ // 本引擎表现为编译失败;Java 侧更糟——编译通过且**恒返回 true**(`5 != 5` 得 true)。
46
+ //
47
+ // ★三个冠词逐一断言:正则用 `(a|an|the)` 交替,只测 `a` 会漏掉
48
+ // `an`/`the` 各自的词边界情况。
49
+ it('冠词作操作数后跟裸 not equal to 不应被吞(#120)', () => {
50
+ for (const art of ['a', 'an', 'the']) {
51
+ assert.strictEqual(canonicalize(`Return ${art} not equal to b.`), `Return ${art} not equal to b.`, `${art} 被当冠词吞掉了`);
52
+ }
53
+ });
54
+ // 对照:`is not equal to` 本就正常(被已在列的 `is` 保护)。
55
+ // 锁住它,防止有人"简化"时把 `is` 从 follow-set 里去掉。
56
+ it('冠词作操作数后跟 is not equal to 保持正常', () => {
57
+ assert.strictEqual(canonicalize('Return a is not equal to b.'), 'Return a is not equal to b.');
58
+ });
59
+ // ★反向护栏:加 `not` 不能让**真冠词**逃过移除。
60
+ // `the not-yet-valid` 这类名词短语在 CNL 里不存在,但若将来出现,
61
+ // 这条会提醒改动者重新评估 follow-set 的边界。
62
+ it('真冠词后跟名词仍被移除(加 not 未放宽范围)', () => {
63
+ assert.strictEqual(canonicalize('define the function to return a value'), 'define function to return value');
64
+ });
42
65
  it('行末孤立标识符(无句末点)不应被吞——\\n 锚点与 EOF', () => {
43
66
  // 多行:a/the/an 在行末后跟 \n
44
67
  assert.strictEqual(canonicalize('Let a be 1\nReturn a'), 'Let a be 1\nReturn a');
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalizer.test.js","sourceRoot":"","sources":["../../../../test/unit/canonicalizer/canonicalizer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonicalizer.test.js","sourceRoot":"","sources":["../../../../test/unit/canonicalizer/canonicalizer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ctor-call-form-lowering.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctor-call-form-lowering.test.d.ts","sourceRoot":"","sources":["../../../test/unit/ctor-call-form-lowering.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { compile, evaluate, EN_US, initializeAllBundledLexicons } from '../../src/browser.js';
4
+ // 内置变体调用形式的降级归一(aster-lang-ts#124)。
5
+ //
6
+ // `Some(x)` / `Ok(x)` / `Err(x)` / `None()` 与关键字形式 `some of x` 必须降到
7
+ // **完全相同**的 Core IR 节点。此前只有关键字形式产出 Expr.Some,调用形式一路
8
+ // 保留成 Call{Name 'Some'},靠解释器在求值期特判兜底——单跑 TS 没问题,但把
9
+ // 这样的 IR 交给 JVM 引擎就炸(truffle 期望独立 Some 节点,只认 Call 会报
10
+ // `Unknown call target: Some`)。即两引擎各自都"能跑",唯独跨引擎喂 IR 不通。
11
+ //
12
+ // Java 侧在 parse 期就归一(AstBuilder 对 Ok/Err/Some/None 调用形式特判),
13
+ // 故其 IR 里始终是独立节点。本次在 lower 期补上同一步。
14
+ //
15
+ // 跨引擎那一半由 aster-lang-truffle 的 StdlibHofProbeTest#ctorCallFormCrossEngine
16
+ // 锁住(fixture 由本引擎产出,JVM 执行得 42)。
17
+ initializeAllBundledLexicons();
18
+ /** 编译并返回 Core IR(去掉 origin,便于比较两种写法是否等价)。 */
19
+ function ir(body) {
20
+ const c = compile(`Module p.\n\n${body}\n`, { lexicon: EN_US });
21
+ assert.ok(c.success && c.core, `compile 失败: ${JSON.stringify(c.parseErrors ?? [])}`);
22
+ return JSON.stringify(c.core, (k, v) => (k === 'origin' ? undefined : v));
23
+ }
24
+ /** 编译并求值。 */
25
+ function run(body, fn = 'f') {
26
+ const c = compile(`Module p.\n\n${body}\n`, { lexicon: EN_US });
27
+ assert.ok(c.success && c.core, `compile 失败: ${JSON.stringify(c.parseErrors ?? [])}`);
28
+ const out = evaluate(c.core, fn, {});
29
+ assert.ok(out.success, `求值失败: ${out.error}`);
30
+ return out.value;
31
+ }
32
+ describe('内置变体调用形式降级归一', () => {
33
+ // 核心不变式:调用形式与关键字形式产出**逐字节相同**的 IR。
34
+ // 这正是 ADR 0027「等价 fn(arg)」不变式对内置变体的要求。
35
+ it('Some(x) 与 some of x 产出相同 IR', () => {
36
+ assert.equal(ir('Rule f produce Int:\n Return Maybe.withDefault(Some(21), 0).'), ir('Rule f produce Int:\n Return Maybe.withDefault(Some of 21, 0).'));
37
+ });
38
+ it('Ok(x) 与 ok of x 产出相同 IR', () => {
39
+ assert.equal(ir('Rule f produce Int:\n Return Result.unwrap(Ok(5)).'), ir('Rule f produce Int:\n Return Result.unwrap(Ok of 5).'));
40
+ });
41
+ it('Err(x) 与 err of x 产出相同 IR', () => {
42
+ assert.equal(ir('Rule f produce Int:\n Return Result.unwrapErr(Err(7)).'), ir('Rule f produce Int:\n Return Result.unwrapErr(Err of 7).'));
43
+ });
44
+ // ★这几条是跨引擎可移植性的直接判据:IR 里必须是独立节点而非 Call。
45
+ // 只断言"求值结果对"锁不住——修复前求值同样是对的(解释器特判兜底),
46
+ // 炸的是把 IR 交给 JVM 的时候。
47
+ it('调用形式在 IR 里产出独立节点而非 Call', () => {
48
+ for (const [expr, kind] of [
49
+ ['Maybe.withDefault(Some(1), 0)', 'Some'],
50
+ ['Result.unwrap(Ok(1))', 'Ok'],
51
+ ['Result.unwrapErr(Err(1))', 'Err'],
52
+ ]) {
53
+ const json = ir(`Rule f produce Int:\n Return ${expr}.`);
54
+ assert.match(json, new RegExp(`"kind":"${kind}"`), `${expr} 应产出独立 ${kind} 节点`);
55
+ assert.doesNotMatch(json, new RegExp(`"kind":"Call","target":\\{"kind":"Name","name":"${kind}"`), `${expr} 不应残留 Call{Name '${kind}'}——那种 IR 在 JVM 引擎上会报 Unknown call target`);
56
+ }
57
+ });
58
+ it('语义不变:两种写法求值结果一致', () => {
59
+ assert.equal(run('Rule f produce Int:\n Return Maybe.withDefault(Some(21), 0).'), 21);
60
+ assert.equal(run('Rule f produce Int:\n Return Maybe.withDefault(Some of 21, 0).'), 21);
61
+ assert.equal(run('Rule f produce Int:\n Return Result.unwrap(Ok(5)).'), 5);
62
+ assert.equal(run('Rule f produce Int:\n Return Maybe.withDefault(None, 0).'), 0);
63
+ });
64
+ // 归一只在 arity 匹配时生效(Some/Ok/Err 恰 1 参、None 恰 0 参),
65
+ // 与 Java AstBuilder 的特判条件一致;不匹配的仍降级为普通 Call,
66
+ // 交由后续「未定义函数」逻辑处理,而不是被硬塞成内置变体。
67
+ //
68
+ // 注:这里不能用「用户自定义同名规则」来测——`Some` 是关键字,
69
+ // `Rule Some ...` 在 parser 阶段就报 Expected identifier,走不到降级。
70
+ it('不误伤:arity 不匹配时仍降级为普通 Call', () => {
71
+ for (const expr of ['Some(1, 2)', 'Some()']) {
72
+ const json = ir(`Rule f produce Int:\n Return ${expr}.`);
73
+ assert.match(json, /"kind":"Call","target":\{"kind":"Name","name":"Some"/, `${expr} 的 arity 与内置变体不符,应保留成普通 Call`);
74
+ assert.doesNotMatch(json, /"kind":"Some"/, `${expr} 不应被归一成 Some 节点`);
75
+ }
76
+ });
77
+ });
78
+ //# sourceMappingURL=ctor-call-form-lowering.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctor-call-form-lowering.test.js","sourceRoot":"","sources":["../../../test/unit/ctor-call-form-lowering.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=guest-map-serialization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest-map-serialization.test.d.ts","sourceRoot":"","sources":["../../../test/unit/guest-map-serialization.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { compile } from '../../src/browser.js';
4
+ import { evaluate, serializeGuestValue } from '../../src/core/interpreter.js';
5
+ // 审计 #126 回归测试:GuestMap 宿主边界。
6
+ // JSON.stringify 会把普通对象的整数样式键升序重排(JS 自有属性规范),guest map 的
7
+ // 插入序在 toJSON 的对象形态里必然丢失 —— 与 JVM 引擎(Jackson 序列化 LinkedHashMap,
8
+ // 插入序)字节不一致。serializeGuestValue 手写 JSON 对象语法按插入序发射(合法 JSON),
9
+ // dual-engine runner 的 value 字段用它。toObject() 给按普通对象读取的宿主一个非空快照。
10
+ function evalMap(body) {
11
+ const c = compile(`Module probe.\n\n${body}\n`);
12
+ assert.ok(c.core, `compile failed: ${JSON.stringify(c.parseErrors?.map((e) => e.message) ?? [])}`);
13
+ const ev = evaluate(c.core, 'f', {});
14
+ assert.equal(ev.success, true, `eval: ${ev.error ?? ''}`);
15
+ return ev.value;
16
+ }
17
+ const NUMERIC_KEYED = 'Rule f:\n Return Map.put(Map.put(Map.empty(), "2", 20), "1", 10).';
18
+ describe('audit #126: GuestMap host-boundary serialization', () => {
19
+ it('serializeGuestValue preserves numeric-like key insertion order (JVM byte parity)', () => {
20
+ const v = evalMap(NUMERIC_KEYED);
21
+ // 插入序 2 → 1;JVM LinkedHashMap+Jackson 输出 {"2":20,"1":10}
22
+ assert.equal(serializeGuestValue(v), '{"2":20,"1":10}');
23
+ // 对照:JSON.stringify(toJSON 对象形态)不可避免地重排 —— 记录这一已知限制,
24
+ // 若未来 JS 规范或实现变化使其保持插入序,此断言提醒我们可以简化。
25
+ assert.equal(JSON.stringify(v), '{"1":10,"2":20}');
26
+ });
27
+ it('serializeGuestValue recurses through lists and struct objects', () => {
28
+ const v = evalMap('Rule f:\n Let inner be Map.put(Map.put(Map.empty(), "10", 1), "2", 2).\n Return List.append(List.append(List.empty(), inner), 7).');
29
+ assert.equal(serializeGuestValue(v), '[{"10":1,"2":2},7]');
30
+ });
31
+ it('serializeGuestValue output is valid JSON that round-trips', () => {
32
+ const v = evalMap(NUMERIC_KEYED);
33
+ const parsed = JSON.parse(serializeGuestValue(v));
34
+ assert.deepEqual(parsed, { '1': 10, '2': 20 });
35
+ });
36
+ it('serializeGuestValue escapes keys and string values', () => {
37
+ const v = evalMap('Rule f:\n Return Map.put(Map.empty(), "a\\"b", "x\\"y").');
38
+ const s = serializeGuestValue(v);
39
+ assert.equal(s, '{"a\\"b":"x\\"y"}');
40
+ assert.deepEqual(JSON.parse(s), { 'a"b': 'x"y' });
41
+ });
42
+ it('serializeGuestValue handles primitives, null and top-level undefined', () => {
43
+ assert.equal(serializeGuestValue(42), '42');
44
+ assert.equal(serializeGuestValue('hi'), '"hi"');
45
+ assert.equal(serializeGuestValue(null), 'null');
46
+ assert.equal(serializeGuestValue(undefined), 'null');
47
+ });
48
+ it('toObject() gives hosts a usable, non-empty plain-object snapshot', () => {
49
+ const v = evalMap(NUMERIC_KEYED);
50
+ // Object.keys(guestMap) === [](真正的 Map),宿主改用 toObject()
51
+ assert.deepEqual(Object.keys(v), []);
52
+ const o = v.toObject();
53
+ assert.equal(o['1'], 10);
54
+ assert.equal(o['2'], 20);
55
+ assert.equal(Object.keys(o).length, 2);
56
+ // null 原型:无原型链可泄漏
57
+ assert.equal(Object.getPrototypeOf(o), null);
58
+ });
59
+ });
60
+ //# sourceMappingURL=guest-map-serialization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guest-map-serialization.test.js","sourceRoot":"","sources":["../../../test/unit/guest-map-serialization.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-builtins-fail-loud.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-builtins-fail-loud.test.d.ts","sourceRoot":"","sources":["../../../test/unit/list-builtins-fail-loud.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { compile } from '../../src/browser.js';
4
+ import { evaluate } from '../../src/core/interpreter.js';
5
+ // List.* 对非列表输入必须**响亮失败**,与 truffle 对齐。
6
+ //
7
+ // ★发现经过:验证「档位 C 之后档位 B 还有没有必要」时,逐个试了 B 原本要拦的
8
+ // 四种「未处理 null 就使用」,发现前三种都已响亮失败,唯独
9
+ // `List.length(Map.get(...))` **静默返回 0**。
10
+ //
11
+ // 进一步查证发现这不只是 null 问题:`List.length(Some([1,2,3]))` 也返回 0
12
+ // —— 命中的非空列表被报成空。根因是这五个 builtin 对**任何**非列表输入
13
+ // 静默返回 0/true/null/false/[x],而 Java 侧一律 throw。
14
+ // 既是双引擎分叉,也是静默错答案:规则跑通了、结果是错的。
15
+ function run(expr, ret = 'Int') {
16
+ const c = compile(`Module probe.\nRule r given a as Int, produce ${ret}:\n Return ${expr}.\n`);
17
+ if (!c.core)
18
+ return { ok: false, value: undefined, error: 'compile failed' };
19
+ const ev = evaluate(c.core, 'r', { a: 1 });
20
+ return { ok: ev.success, value: ev.value, error: String(ev.error ?? '') };
21
+ }
22
+ describe('List.* 对非列表输入响亮失败(与 truffle 对齐)', () => {
23
+ const cases = [
24
+ ['List.length', 'List.length("x")', 'Int'],
25
+ ['List.isEmpty', 'List.isEmpty("x")', 'Bool'],
26
+ ['List.get', 'List.get("x", 0)', 'Int'],
27
+ ['List.contains', 'List.contains("x", 1)', 'Bool'],
28
+ ['List.append', 'List.length(List.append("x", 1))', 'Int'],
29
+ ];
30
+ for (const [name, expr, ret] of cases) {
31
+ it(`${name} 非列表输入必须报错,而不是静默给答案`, () => {
32
+ const r = run(expr, ret);
33
+ assert.equal(r.ok, false, `★${name} 静默返回了 ${JSON.stringify(r.value)}——静默错答案比报错危险`);
34
+ assert.match(r.error, /expected List/i);
35
+ });
36
+ }
37
+ // ★真实触发场景(本次的发现入口):Map.get 返回 Maybe 后,
38
+ // 忘记解包就传给 List.length,此前会把「命中的非空列表」报成空。
39
+ it('Map.get 结果未解包就传给 List.length → 报错(此前静默返回 0)', () => {
40
+ const r = run('List.length(Map.get(Map.put(Map.empty(),"k",List.range(1,4)), "k"))');
41
+ assert.equal(r.ok, false, '★Some([1,2,3]) 不是列表,必须报错而非返回 0');
42
+ });
43
+ // 反向保险:正常列表不得被误伤
44
+ it('正常列表照常工作', () => {
45
+ assert.equal(run('List.length(List.range(1,4))').value, 3);
46
+ assert.equal(run('List.isEmpty(List.empty())', 'Bool').value, true);
47
+ assert.equal(run('List.length(List.append(List.empty(), 1))').value, 1);
48
+ });
49
+ // 正确写法必须可用
50
+ it('withDefault 解包后正常', () => assert.equal(run('List.length(Maybe.withDefault(Map.get(Map.put(Map.empty(),"k",List.range(1,4)),"k"), List.empty()))').value, 3));
51
+ });
52
+ //# sourceMappingURL=list-builtins-fail-loud.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-builtins-fail-loud.test.js","sourceRoot":"","sources":["../../../test/unit/list-builtins-fail-loud.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,wCAAwC;AACxC,EAAE;AACF,6CAA6C;AAC7C,kCAAkC;AAClC,0CAA0C;AAC1C,EAAE;AACF,yDAAyD;AACzD,6CAA6C;AAC7C,+CAA+C;AAC/C,+BAA+B;AAC/B,SAAS,GAAG,CAAC,IAAY,EAAE,GAAG,GAAG,KAAK;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,iDAAiD,GAAG,eAAe,IAAI,KAAK,CAAC,CAAC;IAChG,IAAI,CAAC,CAAC,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC7E,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,MAAM,KAAK,GAAoC;QAC7C,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,CAAC;QAC1C,CAAC,cAAc,EAAE,mBAAmB,EAAE,MAAM,CAAC;QAC7C,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC;QACvC,CAAC,eAAe,EAAE,uBAAuB,EAAE,MAAM,CAAC;QAClD,CAAC,aAAa,EAAE,kCAAkC,EAAE,KAAK,CAAC;KAC3D,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QACtC,EAAE,CAAC,GAAG,IAAI,qBAAqB,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACnF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,0CAA0C;IAC1C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,GAAG,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,gCAAgC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,WAAW;IACX,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,qGAAqG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACvI,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=map-get-maybe.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-get-maybe.test.d.ts","sourceRoot":"","sources":["../../../test/unit/map-get-maybe.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { compile } from '../../src/browser.js';
4
+ import { evaluate } from '../../src/core/interpreter.js';
5
+ // Map.get 返回 Maybe(ADR 0035 档位 C)。
6
+ //
7
+ // ★这是对 Stable 集的**语义变更**,明知破坏 spec-1.0-freeze 的
8
+ // 「Stable 1.x 内语义不变」承诺,由用户拍板接受。
9
+ //
10
+ // 动机:此前 `Map.get(m,k) plus 1` 能**编译通过、运行才炸** ——
11
+ // 对合规决策引擎,「规则写出来、审批过了、上线后才在某条特定输入上炸」
12
+ // 是最该消灭的一类。返回 Maybe 让「键可能不存在」在代码里显式可见。
13
+ function run(body, ctx = { a: 1 }) {
14
+ const c = compile(`Module probe.\n${body}\n`);
15
+ if (!c.core)
16
+ return { ok: false, value: undefined, error: 'compile failed' };
17
+ const ev = evaluate(c.core, 'r', ctx);
18
+ return { ok: ev.success, value: ev.value, error: String(ev.error ?? '') };
19
+ }
20
+ describe('Map.get 返回 Maybe', () => {
21
+ it('命中 → Some(value)', () => {
22
+ const r = run('Rule r given a as Int, produce Int:\n Return Map.get(Map.put(Map.empty(),"k",7), "k").');
23
+ assert.equal(r.ok, true, r.error);
24
+ assert.deepEqual(r.value, { __type: 'Some', value: 7 });
25
+ });
26
+ // ★TS 侧 None 的运行期表示**就是 null**(evalExpr 的 case 'None' 返回 null),
27
+ // 故缺键返回 null 即等价于 None —— Maybe.isNone/withDefault 都已认它。
28
+ it('缺键 → None', () => {
29
+ const r = run('Rule r given a as Int, produce Bool:\n Return Maybe.isNone(Map.get(Map.empty(), "k")).');
30
+ assert.equal(r.ok, true, r.error);
31
+ assert.equal(r.value, true);
32
+ });
33
+ it('withDefault 命中取真值', () => assert.equal(run('Rule r given a as Int, produce Int:\n'
34
+ + ' Return Maybe.withDefault(Map.get(Map.put(Map.empty(),"k",7),"k"), 0).').value, 7));
35
+ it('withDefault 缺键取兜底', () => assert.equal(run('Rule r given a as Int, produce Int:\n'
36
+ + ' Return Maybe.withDefault(Map.get(Map.empty(),"k"), 99).').value, 99));
37
+ // ★本次修复的核心价值:裸算术不再静默给错答案,而是响亮失败。
38
+ it('命中值直接参与算术 → 报错(不再静默错算)', () => {
39
+ const r = run('Rule r given a as Int, produce Int:\n'
40
+ + ' Return Map.get(Map.put(Map.empty(),"k",7),"k") plus 1.');
41
+ assert.equal(r.ok, false, '★Some(7) 不是数字,直接相加必须失败而非静默给出错误答案');
42
+ });
43
+ // ★「键存在但值为 null」与「键不存在」是两件事,不能塌陷。
44
+ it('命中值为 null 时仍是 Some(与缺键区分)', () => {
45
+ const r = run('Rule r given a as Int, produce Bool:\n'
46
+ + ' Let m be Map.put(Map.empty(), "k", None).\n'
47
+ + ' Return Maybe.isSome(Map.get(m, "k")).');
48
+ assert.equal(r.ok, true, r.error);
49
+ assert.equal(r.value, true, '★键存在即 Some,哪怕值本身是 null');
50
+ });
51
+ });
52
+ //# sourceMappingURL=map-get-maybe.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-get-maybe.test.js","sourceRoot":"","sources":["../../../test/unit/map-get-maybe.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=map-type-guard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-type-guard.test.d.ts","sourceRoot":"","sources":["../../../test/unit/map-type-guard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,147 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { compile, evaluate, EN_US, initializeAllBundledLexicons } from '../../src/browser.js';
4
+ // Map.* 的首参类型守卫(aster-lang-ts#132)。
5
+ //
6
+ // `asGuestMap` 此前对**任意**值静默兜底成空 Map:`Map.size(42)`→0、
7
+ // `Map.get(42,"k")`→None、`Map.keys(42)`→[],全是**看起来完全合理**的值。
8
+ // 而 truffle 侧七个 Map.* 一律抛 `操作 Map.X 期望类型 Map`。
9
+ //
10
+ // ★危害高于 #128:`Map.get` 是策略规则读字段的主路径,
11
+ // `Maybe.withDefault(Map.get(applicant,"creditScore"), 0)` 在本引擎静默走兜底值
12
+ // 照常输出决策、在 JVM 上拒绝执行——同一条规则跨引擎决策翻转。
13
+ //
14
+ // ★核查方法(吸取 #128 的教训):不读源码下结论,而是把同一份 IR 分别喂给
15
+ // 两个引擎逐个实测。对标量 / 列表 / 普通对象误用,七个 Map.* 在 truffle 上全部抛错。
16
+ //
17
+ // ★但**不要说"无一例外"**——交叉审查实测出一类残留分叉(#134):
18
+ // `None` 首参在 truffle 上**不抛**(`Map.size(None)` 返回 1),因为 JVM 的 None 是
19
+ // `LinkedHashMap{_type:"None"}`,本身就是 java.util.Map,`_type` 被当成一个键数进去。
20
+ // 本引擎的 None 是裸 null,被守卫拒掉。方向仍是「TS 更严、JVM 更松」。
21
+ // 下面 `残留分叉` 那条用例锁住现状,防止它无声消失。
22
+ initializeAllBundledLexicons();
23
+ /** 编译 + 求值一个表达式(无参规则)。 */
24
+ function run(expr) {
25
+ const c = compile(`Module p.\n\nRule f produce Int:\n Return ${expr}.\n`, { lexicon: EN_US });
26
+ if (!c.success || !c.core)
27
+ return { ok: false, error: 'compile failed' };
28
+ const out = evaluate(c.core, 'f', {});
29
+ return out.success
30
+ ? { ok: true, value: out.value }
31
+ : { ok: false, error: out.error ?? '(无错误信息)' };
32
+ }
33
+ /** 用宿主入参调用 `Rule f given m`,验证真实 context 形态。 */
34
+ function runWithMap(m) {
35
+ const c = compile(`Module p.\n\nRule f given m, produce Int:\n Return Map.size(m).\n`, {
36
+ lexicon: EN_US,
37
+ });
38
+ assert.ok(c.success && c.core, 'compile 失败');
39
+ const out = evaluate(c.core, 'f', { m });
40
+ return out.success
41
+ ? { ok: true, value: out.value }
42
+ : { ok: false, error: out.error ?? '(无错误信息)' };
43
+ }
44
+ const MAP_OPS = [
45
+ ['Map.get', 'Maybe.withDefault(Map.get(42, "k"), 0)'],
46
+ ['Map.size', 'Map.size(42)'],
47
+ ['Map.put', 'Map.size(Map.put(42, "k", 1))'],
48
+ ['Map.remove', 'Map.size(Map.remove(42, "k"))'],
49
+ ['Map.keys', 'List.length(Map.keys(42))'],
50
+ ['Map.values', 'List.length(Map.values(42))'],
51
+ ];
52
+ describe('Map.* 首参类型守卫', () => {
53
+ for (const [op, expr] of MAP_OPS) {
54
+ it(`${op} 对非 Map 首参报错,而非静默兜底成空 Map`, () => {
55
+ const r = run(expr);
56
+ assert.equal(r.ok, false, `应当失败,实际静默返回 ${JSON.stringify(r.value)}`);
57
+ assert.equal(r.error, `${op}: expected Map, got number`);
58
+ });
59
+ }
60
+ // Map.contains 返回 Bool,单独用 If 取值。
61
+ it('Map.contains 对非 Map 首参报错', () => {
62
+ const c = compile('Module p.\n\nRule f produce Int:\n If Map.contains(42, "k"):\n Return 1.\n Return 0.\n', { lexicon: EN_US });
63
+ assert.ok(c.success && c.core, 'compile 失败');
64
+ const out = evaluate(c.core, 'f', {});
65
+ assert.equal(out.success, false);
66
+ assert.equal(out.error, 'Map.contains: expected Map, got number');
67
+ });
68
+ it('文本 / null / 数组等其它类型同样被拒', () => {
69
+ assert.equal(run('Map.size("abc")').error, 'Map.size: expected Map, got string');
70
+ assert.equal(run('Map.size(None)').error, 'Map.size: expected Map, got object');
71
+ // 数组不是 Map:truffle 侧 java.util.List 既非 AsterMapValue 也非 Map,同样抛错。
72
+ // 此前 `Map.size(List.range(0,2))` 会返回 2——把列表当成 Map 用。
73
+ assert.equal(run('Map.size(List.range(0, 2))').error, 'Map.size: expected Map, got List');
74
+ });
75
+ // ★放行范围:宿主 context 里的 map 就是普通对象 / JS Map 两种形态,
76
+ // 加守卫**不能**误伤它们,否则所有真实调用都会炸。
77
+ it('宿主传入的普通对象与 JS Map 仍然可用', () => {
78
+ assert.deepEqual(runWithMap({ a: 1, b: 2 }), { ok: true, value: 2 });
79
+ assert.deepEqual(runWithMap(new Map([['a', 1]])), { ok: true, value: 1 });
80
+ assert.deepEqual(runWithMap({}), { ok: true, value: 0 });
81
+ });
82
+ it('引擎内部产生的 Map 全链路正常', () => {
83
+ assert.deepEqual(run('Map.size(Map.empty())'), { ok: true, value: 0 });
84
+ assert.deepEqual(run('Map.size(Map.put(Map.empty(), "a", 1))'), { ok: true, value: 1 });
85
+ assert.deepEqual(run('Maybe.withDefault(Map.get(Map.put(Map.empty(), "a", 7), "a"), 0)'), { ok: true, value: 7 });
86
+ });
87
+ // ★Maybe/Result 变体不是 Map(#134 已在两引擎同步收紧)。
88
+ // 这些变体的运行期表示本身就是"带 _type 的对象/Map",不拦就会被当成普通 Map
89
+ // 数键——`Map.size(Some(1))`→2、`Map.size(None)`→1(JVM),全是静默错答案。
90
+ //
91
+ // 二维矩阵实测(6 个 Map.* × 6 种输入 = 36 格):修复前 None 那 6 格两引擎分叉、
92
+ // Some/Ok/Err 那 18 格两引擎"一致地错";修复后 36 格逐格一致。
93
+ it('Maybe/Result 变体被 Map.* 拒绝(Some/None/Ok/Err)', () => {
94
+ // 注:`None` 在本引擎的运行期表示是裸 `null`(不是带 __type 的对象),
95
+ // 故它被更前面的 null 分支拦下、报 `got object` 而非 `got None`。
96
+ // 两条路径都拒绝,只是消息里的类型名不同——这里如实断言各自的实际消息。
97
+ for (const [arg, want] of [
98
+ ['Some(1)', 'Some'],
99
+ ['Ok(1)', 'Ok'],
100
+ ['Err(1)', 'Err'],
101
+ ['None', 'object'],
102
+ ]) {
103
+ const r = run(`Map.size(${arg})`);
104
+ assert.equal(r.ok, false, `${arg} 应被拒绝,实际返回 ${JSON.stringify(r.value)}`);
105
+ assert.equal(r.error, `Map.size: expected Map, got ${want}`);
106
+ }
107
+ });
108
+ // ★宿主可能传进一个 `new Map([['_type','Some'],...])`——标签存在**条目**里、
109
+ // 不是属性。只用 `v.__type` 读会读不到而放行(实测修复前 Map.size 返回 2)。
110
+ // truffle 侧用 `m.get("_type")`(映射查找)天然覆盖,本引擎必须同时查两处才不分叉。
111
+ it('JS Map 把变体标签放在条目里同样被拒绝', () => {
112
+ const c = compile('Module p.\n\nRule f given m, produce Int:\n Return Map.size(m).\n', {
113
+ lexicon: EN_US,
114
+ });
115
+ assert.ok(c.success && c.core, 'compile 失败');
116
+ for (const tag of ['_type', '__type']) {
117
+ const out = evaluate(c.core, 'f', {
118
+ m: new Map([[tag, 'Some'], ['value', 1]]),
119
+ });
120
+ assert.equal(out.success, false, `Map 条目里的 ${tag} 应被拒,实际 ${JSON.stringify(out.value)}`);
121
+ assert.equal(out.error, 'Map.size: expected Map, got Some');
122
+ }
123
+ // 正常 JS Map 不受影响
124
+ const ok = evaluate(c.core, 'f', { m: new Map([['a', 1]]) });
125
+ assert.deepEqual({ ok: ok.success, value: ok.value }, { ok: true, value: 1 });
126
+ });
127
+ // 跨引擎 payload 可能带 JVM 形的单下划线 `_type`,同样要拦。
128
+ it('JVM 形 _type 变体同样被拒绝', () => {
129
+ const c = compile('Module p.\n\nRule f given m, produce Int:\n Return Map.size(m).\n', {
130
+ lexicon: EN_US,
131
+ });
132
+ assert.ok(c.success && c.core, 'compile 失败');
133
+ const out = evaluate(c.core, 'f', { m: { _type: 'None' } });
134
+ assert.equal(out.success, false);
135
+ assert.equal(out.error, 'Map.size: expected Map, got None');
136
+ });
137
+ // List.groupBy 内部构造 GuestMap,其结果会喂给 Map.size/keys/values。
138
+ // 守卫若把内部形态也拒了,这条链会整个断掉。
139
+ it('List.groupBy 产出的 Map 可被 Map.* 消费', () => {
140
+ const c = compile('Module p.\n\nRule keyf given x as Int, produce Int:\n Return x modulo 2.\n\n' +
141
+ 'Rule f produce Int:\n Return Map.size(List.groupBy(List.range(0, 6), keyf)).\n', { lexicon: EN_US });
142
+ assert.ok(c.success && c.core, 'compile 失败');
143
+ const out = evaluate(c.core, 'f', {});
144
+ assert.deepEqual({ ok: out.success, value: out.value }, { ok: true, value: 2 });
145
+ });
146
+ });
147
+ //# sourceMappingURL=map-type-guard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-type-guard.test.js","sourceRoot":"","sources":["../../../test/unit/map-type-guard.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=maybe-isnone-semantics.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-isnone-semantics.test.d.ts","sourceRoot":"","sources":["../../../test/unit/maybe-isnone-semantics.test.ts"],"names":[],"mappings":""}