@aster-cloud/aster-lang-ts 1.0.26 → 1.0.28

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 (44) 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 +277 -18
  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/map-type-guard.test.d.ts +2 -0
  33. package/dist/test/unit/map-type-guard.test.d.ts.map +1 -0
  34. package/dist/test/unit/map-type-guard.test.js +147 -0
  35. package/dist/test/unit/map-type-guard.test.js.map +1 -0
  36. package/dist/test/unit/maybe-isnone-semantics.test.d.ts +2 -0
  37. package/dist/test/unit/maybe-isnone-semantics.test.d.ts.map +1 -0
  38. package/dist/test/unit/maybe-isnone-semantics.test.js +74 -0
  39. package/dist/test/unit/maybe-isnone-semantics.test.js.map +1 -0
  40. package/dist/test/unit/maybe-map-type-guard.test.d.ts +2 -0
  41. package/dist/test/unit/maybe-map-type-guard.test.d.ts.map +1 -0
  42. package/dist/test/unit/maybe-map-type-guard.test.js +88 -0
  43. package/dist/test/unit/maybe-map-type-guard.test.js.map +1 -0
  44. 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=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":""}
@@ -0,0 +1,74 @@
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
+ // Maybe.isNone / Option.isNone 的语义:「**是** None」而非「不是 Some」(#131)。
5
+ //
6
+ // 旧写法 `?.__type !== 'Some'` 会把任意非 Maybe 输入也判成 None:
7
+ // Maybe.isNone(42) → true,而 JVM 侧(`"None".equals(m.get("_type"))`)→ false
8
+ //
9
+ // ★核查方法:36 格矩阵(6 个谓词 × 6 种输入)两引擎逐格实跑对比。
10
+ // 结果:仅 isNone / Option.isNone 的 Ok/Err/Int/Text 四格分叉(共 8 格),
11
+ // isSome / Result.isOk / Result.isErr 全部对齐。
12
+ // JVM 那侧是对的——isNone 不该对 `Ok(1)`、`42` 返回 true。
13
+ //
14
+ // ★为什么 isSome 没有同类问题:它写的是 `=== 'Some'`(正向判定),
15
+ // 天然对非 Maybe 返回 false。是 isNone 用了取反才引入这个洞——
16
+ // 这也是我在 #128 的核查表里把 isSome/isNone 合并成一行、从而漏判的根源。
17
+ initializeAllBundledLexicons();
18
+ /** 用 If 取布尔谓词的结果:真→1、假→0。 */
19
+ function predicate(expr) {
20
+ const c = compile(`Module p.\n\nRule f produce Int:\n If ${expr}:\n Return 1.\n Return 0.\n`, { lexicon: EN_US });
21
+ assert.ok(c.success && c.core, `compile 失败: ${JSON.stringify(c.parseErrors ?? [])}`);
22
+ const out = evaluate(c.core, 'f', {});
23
+ assert.ok(out.success, 'evaluate 失败');
24
+ return out.value;
25
+ }
26
+ describe('Maybe.isNone 语义:是 None,而非"不是 Some"', () => {
27
+ for (const fn of ['Maybe.isNone', 'Option.isNone']) {
28
+ it(`${fn} 对非 Maybe 输入返回 false(与 JVM 一致)`, () => {
29
+ // 这四格是修复前与 JVM 分叉的位置:旧实现全部返回 true。
30
+ for (const arg of ['Ok(1)', 'Err(1)', '42', '"a"']) {
31
+ assert.equal(predicate(`${fn}(${arg})`), 0, `${fn}(${arg}) 应为 false`);
32
+ }
33
+ });
34
+ it(`${fn} 对 None 返回 true、对 Some 返回 false`, () => {
35
+ assert.equal(predicate(`${fn}(None)`), 1);
36
+ assert.equal(predicate(`${fn}(Some(1))`), 0);
37
+ });
38
+ }
39
+ // ★两种 None 表示都要认:`None` 字面量是裸 null,Maybe.map 等返回 {__type:'None'}。
40
+ // 只认后者会让 `Maybe.isNone(None)` 变 false——这是修复时最容易踩的坑。
41
+ it('None 的两种运行期表示都判为 true', () => {
42
+ assert.equal(predicate('Maybe.isNone(None)'), 1, '裸 null 形');
43
+ // Maybe.map(None, f) 返回 {__type:'None'}
44
+ assert.equal(predicate('Maybe.isNone(Maybe.map(None, Maybe.unwrap))'), 1, '带标签形');
45
+ });
46
+ it('与 Map.get 的组合(ADR 0035 起 Map.get 返回 Maybe)', () => {
47
+ const missing = compile('Module p.\n\nRule f produce Int:\n Let m be Map.empty().\n' +
48
+ ' If Maybe.isNone(Map.get(m, "k")):\n Return 1.\n Return 0.\n', { lexicon: EN_US });
49
+ assert.ok(missing.success && missing.core);
50
+ assert.equal(evaluate(missing.core, 'f', {}).value, 1, '缺键应为 None');
51
+ const hit = compile('Module p.\n\nRule f produce Int:\n Let m be Map.put(Map.empty(), "k", 5).\n' +
52
+ ' If Maybe.isNone(Map.get(m, "k")):\n Return 1.\n Return 0.\n', { lexicon: EN_US });
53
+ assert.ok(hit.success && hit.core);
54
+ assert.equal(evaluate(hit.core, 'f', {}).value, 0, '命中不应为 None');
55
+ });
56
+ // isSome 是正向判定(`=== 'Some'`),本就没有这个洞;锁住它以防有人"顺手对称化"
57
+ // 而把 isSome 也改成取反、反向引入同一个缺陷。
58
+ it('isSome 保持正向判定:对非 Maybe 返回 false', () => {
59
+ for (const arg of ['Ok(1)', 'Err(1)', '42', '"a"', 'None']) {
60
+ assert.equal(predicate(`Maybe.isSome(${arg})`), 0, `Maybe.isSome(${arg}) 应为 false`);
61
+ }
62
+ assert.equal(predicate('Maybe.isSome(Some(1))'), 1);
63
+ });
64
+ // Result 侧两个谓词矩阵实测已对齐,锁住现状防回退。
65
+ it('Result.isOk / isErr 对非 Result 输入返回 false', () => {
66
+ for (const arg of ['None', 'Some(1)', '42', '"a"']) {
67
+ assert.equal(predicate(`Result.isOk(${arg})`), 0, `Result.isOk(${arg})`);
68
+ assert.equal(predicate(`Result.isErr(${arg})`), 0, `Result.isErr(${arg})`);
69
+ }
70
+ assert.equal(predicate('Result.isOk(Ok(1))'), 1);
71
+ assert.equal(predicate('Result.isErr(Err(1))'), 1);
72
+ });
73
+ });
74
+ //# sourceMappingURL=maybe-isnone-semantics.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-isnone-semantics.test.js","sourceRoot":"","sources":["../../../test/unit/maybe-isnone-semantics.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=maybe-map-type-guard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-map-type-guard.test.d.ts","sourceRoot":"","sources":["../../../test/unit/maybe-map-type-guard.test.ts"],"names":[],"mappings":""}