aontu 0.51.0 → 0.52.0
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/bin/aontu-lsp.js +6 -0
- package/bin/aontu.js +7 -0
- package/dist/aontu.d.ts +1 -1
- package/dist/aontu.js +4 -7
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +10 -46
- package/dist/cli.js.map +1 -1
- package/dist/ctx.js +1 -1
- package/dist/ctx.js.map +1 -1
- package/dist/err.js +3 -2
- package/dist/err.js.map +1 -1
- package/dist/exactjson.js +1 -1
- package/dist/exactjson.js.map +1 -1
- package/dist/hints.d.ts +3 -1
- package/dist/hints.js +126 -1
- package/dist/hints.js.map +1 -1
- package/dist/keyorder.js +1 -1
- package/dist/keyorder.js.map +1 -1
- package/dist/lang.js +64 -27
- package/dist/lang.js.map +1 -1
- package/dist/lsp-server.d.ts +2 -2
- package/dist/lsp-server.js +10 -10
- package/dist/lsp-server.js.map +1 -1
- package/dist/lsp.js +27 -19
- package/dist/lsp.js.map +1 -1
- package/dist/site.js +1 -1
- package/dist/site.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/unify.js +48 -1
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +3 -8
- package/dist/utility.js.map +1 -1
- package/dist/val/BagVal.js +1 -1
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/BigDecimalVal.js +2 -2
- package/dist/val/BigDecimalVal.js.map +1 -1
- package/dist/val/BigIntegerVal.js +2 -2
- package/dist/val/BigIntegerVal.js.map +1 -1
- package/dist/val/BooleanVal.js +1 -1
- package/dist/val/BooleanVal.js.map +1 -1
- package/dist/val/CloseFuncVal.js +1 -1
- package/dist/val/CloseFuncVal.js.map +1 -1
- package/dist/val/ConjunctVal.js +1 -1
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/ConstraintVal.d.ts +56 -0
- package/dist/val/ConstraintVal.js +407 -0
- package/dist/val/ConstraintVal.js.map +1 -0
- package/dist/val/CopyFuncVal.js +1 -1
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/Decimal.js +1 -1
- package/dist/val/Decimal.js.map +1 -1
- package/dist/val/DisjunctVal.js +1 -29
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +1 -1
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FeatureVal.js +1 -1
- package/dist/val/FeatureVal.js.map +1 -1
- package/dist/val/FuncBaseVal.js +1 -1
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/HideFuncVal.js +1 -1
- package/dist/val/HideFuncVal.js.map +1 -1
- package/dist/val/IntegerVal.js +2 -2
- package/dist/val/IntegerVal.js.map +1 -1
- package/dist/val/JunctionVal.js +1 -1
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +1 -1
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.js +7 -7
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js +1 -1
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +11 -9
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MoveFuncVal.js +1 -1
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.d.ts +1 -0
- package/dist/val/NilVal.js +10 -3
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/NullVal.js +1 -1
- package/dist/val/NullVal.js.map +1 -1
- package/dist/val/NumberVal.js +2 -2
- package/dist/val/NumberVal.js.map +1 -1
- package/dist/val/OpBaseVal.js +10 -8
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/OpenFuncVal.js +1 -1
- package/dist/val/OpenFuncVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +1 -1
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PlusOpVal.js +1 -1
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefFuncVal.js +1 -1
- package/dist/val/PrefFuncVal.js.map +1 -1
- package/dist/val/PrefVal.js +4 -3
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RefVal.d.ts +2 -0
- package/dist/val/RefVal.js +78 -9
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ScalarKindVal.js +8 -2
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/ScalarVal.js +2 -2
- package/dist/val/ScalarVal.js.map +1 -1
- package/dist/val/StringVal.js +1 -1
- package/dist/val/StringVal.js.map +1 -1
- package/dist/val/SuperFuncVal.js +1 -1
- package/dist/val/SuperFuncVal.js.map +1 -1
- package/dist/val/TopVal.js +1 -1
- package/dist/val/TopVal.js.map +1 -1
- package/dist/val/TypeFuncVal.js +1 -1
- package/dist/val/TypeFuncVal.js.map +1 -1
- package/dist/val/UpperFuncVal.js +1 -1
- package/dist/val/UpperFuncVal.js.map +1 -1
- package/dist/val/Val.d.ts +1 -1
- package/dist/val/Val.js +11 -21
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +1 -1
- package/dist/val/VarVal.js.map +1 -1
- package/dist/val/numcmp.d.ts +14 -0
- package/dist/val/numcmp.js +134 -0
- package/dist/val/numcmp.js.map +1 -0
- package/dist/val/numkind.js +1 -1
- package/dist/val/numkind.js.map +1 -1
- package/package.json +6 -4
- package/src/aontu.ts +4 -8
- package/src/cli.ts +12 -13
- package/src/ctx.ts +1 -1
- package/src/err.ts +3 -2
- package/src/exactjson.ts +1 -1
- package/src/hints.ts +140 -0
- package/src/keyorder.ts +1 -1
- package/src/lang.ts +75 -27
- package/src/lsp-server.ts +17 -15
- package/src/lsp.ts +27 -12
- package/src/site.ts +1 -1
- package/src/type.ts +1 -1
- package/src/unify.ts +52 -1
- package/src/utility.ts +3 -9
- package/src/val/BagVal.ts +1 -1
- package/src/val/BigDecimalVal.ts +2 -2
- package/src/val/BigIntegerVal.ts +2 -2
- package/src/val/BooleanVal.ts +1 -1
- package/src/val/CloseFuncVal.ts +1 -1
- package/src/val/ConjunctVal.ts +1 -1
- package/src/val/ConstraintVal.ts +561 -0
- package/src/val/CopyFuncVal.ts +1 -1
- package/src/val/Decimal.ts +1 -1
- package/src/val/DisjunctVal.ts +1 -37
- package/src/val/ExpectVal.ts +1 -1
- package/src/val/FeatureVal.ts +1 -1
- package/src/val/FuncBaseVal.ts +1 -1
- package/src/val/HideFuncVal.ts +1 -1
- package/src/val/IntegerVal.ts +2 -2
- package/src/val/JunctionVal.ts +1 -1
- package/src/val/KeyFuncVal.ts +1 -1
- package/src/val/ListVal.ts +3 -5
- package/src/val/LowerFuncVal.ts +1 -1
- package/src/val/MapVal.ts +7 -5
- package/src/val/MoveFuncVal.ts +1 -1
- package/src/val/NilVal.ts +13 -3
- package/src/val/NullVal.ts +1 -1
- package/src/val/NumberVal.ts +2 -2
- package/src/val/OpBaseVal.ts +10 -10
- package/src/val/OpenFuncVal.ts +1 -1
- package/src/val/PathFuncVal.ts +1 -1
- package/src/val/PlusOpVal.ts +1 -1
- package/src/val/PrefFuncVal.ts +1 -1
- package/src/val/PrefVal.ts +4 -3
- package/src/val/RefVal.ts +82 -9
- package/src/val/ScalarKindVal.ts +8 -2
- package/src/val/ScalarVal.ts +2 -2
- package/src/val/StringVal.ts +1 -1
- package/src/val/SuperFuncVal.ts +1 -1
- package/src/val/TopVal.ts +1 -1
- package/src/val/TypeFuncVal.ts +1 -1
- package/src/val/UpperFuncVal.ts +1 -1
- package/src/val/Val.ts +13 -8
- package/src/val/VarVal.ts +1 -1
- package/src/val/numcmp.ts +189 -0
- package/src/val/numkind.ts +1 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.scaledOfFloat = scaledOfFloat;
|
|
5
|
+
exports.scaledOfNumeric = scaledOfNumeric;
|
|
6
|
+
exports.cmpScaled = cmpScaled;
|
|
7
|
+
exports.cmpNumeric = cmpNumeric;
|
|
8
|
+
exports.cmpCodePoints = cmpCodePoints;
|
|
9
|
+
exports.towerRank = towerRank;
|
|
10
|
+
exports.scaledIsIntegral = scaledIsIntegral;
|
|
11
|
+
exports.scaledFloor = scaledFloor;
|
|
12
|
+
const F64 = new DataView(new ArrayBuffer(8));
|
|
13
|
+
// The exact scaled-decimal value of a finite or infinite binary64.
|
|
14
|
+
function scaledOfFloat(f) {
|
|
15
|
+
if (Number.isInteger(f) && Math.abs(f) <= Number.MAX_SAFE_INTEGER) {
|
|
16
|
+
return { unscaled: BigInt(f), scale: 0 };
|
|
17
|
+
}
|
|
18
|
+
if (Infinity === f) {
|
|
19
|
+
return { inf: 1, unscaled: 0n, scale: 0 };
|
|
20
|
+
}
|
|
21
|
+
if (-Infinity === f) {
|
|
22
|
+
return { inf: -1, unscaled: 0n, scale: 0 };
|
|
23
|
+
}
|
|
24
|
+
F64.setFloat64(0, f);
|
|
25
|
+
const hi = BigInt(F64.getUint32(0));
|
|
26
|
+
const lo = BigInt(F64.getUint32(4));
|
|
27
|
+
const bits = (hi << 32n) | lo;
|
|
28
|
+
const sign = (bits >> 63n) & 1n ? -1n : 1n;
|
|
29
|
+
const expBits = Number((bits >> 52n) & 0x7ffn);
|
|
30
|
+
const frac = bits & 0xfffffffffffffn;
|
|
31
|
+
// Normal: implicit leading bit, exponent bias 1023 plus the 52
|
|
32
|
+
// fraction bits. Subnormal: no implicit bit, fixed exponent -1074.
|
|
33
|
+
let mant;
|
|
34
|
+
let exp;
|
|
35
|
+
if (0 === expBits) {
|
|
36
|
+
mant = frac;
|
|
37
|
+
exp = -1074;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
mant = frac | (1n << 52n);
|
|
41
|
+
exp = expBits - 1075;
|
|
42
|
+
}
|
|
43
|
+
if (0 <= exp) {
|
|
44
|
+
return { unscaled: sign * (mant << BigInt(exp)), scale: 0 };
|
|
45
|
+
}
|
|
46
|
+
// mant * 2^-k == mant * 5^k / 10^k, exactly.
|
|
47
|
+
return { unscaled: sign * mant * 5n ** BigInt(-exp), scale: -exp };
|
|
48
|
+
}
|
|
49
|
+
// The exact scaled-decimal value of any numeric leaf Val.
|
|
50
|
+
function scaledOfNumeric(v) {
|
|
51
|
+
if (v.isBigInteger) {
|
|
52
|
+
return { unscaled: v.peg, scale: 0 };
|
|
53
|
+
}
|
|
54
|
+
if (v.isBigDecimal) {
|
|
55
|
+
const d = v.peg;
|
|
56
|
+
return { unscaled: d.unscaled, scale: d.scale };
|
|
57
|
+
}
|
|
58
|
+
// integer and float leaves both hold a binary64.
|
|
59
|
+
return scaledOfFloat(v.peg);
|
|
60
|
+
}
|
|
61
|
+
function pow10(n) {
|
|
62
|
+
return 10n ** BigInt(n);
|
|
63
|
+
}
|
|
64
|
+
// Exact three-way comparison of two scaled decimals.
|
|
65
|
+
function cmpScaled(a, b) {
|
|
66
|
+
const ai = a.inf ?? 0;
|
|
67
|
+
const bi = b.inf ?? 0;
|
|
68
|
+
if (0 !== ai || 0 !== bi) {
|
|
69
|
+
return ai < bi ? -1 : ai > bi ? 1 : 0;
|
|
70
|
+
}
|
|
71
|
+
let au = a.unscaled;
|
|
72
|
+
let bu = b.unscaled;
|
|
73
|
+
if (a.scale < b.scale) {
|
|
74
|
+
au *= pow10(b.scale - a.scale);
|
|
75
|
+
}
|
|
76
|
+
else if (b.scale < a.scale) {
|
|
77
|
+
bu *= pow10(a.scale - b.scale);
|
|
78
|
+
}
|
|
79
|
+
return au < bu ? -1 : au > bu ? 1 : 0;
|
|
80
|
+
}
|
|
81
|
+
// Exact three-way comparison of two numeric leaf Vals, any leaves.
|
|
82
|
+
function cmpNumeric(a, b) {
|
|
83
|
+
return cmpScaled(scaledOfNumeric(a), scaledOfNumeric(b));
|
|
84
|
+
}
|
|
85
|
+
// Lexical comparison by Unicode CODE POINTS — not UTF-16 code units,
|
|
86
|
+
// which order astral-plane text differently. Go compares strings
|
|
87
|
+
// byte-wise in UTF-8, which IS code-point order, so this is the side
|
|
88
|
+
// that must adapt (a Phase 0 decision, docs/reference-language.md).
|
|
89
|
+
function cmpCodePoints(a, b) {
|
|
90
|
+
let ai = 0;
|
|
91
|
+
let bi = 0;
|
|
92
|
+
while (ai < a.length && bi < b.length) {
|
|
93
|
+
const ac = a.codePointAt(ai);
|
|
94
|
+
const bc = b.codePointAt(bi);
|
|
95
|
+
if (ac !== bc) {
|
|
96
|
+
return ac < bc ? -1 : 1;
|
|
97
|
+
}
|
|
98
|
+
ai += ac > 0xffff ? 2 : 1;
|
|
99
|
+
bi += bc > 0xffff ? 2 : 1;
|
|
100
|
+
}
|
|
101
|
+
const ar = a.length - ai;
|
|
102
|
+
const br = b.length - bi;
|
|
103
|
+
return ar < br ? -1 : ar > br ? 1 : 0;
|
|
104
|
+
}
|
|
105
|
+
// The tower order integer < float < biginteger < bigdecimal, used when
|
|
106
|
+
// two endpoints at the SAME point meet: the survivor is the
|
|
107
|
+
// tower-lowest spelling (docs/reference-language.md, bounds ruling 2).
|
|
108
|
+
function towerRank(v) {
|
|
109
|
+
return v.isBigDecimal ? 3 : v.isBigInteger ? 2 :
|
|
110
|
+
v.isInteger ? 0 : 1;
|
|
111
|
+
}
|
|
112
|
+
// True when the scaled value is integral (an exact whole number).
|
|
113
|
+
function scaledIsIntegral(s) {
|
|
114
|
+
if (s.inf) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (0 === s.scale) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
const p = pow10(s.scale);
|
|
121
|
+
return 0n === s.unscaled % p;
|
|
122
|
+
}
|
|
123
|
+
// The exact floor of a scaled value, as a bigint. Infinite inputs are
|
|
124
|
+
// the caller's job to exclude.
|
|
125
|
+
function scaledFloor(s) {
|
|
126
|
+
if (0 === s.scale) {
|
|
127
|
+
return s.unscaled;
|
|
128
|
+
}
|
|
129
|
+
const p = pow10(s.scale);
|
|
130
|
+
const q = s.unscaled / p;
|
|
131
|
+
// BigInt division truncates toward zero; floor rounds down.
|
|
132
|
+
return (s.unscaled < 0n && 0n !== s.unscaled % p) ? q - 1n : q;
|
|
133
|
+
} /* node:coverage ignore next 14 */
|
|
134
|
+
//# sourceMappingURL=numcmp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numcmp.js","sourceRoot":"","sources":["../../src/val/numcmp.ts"],"names":[],"mappings":"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"}
|
package/dist/val/numkind.js
CHANGED
package/dist/val/numkind.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numkind.js","sourceRoot":"","sources":["../../src/val/numkind.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"numkind.js","sourceRoot":"","sources":["../../src/val/numkind.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aontu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.0",
|
|
4
4
|
"main": "dist/aontu.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/aontu.d.ts",
|
|
7
7
|
"bin": {
|
|
8
|
-
"aontu": "
|
|
9
|
-
"aontu-lsp": "
|
|
8
|
+
"aontu": "bin/aontu.js",
|
|
9
|
+
"aontu-lsp": "bin/aontu-lsp.js"
|
|
10
10
|
},
|
|
11
11
|
"description": "Unifier.",
|
|
12
12
|
"homepage": "https://github.com/rjrodger/aontu",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"test": "node --enable-source-maps --test \"dist-test/**/*.test.js\"",
|
|
23
|
-
"test-cov": "node --enable-source-maps --experimental-test-coverage --test \"dist-test/**/*.test.js\"",
|
|
23
|
+
"test-cov": "node --enable-source-maps --experimental-test-coverage --test-coverage-exclude=\"dist-test/**\" --test-coverage-exclude=\"test/**\" --test-coverage-exclude=\"bin/**\" --test \"dist-test/**/*.test.js\"",
|
|
24
|
+
"test-cov-check": "node test/covrun.js",
|
|
24
25
|
"test-some": "node --enable-source-maps --test-name-pattern=\"$TEST_PATTERN\" --test \"dist-test/**/*.test.js\"",
|
|
25
26
|
"watch": "tsc --build src test -w",
|
|
26
27
|
"build": "tsc --build src test",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"node": ">=24"
|
|
43
44
|
},
|
|
44
45
|
"files": [
|
|
46
|
+
"bin",
|
|
45
47
|
"src",
|
|
46
48
|
"dist",
|
|
47
49
|
"LICENSE"
|
package/src/aontu.ts
CHANGED
|
@@ -22,7 +22,7 @@ import { makeNilErr, descErr, AontuError } from './err'
|
|
|
22
22
|
// Kept in step with package.json by the `version` npm lifecycle script,
|
|
23
23
|
// which runs on `npm version` / `npm run repo-bump`. version.test.ts
|
|
24
24
|
// fails if the two ever drift.
|
|
25
|
-
const VERSION = '0.
|
|
25
|
+
const VERSION = '0.52.0'
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class Aontu {
|
|
@@ -108,15 +108,11 @@ class Aontu {
|
|
|
108
108
|
let uni = new Unify(pval, this.lang, ac, src)
|
|
109
109
|
errs = uni.err
|
|
110
110
|
|
|
111
|
+
// Never nullish: Unify.res starts as the root Val, unite() returns a
|
|
112
|
+
// Val on every arm, and its catch-all turns a throwing node into an
|
|
113
|
+
// 'internal' NilVal.
|
|
111
114
|
out = uni.res
|
|
112
115
|
|
|
113
|
-
if (null == out) {
|
|
114
|
-
out = makeNilErr(ac, 'unify_no_res')
|
|
115
|
-
if (0 === errs.length) {
|
|
116
|
-
errs = [out]
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
116
|
out.deps = pval.deps
|
|
121
117
|
out.err = errs
|
|
122
118
|
ac.root = out
|
package/src/cli.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
2
|
|
|
4
3
|
// Command-line interface for Aontu.
|
|
@@ -9,9 +8,11 @@
|
|
|
9
8
|
// With no file on an interactive terminal, a REPL is started. With no
|
|
10
9
|
// file and piped input, the source is read from stdin. See HELP below.
|
|
11
10
|
|
|
12
|
-
import * as
|
|
13
|
-
|
|
14
|
-
import
|
|
11
|
+
// Named imports, not `import * as`: the namespace form makes tsc emit the
|
|
12
|
+
// __importStar downlevel helper, whose branches no supported Node takes.
|
|
13
|
+
import { readFileSync } from 'node:fs'
|
|
14
|
+
import { join, resolve } from 'node:path'
|
|
15
|
+
import { createInterface } from 'node:readline'
|
|
15
16
|
|
|
16
17
|
import { Aontu, AontuError, exactJSON } from './aontu'
|
|
17
18
|
|
|
@@ -40,7 +41,7 @@ REPL commands:
|
|
|
40
41
|
|
|
41
42
|
function version(): string {
|
|
42
43
|
try {
|
|
43
|
-
const txt =
|
|
44
|
+
const txt = readFileSync(join(__dirname, '..', 'package.json'), 'utf8')
|
|
44
45
|
return JSON.parse(txt).version ?? '0.0.0'
|
|
45
46
|
}
|
|
46
47
|
catch {
|
|
@@ -80,14 +81,14 @@ function evalSource(
|
|
|
80
81
|
function runFile(file: string, mode: Mode): number {
|
|
81
82
|
let src: string
|
|
82
83
|
try {
|
|
83
|
-
src =
|
|
84
|
+
src = readFileSync(file, 'utf8')
|
|
84
85
|
}
|
|
85
86
|
catch (err: any) {
|
|
86
87
|
process.stderr.write(`aontu: cannot read ${file}: ${err.message}\n`)
|
|
87
88
|
return 1
|
|
88
89
|
}
|
|
89
90
|
|
|
90
|
-
const aontu = new Aontu({ path:
|
|
91
|
+
const aontu = new Aontu({ path: resolve(file) })
|
|
91
92
|
const res = evalSource(aontu, src, mode)
|
|
92
93
|
;(res.ok ? process.stdout : process.stderr).write(res.text + '\n')
|
|
93
94
|
return res.ok ? 0 : 1
|
|
@@ -111,7 +112,7 @@ function runStdin(mode: Mode): Promise<number> {
|
|
|
111
112
|
function runRepl(initialMode: Mode): void {
|
|
112
113
|
let mode = initialMode
|
|
113
114
|
const aontu = new Aontu()
|
|
114
|
-
const rl =
|
|
115
|
+
const rl = createInterface({
|
|
115
116
|
input: process.stdin,
|
|
116
117
|
output: process.stdout,
|
|
117
118
|
prompt: 'aontu> ',
|
|
@@ -209,13 +210,11 @@ function main(argv: string[]): void {
|
|
|
209
210
|
else {
|
|
210
211
|
runStdin(mode).then((code) => finish(code))
|
|
211
212
|
}
|
|
212
|
-
}
|
|
213
|
+
} /* node:coverage ignore next 8 */
|
|
213
214
|
|
|
214
215
|
|
|
215
|
-
//
|
|
216
|
-
|
|
217
|
-
main(process.argv)
|
|
218
|
-
}
|
|
216
|
+
// No require.main guard here: bin/aontu.js is the executable entry and
|
|
217
|
+
// calls main(process.argv) itself, so this module stays import-only.
|
|
219
218
|
|
|
220
219
|
|
|
221
220
|
export { evalSource, main }
|
package/src/ctx.ts
CHANGED
package/src/err.ts
CHANGED
|
@@ -66,7 +66,8 @@ function descErr<NILS extends NilVal | NilVal[]>(
|
|
|
66
66
|
|
|
67
67
|
let path = ['$', ...err.path].filter((p: any) => null != p && '' != p)
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
// '$' is neither null nor '', so the filter always leaves it.
|
|
70
|
+
let valpath = path.join('.')
|
|
70
71
|
let attempt = null != err.attempt ? err.attempt : (null == v2 ? 'resolve' : 'unify')
|
|
71
72
|
|
|
72
73
|
const details = err.details
|
|
@@ -200,7 +201,7 @@ class AontuError extends Error {
|
|
|
200
201
|
}
|
|
201
202
|
|
|
202
203
|
errs: () => NilVal[]
|
|
203
|
-
}
|
|
204
|
+
} /* node:coverage ignore next 9 */
|
|
204
205
|
|
|
205
206
|
|
|
206
207
|
export {
|
package/src/exactjson.ts
CHANGED
|
@@ -246,7 +246,7 @@ function emit(v: any, unit: string, pad: string, seen: Set<any>): string {
|
|
|
246
246
|
*/
|
|
247
247
|
function exactJSON(value: any, indent?: number | string): string {
|
|
248
248
|
return emit(value, indentUnit(indent), '', new Set())
|
|
249
|
-
}
|
|
249
|
+
} /* node:coverage ignore next 6 */
|
|
250
250
|
|
|
251
251
|
|
|
252
252
|
export {
|
package/src/hints.ts
CHANGED
|
@@ -61,6 +61,26 @@ const hints: Record<string, string> = {
|
|
|
61
61
|
|
|
62
62
|
unify_cycle: 'Circular reference detected during unification.',
|
|
63
63
|
|
|
64
|
+
constraint:
|
|
65
|
+
'This value does not satisfy the constraint. A constraint is the\n' +
|
|
66
|
+
'meet of bound atoms (min, max, above, below) and exclusions (neq)\n' +
|
|
67
|
+
'over one domain; the expected form shown is the normalised\n' +
|
|
68
|
+
'residual the value must satisfy.' +
|
|
69
|
+
'\n \nExamples:\n' +
|
|
70
|
+
' min(0) & 3 -> 3 # Admitted (3 >= 0);\n' +
|
|
71
|
+
' min(0) & 0d5 -> 0d5 # Bounds are leaf-agnostic;\n' +
|
|
72
|
+
' max(65535) & 99999 -> nil # Above the bound;\n' +
|
|
73
|
+
' min(5) & max(3) -> nil # Empty at composition time;\n' +
|
|
74
|
+
' integer & above(1) & below(2) -> nil # No integer in the gap;\n' +
|
|
75
|
+
' neq(1) & 1.0 -> 1.0 # neq excludes leaf AND value.',
|
|
76
|
+
|
|
77
|
+
budget_passes:
|
|
78
|
+
'The evaluation budget of {limit} fixpoint passes was spent before\n' +
|
|
79
|
+
'the model converged; still refining: {paths}.\n' +
|
|
80
|
+
'This is the evaluator giving up, not a contradiction in the model:\n' +
|
|
81
|
+
'raising the budget helps only a model that is still converging --\n' +
|
|
82
|
+
'a genuine cycle never converges at any budget.',
|
|
83
|
+
|
|
64
84
|
conjunct:
|
|
65
85
|
'This conjunction (& operator) could not be completed as some terms\n' +
|
|
66
86
|
'could not be resolved.',
|
|
@@ -201,6 +221,126 @@ const hints: Record<string, string> = {
|
|
|
201
221
|
}
|
|
202
222
|
|
|
203
223
|
|
|
224
|
+
// codeClasses assigns every error code a CLASS: conflict | incomplete |
|
|
225
|
+
// reference | parse | budget | internal. The contract lives in
|
|
226
|
+
// test/spec/errcodes.tsv (mode `errcode`): the spec suite executes one
|
|
227
|
+
// row per code against this table and asserts SET EQUALITY between the
|
|
228
|
+
// file and these keys, in both implementations (go/hints.go mirrors
|
|
229
|
+
// this map exactly). Codes are append-only and never renamed; a class
|
|
230
|
+
// change is a breaking change. Class rulings (why decimal_budget and
|
|
231
|
+
// lossy_integer_literal are conflict, not budget; why unknown_function
|
|
232
|
+
// is reference) are documented in the tsv header.
|
|
233
|
+
const codeClasses: Record<string, string> = {
|
|
234
|
+
// parse -- the source text is malformed or unusable
|
|
235
|
+
parse: 'parse',
|
|
236
|
+
syntax: 'parse',
|
|
237
|
+
parse_unknown: 'parse',
|
|
238
|
+
parse_bad_src: 'parse',
|
|
239
|
+
unify_no_src: 'parse',
|
|
240
|
+
incomplete_expression: 'parse',
|
|
241
|
+
not_number: 'parse',
|
|
242
|
+
negative: 'parse',
|
|
243
|
+
decimal_syntax: 'parse',
|
|
244
|
+
|
|
245
|
+
// conflict -- no common lower bound, or a value refused by a rule
|
|
246
|
+
// (constraint covers the whole algebra family: membership failure,
|
|
247
|
+
// empty meets at composition time, and domain/kind mixing.)
|
|
248
|
+
constraint: 'conflict',
|
|
249
|
+
scalar_value: 'conflict',
|
|
250
|
+
scalar_kind: 'conflict',
|
|
251
|
+
no_scalar_unify: 'conflict',
|
|
252
|
+
'scalar-type': 'conflict',
|
|
253
|
+
'not-scalar-type': 'conflict',
|
|
254
|
+
map: 'conflict',
|
|
255
|
+
list: 'conflict',
|
|
256
|
+
closed: 'conflict',
|
|
257
|
+
literal_nil: 'conflict',
|
|
258
|
+
nil_gen: 'conflict',
|
|
259
|
+
unite: 'conflict',
|
|
260
|
+
'|:empty': 'conflict',
|
|
261
|
+
'|:empty-dist': 'conflict',
|
|
262
|
+
exact_float_mix: 'conflict',
|
|
263
|
+
inexact_integer_sum: 'conflict',
|
|
264
|
+
decimal_budget: 'conflict',
|
|
265
|
+
lossy_integer_literal: 'conflict',
|
|
266
|
+
arg: 'conflict',
|
|
267
|
+
'invalid-arg': 'conflict',
|
|
268
|
+
no_first_arg: 'conflict',
|
|
269
|
+
key_level: 'conflict',
|
|
270
|
+
func: 'conflict',
|
|
271
|
+
'func:': 'conflict',
|
|
272
|
+
op: 'conflict',
|
|
273
|
+
'op:': 'conflict',
|
|
274
|
+
'op[': 'conflict',
|
|
275
|
+
make: 'conflict',
|
|
276
|
+
resolve: 'conflict',
|
|
277
|
+
operate: 'conflict',
|
|
278
|
+
close: 'conflict',
|
|
279
|
+
|
|
280
|
+
// incomplete -- residue: the truth requires more than was supplied
|
|
281
|
+
no_gen: 'incomplete',
|
|
282
|
+
conjunct: 'incomplete',
|
|
283
|
+
mapval_no_gen: 'incomplete',
|
|
284
|
+
mapval_required: 'incomplete',
|
|
285
|
+
mapval_spread_required: 'incomplete',
|
|
286
|
+
listval_no_gen: 'incomplete',
|
|
287
|
+
listval_required: 'incomplete',
|
|
288
|
+
listval_spread_required: 'incomplete',
|
|
289
|
+
required_listelem: 'incomplete',
|
|
290
|
+
|
|
291
|
+
// reference -- a name or path that does not resolve
|
|
292
|
+
no_path: 'reference',
|
|
293
|
+
// A PROVEN structural cycle is a defect of the model, not a spent
|
|
294
|
+
// evaluation bound: raising a budget never fixes it (G5's ruling --
|
|
295
|
+
// class budget means "retry with more may help", path_cycle means
|
|
296
|
+
// "fix the model").
|
|
297
|
+
path_cycle: 'reference',
|
|
298
|
+
ref: 'reference',
|
|
299
|
+
'ref[': 'reference',
|
|
300
|
+
var: 'reference',
|
|
301
|
+
'var[': 'reference',
|
|
302
|
+
unknown_var: 'reference',
|
|
303
|
+
invalid_var_kind: 'reference',
|
|
304
|
+
unknown_function: 'reference',
|
|
305
|
+
multisource_not_found: 'reference',
|
|
306
|
+
|
|
307
|
+
// budget -- an evaluation bound was exceeded
|
|
308
|
+
unify_cycle: 'budget',
|
|
309
|
+
max_depth: 'budget',
|
|
310
|
+
budget_passes: 'budget',
|
|
311
|
+
|
|
312
|
+
// internal -- the engine reached a state it should not reach
|
|
313
|
+
internal: 'internal',
|
|
314
|
+
unify_no_res: 'internal',
|
|
315
|
+
unknown_op: 'internal',
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
// Dynamic-prefix families: the engine appends a name or value to these
|
|
320
|
+
// (e.g. `func:upper`, `op:+`, `var[string]`, `ref[$.x]`, `op[+]`), so
|
|
321
|
+
// class lookup falls back to the registered prefix.
|
|
322
|
+
const CODE_PREFIXES = ['func:', 'op:', 'op[', 'var[', 'ref[']
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
// The class of an error code: an exact registry entry, else the
|
|
326
|
+
// registered dynamic prefix it extends, else `internal` -- an
|
|
327
|
+
// unregistered code is an engine defect, not a user error.
|
|
328
|
+
function codeClass(code: string): string {
|
|
329
|
+
const cls = codeClasses[code]
|
|
330
|
+
if (null != cls) {
|
|
331
|
+
return cls
|
|
332
|
+
}
|
|
333
|
+
for (const prefix of CODE_PREFIXES) {
|
|
334
|
+
if (code.startsWith(prefix)) {
|
|
335
|
+
return codeClasses[prefix]
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return 'internal'
|
|
339
|
+
} /* node:coverage ignore next 8 */
|
|
340
|
+
|
|
341
|
+
|
|
204
342
|
export {
|
|
205
343
|
hints,
|
|
344
|
+
codeClasses,
|
|
345
|
+
codeClass,
|
|
206
346
|
}
|