aontu 0.76.0 → 0.76.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aontu.d.ts +1 -1
- package/dist/aontu.js +1 -1
- package/dist/lsp.d.ts +1 -1
- package/dist/val/PrefVal.d.ts +2 -0
- package/dist/val/PrefVal.js +41 -12
- package/dist/val/PrefVal.js.map +1 -1
- package/package.json +1 -1
- package/src/aontu.ts +1 -1
- package/src/val/PrefVal.ts +56 -12
package/dist/aontu.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ import { loadProfile } from './profile';
|
|
|
23
23
|
import { desugarTemplate, resugarTemplate, markerFor } from './template';
|
|
24
24
|
import { format, unifiedDiff } from './format';
|
|
25
25
|
export type { LintFinding, FormatReport, FormatOptions } from './format';
|
|
26
|
-
declare const VERSION = "0.76.
|
|
26
|
+
declare const VERSION = "0.76.1";
|
|
27
27
|
declare class Aontu {
|
|
28
28
|
opts: AontuOptions;
|
|
29
29
|
lang: Lang;
|
package/dist/aontu.js
CHANGED
|
@@ -59,7 +59,7 @@ Object.defineProperty(exports, "markerFor", { enumerable: true, get: function ()
|
|
|
59
59
|
const format_1 = require("./format");
|
|
60
60
|
Object.defineProperty(exports, "format", { enumerable: true, get: function () { return format_1.format; } });
|
|
61
61
|
Object.defineProperty(exports, "unifiedDiff", { enumerable: true, get: function () { return format_1.unifiedDiff; } });
|
|
62
|
-
const VERSION = '0.76.
|
|
62
|
+
const VERSION = '0.76.1';
|
|
63
63
|
exports.VERSION = VERSION;
|
|
64
64
|
function genQuiet(val, aontu) {
|
|
65
65
|
return val.gen(aontu.ctx({ collect: true }));
|
package/dist/lsp.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ declare const SEVERITY_ERROR = 1;
|
|
|
4
4
|
declare const SEVERITY_WARNING = 2;
|
|
5
5
|
declare const SEVERITY_INFORMATION = 3;
|
|
6
6
|
declare const SEVERITY_HINT = 4;
|
|
7
|
-
declare const LSP_VERSION = "0.76.
|
|
7
|
+
declare const LSP_VERSION = "0.76.1";
|
|
8
8
|
type Position = {
|
|
9
9
|
line: number;
|
|
10
10
|
character: number;
|
package/dist/val/PrefVal.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ declare class PrefVal extends FeatureVal {
|
|
|
12
12
|
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
13
13
|
private resuper;
|
|
14
14
|
private restand;
|
|
15
|
+
private stand;
|
|
16
|
+
private meetPref;
|
|
15
17
|
unify(peer: Val, ctx: AontuContext): Val;
|
|
16
18
|
same(peer: Val): boolean;
|
|
17
19
|
clone(ctx: AontuContext, spec?: ValSpec): Val;
|
package/dist/val/PrefVal.js
CHANGED
|
@@ -48,6 +48,41 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
48
48
|
}
|
|
49
49
|
return this.place(out);
|
|
50
50
|
}
|
|
51
|
+
// Unchanged on both counts is the SAME preference, returned as
|
|
52
|
+
// itself: minting a new one every pass would keep the fixpoint
|
|
53
|
+
// moving for ever.
|
|
54
|
+
stand(met, gate, ctx) {
|
|
55
|
+
if (met.same(prefInnerPeg(this)) && gate.same(this.superpeg)) {
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
const stood = this.restand(met, ctx);
|
|
59
|
+
stood.narrowed = gate;
|
|
60
|
+
stood.superpeg = gate;
|
|
61
|
+
return stood;
|
|
62
|
+
}
|
|
63
|
+
// Scalar defaults meet as the disjunctions they stand for: each
|
|
64
|
+
// stands only where the other's override space admits it, so a value
|
|
65
|
+
// either one has already met survives the other's rank.
|
|
66
|
+
meetPref(peer, ctx) {
|
|
67
|
+
const strong = peer.rank < this.rank ? peer : this;
|
|
68
|
+
const weak = strong === this ? peer : this;
|
|
69
|
+
const gate = (0, FuncBaseVal_1.trialUnify)(ctx, strong.superpeg.clone(ctx), weak.superpeg.clone(ctx));
|
|
70
|
+
if (undefined === gate) {
|
|
71
|
+
return (0, err_1.makeNilErr)(ctx, 'empty', this, peer, 'unify');
|
|
72
|
+
}
|
|
73
|
+
const strongMet = (0, FuncBaseVal_1.trialUnify)(ctx, prefInnerPeg(strong).clone(ctx), weak.superpeg.clone(ctx));
|
|
74
|
+
const weakMet = (0, FuncBaseVal_1.trialUnify)(ctx, strong.superpeg.clone(ctx), prefInnerPeg(weak).clone(ctx));
|
|
75
|
+
if (strong.rank === weak.rank &&
|
|
76
|
+
undefined !== strongMet && undefined !== weakMet) {
|
|
77
|
+
const peg = (0, FuncBaseVal_1.trialUnify)(ctx, prefInnerPeg(this).clone(ctx), prefInnerPeg(peer));
|
|
78
|
+
return undefined === peg
|
|
79
|
+
? (0, err_1.makeNilErr)(ctx, 'pref_rank_clash', this, peer, 'unify')
|
|
80
|
+
: this.stand(peg, gate, ctx);
|
|
81
|
+
}
|
|
82
|
+
return undefined !== strongMet ? strong.stand(strongMet, gate, ctx)
|
|
83
|
+
: undefined !== weakMet ? weak.stand(weakMet, gate, ctx)
|
|
84
|
+
: gate;
|
|
85
|
+
}
|
|
51
86
|
// PrefVal unify always returns a PrefVal
|
|
52
87
|
// PrefVals can only be removed by becoming Nil in a Disjunct
|
|
53
88
|
unify(peer, ctx) {
|
|
@@ -71,6 +106,11 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
71
106
|
out = this;
|
|
72
107
|
why += 'same-peg';
|
|
73
108
|
}
|
|
109
|
+
else if (true === prefInnerPeg(this).isScalar &&
|
|
110
|
+
true === prefInnerPeg(peer).isScalar) {
|
|
111
|
+
out = this.meetPref(peer, ctx);
|
|
112
|
+
why += 'gated';
|
|
113
|
+
}
|
|
74
114
|
else if (this.rank < peer.rank) {
|
|
75
115
|
out = this;
|
|
76
116
|
why += 'rank-win';
|
|
@@ -92,18 +132,7 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
92
132
|
const met = (0, FuncBaseVal_1.trialUnify)(ctx, prefInnerPeg(this).clone(ctx), peer);
|
|
93
133
|
if (undefined !== met) {
|
|
94
134
|
const gate = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'GATE') }) : ctx, this.superpeg.clone(ctx), peer, 'pref-gate/' + this.id);
|
|
95
|
-
|
|
96
|
-
// itself: minting a new one every pass would keep the fixpoint
|
|
97
|
-
// moving for ever.
|
|
98
|
-
if (met.same(prefInnerPeg(this)) && gate.same(this.superpeg)) {
|
|
99
|
-
out = this;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
const stood = this.restand(met, ctx);
|
|
103
|
-
stood.narrowed = gate;
|
|
104
|
-
stood.superpeg = gate;
|
|
105
|
-
out = stood;
|
|
106
|
-
}
|
|
135
|
+
out = this.stand(met, gate, ctx);
|
|
107
136
|
why += 'stands';
|
|
108
137
|
(0, utility_1.explainClose)(te, out);
|
|
109
138
|
out.dc = type_1.DONE;
|
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;;;
|
|
1
|
+
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/aontu.ts
CHANGED
package/src/val/PrefVal.ts
CHANGED
|
@@ -88,6 +88,55 @@ class PrefVal extends FeatureVal {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
|
|
91
|
+
// Unchanged on both counts is the SAME preference, returned as
|
|
92
|
+
// itself: minting a new one every pass would keep the fixpoint
|
|
93
|
+
// moving for ever.
|
|
94
|
+
private stand(met: Val, gate: Val, ctx: AontuContext): Val {
|
|
95
|
+
if (met.same(prefInnerPeg(this)) && gate.same(this.superpeg)) {
|
|
96
|
+
return this
|
|
97
|
+
}
|
|
98
|
+
const stood = this.restand(met, ctx) as PrefVal
|
|
99
|
+
stood.narrowed = gate
|
|
100
|
+
stood.superpeg = gate
|
|
101
|
+
return stood
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
// Scalar defaults meet as the disjunctions they stand for: each
|
|
106
|
+
// stands only where the other's override space admits it, so a value
|
|
107
|
+
// either one has already met survives the other's rank.
|
|
108
|
+
private meetPref(peer: PrefVal, ctx: AontuContext): Val {
|
|
109
|
+
const strong = peer.rank < this.rank ? peer : this
|
|
110
|
+
const weak = strong === this ? peer : this
|
|
111
|
+
|
|
112
|
+
const gate = trialUnify(ctx, strong.superpeg.clone(ctx),
|
|
113
|
+
weak.superpeg.clone(ctx))
|
|
114
|
+
|
|
115
|
+
if (undefined === gate) {
|
|
116
|
+
return makeNilErr(ctx, 'empty', this, peer, 'unify')
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const strongMet = trialUnify(ctx, prefInnerPeg(strong).clone(ctx),
|
|
120
|
+
weak.superpeg.clone(ctx))
|
|
121
|
+
const weakMet = trialUnify(ctx, strong.superpeg.clone(ctx),
|
|
122
|
+
prefInnerPeg(weak).clone(ctx))
|
|
123
|
+
|
|
124
|
+
if (strong.rank === weak.rank &&
|
|
125
|
+
undefined !== strongMet && undefined !== weakMet) {
|
|
126
|
+
const peg = trialUnify(ctx, prefInnerPeg(this).clone(ctx),
|
|
127
|
+
prefInnerPeg(peer))
|
|
128
|
+
|
|
129
|
+
return undefined === peg
|
|
130
|
+
? makeNilErr(ctx, 'pref_rank_clash', this, peer, 'unify')
|
|
131
|
+
: this.stand(peg, gate, ctx)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return undefined !== strongMet ? strong.stand(strongMet, gate, ctx)
|
|
135
|
+
: undefined !== weakMet ? weak.stand(weakMet, gate, ctx)
|
|
136
|
+
: gate
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
91
140
|
// PrefVal unify always returns a PrefVal
|
|
92
141
|
// PrefVals can only be removed by becoming Nil in a Disjunct
|
|
93
142
|
unify(peer: Val, ctx: AontuContext): Val {
|
|
@@ -118,6 +167,12 @@ class PrefVal extends FeatureVal {
|
|
|
118
167
|
why += 'same-peg'
|
|
119
168
|
}
|
|
120
169
|
|
|
170
|
+
else if (true === (prefInnerPeg(this) as any).isScalar &&
|
|
171
|
+
true === (prefInnerPeg(peer) as any).isScalar) {
|
|
172
|
+
out = this.meetPref(peer, ctx)
|
|
173
|
+
why += 'gated'
|
|
174
|
+
}
|
|
175
|
+
|
|
121
176
|
else if (this.rank < peer.rank) {
|
|
122
177
|
out = this
|
|
123
178
|
why += 'rank-win'
|
|
@@ -146,18 +201,7 @@ class PrefVal extends FeatureVal {
|
|
|
146
201
|
const gate = unite(te ? ctx.clone({ explain: ec(te, 'GATE') }) : ctx,
|
|
147
202
|
this.superpeg.clone(ctx), peer, 'pref-gate/' + this.id)
|
|
148
203
|
|
|
149
|
-
|
|
150
|
-
// itself: minting a new one every pass would keep the fixpoint
|
|
151
|
-
// moving for ever.
|
|
152
|
-
if (met.same(prefInnerPeg(this)) && gate.same(this.superpeg)) {
|
|
153
|
-
out = this
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
const stood = this.restand(met, ctx) as PrefVal
|
|
157
|
-
stood.narrowed = gate
|
|
158
|
-
stood.superpeg = gate
|
|
159
|
-
out = stood
|
|
160
|
-
}
|
|
204
|
+
out = this.stand(met, gate, ctx)
|
|
161
205
|
|
|
162
206
|
why += 'stands'
|
|
163
207
|
explainClose(te, out)
|