aontu 0.50.1 → 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 +4 -2
- package/dist/aontu.js +21 -8
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +43 -53
- 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.d.ts +37 -0
- package/dist/exactjson.js +228 -0
- package/dist/exactjson.js.map +1 -0
- package/dist/hints.d.ts +3 -1
- package/dist/hints.js +187 -5
- package/dist/hints.js.map +1 -1
- package/dist/keyorder.d.ts +9 -0
- package/dist/keyorder.js +65 -0
- package/dist/keyorder.js.map +1 -0
- package/dist/lang.js +263 -30
- 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 +39 -21
- 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 +9 -6
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/BigDecimalVal.d.ts +13 -0
- package/dist/val/BigDecimalVal.js +80 -0
- package/dist/val/BigDecimalVal.js.map +1 -0
- package/dist/val/BigIntegerVal.d.ts +11 -0
- package/dist/val/BigIntegerVal.js +75 -0
- package/dist/val/BigIntegerVal.js.map +1 -0
- 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.d.ts +32 -0
- package/dist/val/Decimal.js +318 -0
- package/dist/val/Decimal.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/val/IntegerVal.js +77 -5
- 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.d.ts +1 -1
- package/dist/val/KeyFuncVal.js +34 -4
- 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 +21 -4
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +17 -13
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MoveFuncVal.js +26 -9
- 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.d.ts +1 -0
- package/dist/val/NumberVal.js +25 -4
- 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 +10 -2
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PlusOpVal.d.ts +3 -1
- package/dist/val/PlusOpVal.js +140 -29
- 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.d.ts +2 -0
- package/dist/val/PrefVal.js +44 -7
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RefVal.d.ts +2 -0
- package/dist/val/RefVal.js +135 -11
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ScalarKindVal.d.ts +12 -2
- package/dist/val/ScalarKindVal.js +108 -13
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/ScalarVal.d.ts +1 -0
- package/dist/val/ScalarVal.js +18 -3
- 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.d.ts +1 -1
- package/dist/val/SuperFuncVal.js +15 -2
- 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 +21 -4
- 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 +8 -2
- 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.d.ts +6 -0
- package/dist/val/numkind.js +224 -0
- package/dist/val/numkind.js.map +1 -0
- package/dist/val/valutil.d.ts +1 -0
- package/dist/val/valutil.js +35 -0
- package/dist/val/valutil.js.map +1 -1
- package/package.json +7 -5
- package/src/aontu.ts +26 -9
- package/src/cli.ts +48 -21
- package/src/ctx.ts +1 -1
- package/src/err.ts +3 -2
- package/src/exactjson.ts +254 -0
- package/src/hints.ts +213 -4
- package/src/keyorder.ts +73 -0
- package/src/lang.ts +303 -31
- package/src/lsp-server.ts +17 -15
- package/src/lsp.ts +37 -14
- 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 +9 -6
- package/src/val/BigDecimalVal.ts +117 -0
- package/src/val/BigIntegerVal.ts +110 -0
- 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 +385 -0
- 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 +81 -5
- package/src/val/JunctionVal.ts +1 -1
- package/src/val/KeyFuncVal.ts +36 -4
- package/src/val/ListVal.ts +3 -5
- package/src/val/LowerFuncVal.ts +22 -5
- package/src/val/MapVal.ts +13 -9
- package/src/val/MoveFuncVal.ts +27 -10
- package/src/val/NilVal.ts +13 -3
- package/src/val/NullVal.ts +1 -1
- package/src/val/NumberVal.ts +27 -4
- package/src/val/OpBaseVal.ts +10 -10
- package/src/val/OpenFuncVal.ts +1 -1
- package/src/val/PathFuncVal.ts +10 -2
- package/src/val/PlusOpVal.ts +168 -32
- package/src/val/PrefFuncVal.ts +1 -1
- package/src/val/PrefVal.ts +70 -8
- package/src/val/RefVal.ts +143 -11
- package/src/val/ScalarKindVal.ts +123 -12
- package/src/val/ScalarVal.ts +20 -3
- package/src/val/StringVal.ts +1 -1
- package/src/val/SuperFuncVal.ts +15 -2
- package/src/val/TopVal.ts +1 -1
- package/src/val/TypeFuncVal.ts +1 -1
- package/src/val/UpperFuncVal.ts +22 -5
- package/src/val/Val.ts +13 -8
- package/src/val/VarVal.ts +8 -2
- package/src/val/numcmp.ts +189 -0
- package/src/val/numkind.ts +256 -0
- package/src/val/valutil.ts +36 -0
package/dist/val/NullVal.js
CHANGED
package/dist/val/NullVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NullVal.js","sourceRoot":"","sources":["../../src/val/NullVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAYpD,2CAAuC;AACvC,mDAAsC;AAGtC,MAAM,OAAQ,SAAQ,qBAAS;IAG7B,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAN3C,WAAM,GAAG,IAAI,CAAA;QAOX,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;IACjB,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"NullVal.js","sourceRoot":"","sources":["../../src/val/NullVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAYpD,2CAAuC;AACvC,mDAAsC;AAGtC,MAAM,OAAQ,SAAQ,qBAAS;IAG7B,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAN3C,WAAM,GAAG,IAAI,CAAA;QAOX,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;IACjB,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC;CACF,CAAC,iCAAiC;QAIjC,OAAO"}
|
package/dist/val/NumberVal.d.ts
CHANGED
package/dist/val/NumberVal.js
CHANGED
|
@@ -4,7 +4,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.NumberVal = void 0;
|
|
5
5
|
const err_1 = require("../err");
|
|
6
6
|
const ScalarVal_1 = require("./ScalarVal");
|
|
7
|
+
const ScalarKindVal_1 = require("./ScalarKindVal");
|
|
7
8
|
const utility_1 = require("../utility");
|
|
9
|
+
// The IEEE-754 binary64 leaf of the number tower. Its KIND is Float (the
|
|
10
|
+
// keyword `float`), not the `number` supertype: `number` names the family
|
|
11
|
+
// of numeric leaves and never tags a concrete value. The class name is
|
|
12
|
+
// historical -- `number` used to name this leaf.
|
|
8
13
|
class NumberVal extends ScalarVal_1.ScalarVal {
|
|
9
14
|
constructor(spec, ctx) {
|
|
10
15
|
// Number.isFinite (not the coercing global isNaN, which lets null/''
|
|
@@ -13,20 +18,20 @@ class NumberVal extends ScalarVal_1.ScalarVal {
|
|
|
13
18
|
// TODO: use Nil?
|
|
14
19
|
throw new err_1.AontuError('not-number: ' + spec.peg);
|
|
15
20
|
}
|
|
16
|
-
super({ ...spec, kind:
|
|
21
|
+
super({ ...spec, kind: ScalarKindVal_1.Float }, ctx);
|
|
17
22
|
this.isNumber = true;
|
|
18
23
|
}
|
|
19
24
|
unify(peer, ctx) {
|
|
20
25
|
const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Number', this, peer);
|
|
21
26
|
let out = this;
|
|
22
27
|
if (null != peer) {
|
|
23
|
-
if (peer.isScalarKind) {
|
|
28
|
+
if (peer.isScalarKind || peer.isConstraint) {
|
|
24
29
|
out = peer.unify(this, ctx);
|
|
25
30
|
}
|
|
26
31
|
else if (peer.isScalar &&
|
|
27
32
|
peer.kind === this.kind &&
|
|
28
33
|
peer.peg === this.peg) {
|
|
29
|
-
// Same kind (both
|
|
34
|
+
// Same kind (both Float) and equal value: integer/float no
|
|
30
35
|
// longer cross-unify, so peer is necessarily a NumberVal here.
|
|
31
36
|
out = this;
|
|
32
37
|
}
|
|
@@ -44,6 +49,22 @@ class NumberVal extends ScalarVal_1.ScalarVal {
|
|
|
44
49
|
(0, utility_1.explainClose)(te, out);
|
|
45
50
|
return out;
|
|
46
51
|
}
|
|
47
|
-
|
|
52
|
+
// Canon must round-trip kind: reparsing the canon of a float-kind
|
|
53
|
+
// value has to yield a float-kind value again. A rendering with no
|
|
54
|
+
// '.' and no exponent (1 -> "1") would reparse as an integer, so it
|
|
55
|
+
// gains a ".0" suffix. Renderings that already carry a fraction, an
|
|
56
|
+
// exponent, or are NaN/Infinity are left alone.
|
|
57
|
+
//
|
|
58
|
+
// This is the CANON path only. String coercion inside `+` keeps plain
|
|
59
|
+
// JS parity ("a"+1.0 is "a1"), so it must not pick up the suffix.
|
|
60
|
+
get canon() {
|
|
61
|
+
const s = super.canon;
|
|
62
|
+
return (s.includes('.') ||
|
|
63
|
+
s.includes('e') ||
|
|
64
|
+
s.includes('E') ||
|
|
65
|
+
s.includes('N') ||
|
|
66
|
+
s.includes('I')) ? s : s + '.0';
|
|
67
|
+
}
|
|
68
|
+
} /* node:coverage ignore next 6 */
|
|
48
69
|
exports.NumberVal = NumberVal;
|
|
49
70
|
//# sourceMappingURL=NumberVal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberVal.js","sourceRoot":"","sources":["../../src/val/NumberVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAWzD,gCAA+C;AAE/C,2CAAuC;AAEvC,wCAGmB;AAInB,MAAM,SAAU,SAAQ,qBAAS;IAG/B,YACE,IAAa,EACb,GAAkB;QAElB,qEAAqE;QACrE,iEAAiE;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,iBAAiB;YACjB,MAAM,IAAI,gBAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,CAAC;QAED,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"NumberVal.js","sourceRoot":"","sources":["../../src/val/NumberVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAWzD,gCAA+C;AAE/C,2CAAuC;AACvC,mDAAuC;AAEvC,wCAGmB;AAInB,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,iDAAiD;AACjD,MAAM,SAAU,SAAQ,qBAAS;IAG/B,YACE,IAAa,EACb,GAAkB;QAElB,qEAAqE;QACrE,iEAAiE;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,iBAAiB;YACjB,MAAM,IAAI,gBAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,CAAC;QAED,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,qBAAK,EAAE,EAAE,GAAG,CAAC,CAAA;QAbtC,aAAQ,GAAG,IAAI,CAAA;IAcf,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE7E,IAAI,GAAG,GAAQ,IAAI,CAAA;QAEnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,YAAY,IAAK,IAAY,CAAC,YAAY,EAAE,CAAC;gBACpD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAC7B,CAAC;iBACI,IACH,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;gBACvB,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EACrB,CAAC;gBACD,2DAA2D;gBAC3D,+DAA+D;gBAC/D,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,CAAC;gBACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,SAAS;oBAC7B,CAAE,IAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9B,CAAC;QAED,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,kEAAkE;IAClE,mEAAmE;IACnE,oEAAoE;IACpE,oEAAoE;IACpE,gDAAgD;IAChD,EAAE;IACF,sEAAsE;IACtE,kEAAkE;IAClE,IAAI,KAAK;QACP,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;QACrB,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YACrB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YACf,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YACf,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YACf,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACnC,CAAC;CACF,CAAC,iCAAiC;QAIjC,SAAS"}
|
package/dist/val/OpBaseVal.js
CHANGED
|
@@ -29,7 +29,11 @@ class OpBaseVal extends FeatureVal_1.FeatureVal {
|
|
|
29
29
|
}
|
|
30
30
|
unify(peer, ctx) {
|
|
31
31
|
const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Op:' + this.opname(), this, peer);
|
|
32
|
-
|
|
32
|
+
// Declared without an initial value: every arm below assigns it, and
|
|
33
|
+
// seeding it with `this` made the two arms that stand the op read as
|
|
34
|
+
// redundant self-assignments. The arms themselves stay as they are —
|
|
35
|
+
// they mirror the dispatch switch in go/op.go arm for arm (ADR-001).
|
|
36
|
+
let out;
|
|
33
37
|
if (this.id == peer.id) {
|
|
34
38
|
return this;
|
|
35
39
|
}
|
|
@@ -44,13 +48,11 @@ class OpBaseVal extends FeatureVal_1.FeatureVal {
|
|
|
44
48
|
}
|
|
45
49
|
// console.log('OPVAL', this.id, this.opname(), pegdone, newpeg.map(p => p.canon))
|
|
46
50
|
if (pegdone) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
out = this;
|
|
51
|
-
}
|
|
51
|
+
// `|| this` makes result truthy, so an op that cannot compute yet
|
|
52
|
+
// takes the OpBaseVal arm below rather than a separate null arm.
|
|
53
|
+
let result = this.operate(ctx, newpeg) || this;
|
|
52
54
|
// TODO: should be result.isOp
|
|
53
|
-
|
|
55
|
+
if (result instanceof OpBaseVal) {
|
|
54
56
|
if (peer.isTop) {
|
|
55
57
|
out = this;
|
|
56
58
|
}
|
|
@@ -147,6 +149,6 @@ class OpBaseVal extends FeatureVal_1.FeatureVal {
|
|
|
147
149
|
}
|
|
148
150
|
return undefined;
|
|
149
151
|
}
|
|
150
|
-
}
|
|
152
|
+
} /* node:coverage ignore next 6 */
|
|
151
153
|
exports.OpBaseVal = OpBaseVal;
|
|
152
154
|
//# sourceMappingURL=OpBaseVal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpBaseVal.js","sourceRoot":"","sources":["../../src/val/OpBaseVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAQpD,kCAEgB;AAEhB,gCAIe;AAGf,oCAAgC;AAEhC,wCAImB;AAEnB,+BAEc;AAEd,+CAA2C;AAC3C,6CAAyC;AAKzC,MAAM,SAAU,SAAQ,uBAAU;IAGhC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,SAAI,GAAG,IAAI,CAAA;QAOT,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAGD,MAAM,CAAC,IAAS;QACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAGD,IAAI,CAAC,GAAiB,EAAE,KAAc;QACpC,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IACxE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;IACb,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1F,
|
|
1
|
+
{"version":3,"file":"OpBaseVal.js","sourceRoot":"","sources":["../../src/val/OpBaseVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/OpenFuncVal.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenFuncVal.js","sourceRoot":"","sources":["../../src/val/OpenFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAGnC,+CAA2C;AAK3C,MAAM,WAAY,SAAQ,yBAAW;IAGnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,eAAU,GAAG,IAAI,CAAA;IAOjB,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAA6B,EAAE,IAAW;QAChD,MAAM,MAAM,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,MAAiB,CAAC,MAAM,GAAG,KAAK,CAAA;QACnC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAEF;
|
|
1
|
+
{"version":3,"file":"OpenFuncVal.js","sourceRoot":"","sources":["../../src/val/OpenFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAGnC,+CAA2C;AAK3C,MAAM,WAAY,SAAQ,yBAAW;IAGnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,eAAU,GAAG,IAAI,CAAA;IAOjB,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAA6B,EAAE,IAAW;QAChD,MAAM,MAAM,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,MAAiB,CAAC,MAAM,GAAG,KAAK,CAAA;QACnC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAEF,CAAC,iCAAiC;QAIjC,WAAW"}
|
package/dist/val/PathFuncVal.js
CHANGED
|
@@ -22,7 +22,15 @@ class PathFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
|
22
22
|
prepare(ctx, args) {
|
|
23
23
|
let arg = args[0];
|
|
24
24
|
if (0 === this.prepared) {
|
|
25
|
-
|
|
25
|
+
// A missing argument (`path()`) must produce an invalid-arg error
|
|
26
|
+
// value, as the Go port does -- reading .isScalar off nothing threw
|
|
27
|
+
// a TypeError that the unifier could only report as an opaque
|
|
28
|
+
// internal error. Same discipline breach, and same fix, as the one
|
|
29
|
+
// UpperFuncVal records; path() was missed in that sweep.
|
|
30
|
+
if (null == arg) {
|
|
31
|
+
arg = (0, err_1.makeNilErr)(ctx, 'invalid-arg', this);
|
|
32
|
+
}
|
|
33
|
+
else if (arg.isScalar) {
|
|
26
34
|
arg = this.place(new RefVal_1.RefVal({ peg: [arg], absolute: false }));
|
|
27
35
|
}
|
|
28
36
|
else if (!arg.isRef) {
|
|
@@ -37,6 +45,6 @@ class PathFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
|
37
45
|
let out = args[0] ?? (0, err_1.makeNilErr)(ctx, 'arg', this);
|
|
38
46
|
return out;
|
|
39
47
|
}
|
|
40
|
-
}
|
|
48
|
+
} /* node:coverage ignore next 6 */
|
|
41
49
|
exports.PathFuncVal = PathFuncVal;
|
|
42
50
|
//# sourceMappingURL=PathFuncVal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathFuncVal.js","sourceRoot":"","sources":["../../src/val/PathFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAGnC,0CAAsC;AACtC,+CAA2C;AAG3C,MAAM,WAAY,SAAQ,yBAAW;IAKnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QARlB,eAAU,GAAG,IAAI,CAAA;QAEjB,aAAQ,GAAG,CAAC,CAAA;IAOZ,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QACtC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QACjC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjB,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PathFuncVal.js","sourceRoot":"","sources":["../../src/val/PathFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAGnC,0CAAsC;AACtC,+CAA2C;AAG3C,MAAM,WAAY,SAAQ,yBAAW;IAKnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QARlB,eAAU,GAAG,IAAI,CAAA;QAEjB,aAAQ,GAAG,CAAC,CAAA;IAOZ,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QACtC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QACjC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjB,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,kEAAkE;YAClE,oEAAoE;YACpE,8DAA8D;YAC9D,mEAAmE;YACnE,yDAAyD;YACzD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBAChB,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;YAC5C,CAAC;iBACI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACtB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,eAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YAC/D,CAAC;iBACI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QAEb,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEf,OAAO,IAAI,CAAA;IACb,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAA,gBAAU,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAEjD,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF,CAAC,iCAAiC;QAIjC,WAAW"}
|
package/dist/val/PlusOpVal.d.ts
CHANGED
|
@@ -4,13 +4,15 @@ import { IntegerVal } from '../val/IntegerVal';
|
|
|
4
4
|
import { NumberVal } from '../val/NumberVal';
|
|
5
5
|
import { StringVal } from '../val/StringVal';
|
|
6
6
|
import { BooleanVal } from '../val/BooleanVal';
|
|
7
|
+
import { BigIntegerVal } from '../val/BigIntegerVal';
|
|
8
|
+
import { BigDecimalVal } from '../val/BigDecimalVal';
|
|
7
9
|
import { OpBaseVal } from './OpBaseVal';
|
|
8
10
|
declare class PlusOpVal extends OpBaseVal {
|
|
9
11
|
isPlusOp: boolean;
|
|
10
12
|
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
11
13
|
make(_ctx: AontuContext, spec: ValSpec): Val;
|
|
12
14
|
opname(): string;
|
|
13
|
-
operate(
|
|
15
|
+
operate(ctx: AontuContext, args: Val[]): BigDecimalVal | BigIntegerVal | BooleanVal | IntegerVal | import("./NilVal").NilVal | NumberVal | StringVal | undefined;
|
|
14
16
|
get canon(): string;
|
|
15
17
|
}
|
|
16
18
|
export { PlusOpVal, };
|
package/dist/val/PlusOpVal.js
CHANGED
|
@@ -2,11 +2,39 @@
|
|
|
2
2
|
/* Copyright (c) 2024-2025 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.PlusOpVal = void 0;
|
|
5
|
+
const err_1 = require("../err");
|
|
5
6
|
const IntegerVal_1 = require("../val/IntegerVal");
|
|
6
7
|
const NumberVal_1 = require("../val/NumberVal");
|
|
7
8
|
const StringVal_1 = require("../val/StringVal");
|
|
8
9
|
const BooleanVal_1 = require("../val/BooleanVal");
|
|
10
|
+
const BigIntegerVal_1 = require("../val/BigIntegerVal");
|
|
11
|
+
const BigDecimalVal_1 = require("../val/BigDecimalVal");
|
|
12
|
+
const Decimal_1 = require("../val/Decimal");
|
|
13
|
+
const numkind_1 = require("../val/numkind");
|
|
14
|
+
const numkind_2 = require("../val/numkind");
|
|
9
15
|
const OpBaseVal_1 = require("./OpBaseVal");
|
|
16
|
+
// D6 -- THE EXACT LADDER: integer < biginteger < bigdecimal. A mixed
|
|
17
|
+
// operation between exact leaves promotes to the WIDEST operand and is
|
|
18
|
+
// computed exactly, so `1 + 0d2` is a biginteger and `1 + 0d0.5` a
|
|
19
|
+
// bigdecimal.
|
|
20
|
+
//
|
|
21
|
+
// `float` is deliberately absent: it is OFF the ladder, keeping only its
|
|
22
|
+
// classic contagion against `integer`. Its absence from this table is
|
|
23
|
+
// what makes the float-with-big pairs fall through to the hard error
|
|
24
|
+
// below rather than promoting.
|
|
25
|
+
//
|
|
26
|
+
// Results NEVER demote: `0d5 + -0d2` stays a biginteger even though 3
|
|
27
|
+
// would fit an int64. Demotion would make the result kind depend on the
|
|
28
|
+
// values rather than on the operand kinds, and a document could then
|
|
29
|
+
// change leaf under a value edit.
|
|
30
|
+
const EXACT_RANK = {
|
|
31
|
+
integer: 1,
|
|
32
|
+
biginteger: 2,
|
|
33
|
+
bigdecimal: 3,
|
|
34
|
+
};
|
|
35
|
+
function isBig(k) {
|
|
36
|
+
return 'biginteger' === k || 'bigdecimal' === k;
|
|
37
|
+
}
|
|
10
38
|
class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
11
39
|
constructor(spec, ctx) {
|
|
12
40
|
super(spec, ctx);
|
|
@@ -18,57 +46,140 @@ class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
|
18
46
|
opname() {
|
|
19
47
|
return 'plus';
|
|
20
48
|
}
|
|
21
|
-
operate(
|
|
49
|
+
operate(ctx, args) {
|
|
22
50
|
// Only concrete scalar operands are valid: anything else (kinds,
|
|
23
51
|
// maps, lists, null, top, funcs) must not coerce — the JS `+` would
|
|
24
52
|
// leak internals like "[object Object]" into output. A non-scalar
|
|
25
53
|
// operand leaves the op unresolved, which generate() reports.
|
|
26
|
-
const
|
|
27
|
-
// A pref operand contributes its preferred value (`pref(1)+2`)
|
|
54
|
+
const operand = (v) => {
|
|
55
|
+
// A pref operand contributes its preferred value (`pref(1)+2`),
|
|
56
|
+
// and therefore that value's kind too.
|
|
28
57
|
while (v?.isPref) {
|
|
29
58
|
v = v.peg;
|
|
30
59
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
60
|
+
return v;
|
|
61
|
+
};
|
|
62
|
+
// The operand's LEAF, not the JavaScript type of its peg: integer
|
|
63
|
+
// and float share `number`, while the exact leaves are told apart
|
|
64
|
+
// from each other and from everything else by their own flags. The
|
|
65
|
+
// whole ladder below dispatches on this and never on `typeof`.
|
|
66
|
+
const opkind = (v) => {
|
|
67
|
+
if (!(v?.isVal && v.isScalar)) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
if (v.isBigInteger) {
|
|
71
|
+
return 'biginteger';
|
|
72
|
+
}
|
|
73
|
+
if (v.isBigDecimal) {
|
|
74
|
+
return 'bigdecimal';
|
|
75
|
+
}
|
|
76
|
+
if (v.isInteger) {
|
|
77
|
+
return 'integer';
|
|
78
|
+
}
|
|
79
|
+
const t = typeof v.peg;
|
|
80
|
+
return 'number' === t ? 'float' :
|
|
81
|
+
'string' === t ? 'string' :
|
|
82
|
+
'boolean' === t ? 'boolean' :
|
|
83
|
+
undefined;
|
|
34
84
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
85
|
+
const av = operand(args[0]);
|
|
86
|
+
const bv = operand(args[1]);
|
|
87
|
+
const ak = opkind(av);
|
|
88
|
+
const bk = opkind(bv);
|
|
89
|
+
if (undefined === ak || undefined === bk) {
|
|
38
90
|
return undefined;
|
|
39
91
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
let peg = undefined;
|
|
43
|
-
if ('boolean' === at && 'boolean' === bt) {
|
|
44
|
-
peg = a || b;
|
|
92
|
+
if ('boolean' === ak && 'boolean' === bk) {
|
|
93
|
+
return new BooleanVal_1.BooleanVal({ peg: av.peg || bv.peg });
|
|
45
94
|
}
|
|
46
|
-
|
|
47
|
-
|
|
95
|
+
// STRING CONCATENATION RENDERS DIGITS, NOT KIND DECORATION. The `0d`
|
|
96
|
+
// marker is canon's way of naming the leaf and never belongs in a
|
|
97
|
+
// string, exactly as R4's `.0` float suffix does not ("q" + 0d0.1 is
|
|
98
|
+
// "q0.1", and "q" + 1.0 is "q1"). Decimal.toString() is that
|
|
99
|
+
// marker-free rendering, which is why canon() wraps it rather than
|
|
100
|
+
// the other way round.
|
|
101
|
+
if ('string' === ak || 'string' === bk) {
|
|
102
|
+
return new StringVal_1.StringVal({ peg: digits(av, ak) + digits(bv, bk) });
|
|
48
103
|
}
|
|
49
|
-
|
|
50
|
-
|
|
104
|
+
// A boolean mixed with a number does not coerce (no JS 0/1).
|
|
105
|
+
if ('boolean' === ak || 'boolean' === bk) {
|
|
51
106
|
return undefined;
|
|
52
107
|
}
|
|
53
|
-
|
|
54
|
-
|
|
108
|
+
// FLOAT IS OFF THE EXACT LADDER, and mixing it with either big leaf
|
|
109
|
+
// is a hard error in BOTH operand orders: a big type never silently
|
|
110
|
+
// becomes a binary float. Promotion the other way is no better —
|
|
111
|
+
// binary64 cannot hold every exact value, so either direction throws
|
|
112
|
+
// away exactness the document explicitly asked for by writing `0d`.
|
|
113
|
+
// The error names both leaves in operand order.
|
|
114
|
+
if (('float' === ak && isBig(bk)) || (isBig(ak) && 'float' === bk)) {
|
|
115
|
+
return (0, err_1.makeNilErr)(ctx, 'exact_float_mix', this, undefined, 'add', { left: ak, right: bk });
|
|
55
116
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if ('
|
|
59
|
-
|
|
117
|
+
// Float with float or integer: unchanged R5 contagion, binary64
|
|
118
|
+
// addition, float result (`1 + 2.0` is `3.0`).
|
|
119
|
+
if ('float' === ak || 'float' === bk) {
|
|
120
|
+
return new NumberVal_1.NumberVal({ peg: av.peg + bv.peg });
|
|
60
121
|
}
|
|
61
|
-
|
|
62
|
-
|
|
122
|
+
// Both operands are on the exact ladder: promote to the widest.
|
|
123
|
+
const rank = EXACT_RANK[bk] < EXACT_RANK[ak] ? EXACT_RANK[ak] : EXACT_RANK[bk];
|
|
124
|
+
if (EXACT_RANK.bigdecimal === rank) {
|
|
125
|
+
// Exact scaled-decimal addition. The budget applies to results as
|
|
126
|
+
// well as literals (D6): an exact sum too wide to hold is refused,
|
|
127
|
+
// never rounded to fit.
|
|
128
|
+
const sum = decimal(av, ak).add(decimal(bv, bk));
|
|
129
|
+
return (0, Decimal_1.decimalOverBudget)(sum) ?
|
|
130
|
+
(0, err_1.makeNilErr)(ctx, 'decimal_budget', this, undefined, 'add') :
|
|
131
|
+
new BigDecimalVal_1.BigDecimalVal({ peg: sum });
|
|
63
132
|
}
|
|
64
|
-
|
|
65
|
-
|
|
133
|
+
// integer and biginteger both add as exact integers.
|
|
134
|
+
const sum = integer(av, ak) + integer(bv, bk);
|
|
135
|
+
if (EXACT_RANK.biginteger === rank) {
|
|
136
|
+
// Unbounded and exact: nothing to check, and no demotion to
|
|
137
|
+
// `integer` however small the result.
|
|
138
|
+
return new BigIntegerVal_1.BigIntegerVal({ peg: sum });
|
|
66
139
|
}
|
|
67
|
-
|
|
140
|
+
// INTEGER + INTEGER IS COMPUTED EXACTLY, then offered to the integer
|
|
141
|
+
// leaf under the same storage contract R1 applies to a literal.
|
|
142
|
+
// Adding through float64 (as this did) silently rounded sums of
|
|
143
|
+
// exact operands — 4503599627370496 + 4503599627370497 came back as
|
|
144
|
+
// …992 — which is precisely the corruption the tower refuses. The
|
|
145
|
+
// sum that will not fit is an error pointing at `0d`, not a rounded
|
|
146
|
+
// answer.
|
|
147
|
+
return (0, numkind_2.isIntegerStorable)(sum) ?
|
|
148
|
+
new IntegerVal_1.IntegerVal({ peg: Number(sum) }) :
|
|
149
|
+
(0, err_1.makeNilErr)(ctx, 'inexact_integer_sum', this, undefined, 'add', { sum: sum.toString() });
|
|
68
150
|
}
|
|
69
151
|
get canon() {
|
|
70
152
|
return this.peg[0]?.canon + '+' + this.peg[1]?.canon;
|
|
71
153
|
}
|
|
72
154
|
}
|
|
73
155
|
exports.PlusOpVal = PlusOpVal;
|
|
156
|
+
// The digits of an operand for string concatenation: no `0d` marker, no
|
|
157
|
+
// R4 `.0` suffix — the plain rendering of the number, in every leaf.
|
|
158
|
+
//
|
|
159
|
+
// INTEGER KIND GOES THROUGH integerDigits. This was the THIRD site to
|
|
160
|
+
// render an integer-kind peg with JavaScript's shortest round-tripping
|
|
161
|
+
// form, so `"" + 1152921504606846976` produced "1152921504606847000" — a
|
|
162
|
+
// different integer — where Go produced the exact digits. See #21 and
|
|
163
|
+
// integerDigits, which exists so the set of such sites is greppable.
|
|
164
|
+
//
|
|
165
|
+
// The other leaves are already exact or already correct: a bigint
|
|
166
|
+
// stringifies to its exact digits, a Decimal renders its own, and a FLOAT
|
|
167
|
+
// must keep String() because its shortest form is the right answer and is
|
|
168
|
+
// what Go prints too (`"a" + 1.0` is "a1").
|
|
169
|
+
function digits(v, k) {
|
|
170
|
+
return 'bigdecimal' === k ? v.peg.toString() :
|
|
171
|
+
'integer' === k ? (0, numkind_1.integerDigits)(v.peg) :
|
|
172
|
+
String(v.peg);
|
|
173
|
+
}
|
|
174
|
+
// An exact-ladder operand as an exact integer. Only reached for the two
|
|
175
|
+
// integral leaves; an `integer` peg is integral by construction, so
|
|
176
|
+
// BigInt() is exact.
|
|
177
|
+
function integer(v, k) {
|
|
178
|
+
return 'biginteger' === k ? v.peg : BigInt(v.peg);
|
|
179
|
+
}
|
|
180
|
+
// An exact-ladder operand as a Decimal, for the promotion to bigdecimal.
|
|
181
|
+
// Scale 0 normalises to the one decimal place the leaf keeps.
|
|
182
|
+
function decimal(v, k) {
|
|
183
|
+
return 'bigdecimal' === k ? v.peg : new Decimal_1.Decimal(integer(v, k), 0);
|
|
184
|
+
} /* node:coverage ignore next 6 */
|
|
74
185
|
//# sourceMappingURL=PlusOpVal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlusOpVal.js","sourceRoot":"","sources":["../../src/val/PlusOpVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;
|
|
1
|
+
{"version":3,"file":"PlusOpVal.js","sourceRoot":"","sources":["../../src/val/PlusOpVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PrefFuncVal.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrefFuncVal.js","sourceRoot":"","sources":["../../src/val/PrefFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAEnC,wCAEmB;AAGnB,4CAAwC;AACxC,+CAA2C;AAG3C,MAAM,WAAY,SAAQ,yBAAW;IAGnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,eAAU,GAAG,IAAI,CAAA;IAOjB,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAA,gBAAU,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAEjD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEpB,oCAAoC;YACpC,GAAG,GAAG,IAAA,cAAI,EAAC,GAAG,EAAE,CAAC,IAAiC,EAAE,GAAQ,EAAE,EAAE;gBAC9D,IAAI,IAAI,GAAG,GAAG,CAAA;gBACd,kEAAkE;gBAClE,IACE,GAAG,CAAC,QAAQ;uBACT,GAAG,CAAC,MAAM,EACb,CAAC;oBACD,IAAI,GAAG,IAAI,iBAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;gBACvC,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF;
|
|
1
|
+
{"version":3,"file":"PrefFuncVal.js","sourceRoot":"","sources":["../../src/val/PrefFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAEnC,wCAEmB;AAGnB,4CAAwC;AACxC,+CAA2C;AAG3C,MAAM,WAAY,SAAQ,yBAAW;IAGnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,eAAU,GAAG,IAAI,CAAA;IAOjB,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAA,gBAAU,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAEjD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEpB,oCAAoC;YACpC,GAAG,GAAG,IAAA,cAAI,EAAC,GAAG,EAAE,CAAC,IAAiC,EAAE,GAAQ,EAAE,EAAE;gBAC9D,IAAI,IAAI,GAAG,GAAG,CAAA;gBACd,kEAAkE;gBAClE,IACE,GAAG,CAAC,QAAQ;uBACT,GAAG,CAAC,MAAM,EACb,CAAC;oBACD,IAAI,GAAG,IAAI,iBAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;gBACvC,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF,CAAC,iCAAiC;QAIjC,WAAW"}
|
package/dist/val/PrefVal.d.ts
CHANGED
|
@@ -6,8 +6,10 @@ declare class PrefVal extends FeatureVal {
|
|
|
6
6
|
isGenable: boolean;
|
|
7
7
|
cjo: number;
|
|
8
8
|
superpeg: Val;
|
|
9
|
+
familypeg: Val;
|
|
9
10
|
rank: number;
|
|
10
11
|
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
12
|
+
private resuper;
|
|
11
13
|
unify(peer: Val, ctx: AontuContext): Val;
|
|
12
14
|
same(peer: Val): boolean;
|
|
13
15
|
clone(ctx: AontuContext, spec?: ValSpec): Val;
|
package/dist/val/PrefVal.js
CHANGED
|
@@ -8,6 +8,7 @@ const err_1 = require("../err");
|
|
|
8
8
|
const utility_1 = require("../utility");
|
|
9
9
|
const top_1 = require("./top");
|
|
10
10
|
const FeatureVal_1 = require("./FeatureVal");
|
|
11
|
+
const ScalarKindVal_1 = require("./ScalarKindVal");
|
|
11
12
|
class PrefVal extends FeatureVal_1.FeatureVal {
|
|
12
13
|
constructor(spec, ctx) {
|
|
13
14
|
super(spec, ctx);
|
|
@@ -20,22 +21,53 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
20
21
|
if (spec.peg instanceof PrefVal) {
|
|
21
22
|
this.rank = 1 + spec.peg.rank;
|
|
22
23
|
}
|
|
23
|
-
this.
|
|
24
|
+
this.resuper();
|
|
24
25
|
// console.log('PVC', this.peg.canon, this.superpeg.canon)
|
|
25
26
|
}
|
|
27
|
+
// Recompute the type yardstick and the override gate from the current
|
|
28
|
+
// peg. Called again whenever the peg resolves (e.g. a ref).
|
|
29
|
+
resuper() {
|
|
30
|
+
const peg = this.peg;
|
|
31
|
+
// A preference whose peg is ITSELF a kind (`*integer`) constrains
|
|
32
|
+
// nothing: there is no type-of-a-type in this lattice, so any peer
|
|
33
|
+
// wins. (Pinned by test/spec/var.tsv:var-pref-kind-narrow. Before
|
|
34
|
+
// the tower this fell out of a ScalarKindVal's superior being top;
|
|
35
|
+
// now that a leaf kind lifts to `number`, it has to be said.)
|
|
36
|
+
if (true === peg.isScalarKind) {
|
|
37
|
+
this.superpeg = (0, top_1.top)();
|
|
38
|
+
this.familypeg = this.superpeg;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const sup = peg.superior();
|
|
42
|
+
this.superpeg = sup;
|
|
43
|
+
// No optional chain: superior() is contractually non-null (every
|
|
44
|
+
// Val returns one, a NilVal returning itself), so guarding against
|
|
45
|
+
// nullish here would claim a possibility the type does not have.
|
|
46
|
+
if (true === sup.isScalarKind) {
|
|
47
|
+
const family = (0, ScalarKindVal_1.kindFamily)(sup.peg);
|
|
48
|
+
// The gate stands in for the preferred value in any conflict it
|
|
49
|
+
// reports, so it must carry the same site and path as the type it
|
|
50
|
+
// widens -- otherwise NilVal.make picks a different primary and
|
|
51
|
+
// the error moves to the wrong path.
|
|
52
|
+
this.familypeg = family === sup.peg ?
|
|
53
|
+
sup : sup.place(new ScalarKindVal_1.ScalarKindVal({ peg: family, path: sup.path }));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.familypeg = sup;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
26
59
|
// PrefVal unify always returns a PrefVal
|
|
27
60
|
// PrefVals can only be removed by becoming Nil in a Disjunct
|
|
28
61
|
unify(peer, ctx) {
|
|
29
62
|
peer = peer ?? (0, top_1.top)();
|
|
30
63
|
const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Pref', this, peer);
|
|
31
|
-
let done = true;
|
|
32
64
|
let out = this;
|
|
33
65
|
let why = '';
|
|
34
66
|
if (!this.peg.done) {
|
|
35
67
|
const resolved = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'RES') }) : ctx, this.peg, (0, top_1.top)(), 'pref/resolve');
|
|
36
68
|
// console.log('PREF-RESOLVED', this.peg.canon, '->', resolved)
|
|
37
69
|
this.peg = resolved;
|
|
38
|
-
this.
|
|
70
|
+
this.resuper();
|
|
39
71
|
}
|
|
40
72
|
if (peer instanceof PrefVal) {
|
|
41
73
|
why += 'pref-';
|
|
@@ -69,8 +101,11 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
69
101
|
}
|
|
70
102
|
else if (!peer.isTop) {
|
|
71
103
|
why += 'super-';
|
|
72
|
-
out = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SUPER') }) : ctx, this.
|
|
73
|
-
|
|
104
|
+
out = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SUPER') }) : ctx, this.familypeg, peer, 'pref-super/' + this.id);
|
|
105
|
+
// The peer added nothing beyond a type the preferred value already
|
|
106
|
+
// satisfies (`*1 & integer`, `*1 & number`), so the preference
|
|
107
|
+
// stands. Anything else is a concrete override and wins.
|
|
108
|
+
if (out.same(this.superpeg) || out.same(this.familypeg)) {
|
|
74
109
|
out = this.peg;
|
|
75
110
|
why += 'same';
|
|
76
111
|
}
|
|
@@ -79,7 +114,9 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
79
114
|
else {
|
|
80
115
|
why += 'none';
|
|
81
116
|
}
|
|
82
|
-
|
|
117
|
+
// Every pref result is DONE, including a stuck conjunct from the
|
|
118
|
+
// superior-unify (mirrored by PrefVal.Unify in go/pref.go).
|
|
119
|
+
out.dc = type_1.DONE;
|
|
83
120
|
// console.log('PREFVAL-OUT', why, this.canon, peer.canon, '->', out.canon, out.done)
|
|
84
121
|
ctx.explain && (0, utility_1.explainClose)(te, out);
|
|
85
122
|
return out;
|
|
@@ -110,6 +147,6 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
110
147
|
}
|
|
111
148
|
return val.gen(ctx);
|
|
112
149
|
}
|
|
113
|
-
}
|
|
150
|
+
} /* node:coverage ignore next 6 */
|
|
114
151
|
exports.PrefVal = PrefVal;
|
|
115
152
|
//# sourceMappingURL=PrefVal.js.map
|
package/dist/val/PrefVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAOzD,kCAEgB;AAGhB,oCAAgC;AAChC,gCAAmC;AAEnC,wCAImB;AAGnB,+BAA2B;AAE3B,6CAAyC;
|
|
1
|
+
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":"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"}
|