aontu 0.40.0 → 0.42.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.
Files changed (99) hide show
  1. package/dist/aontu.js +7 -0
  2. package/dist/aontu.js.map +1 -1
  3. package/dist/ctx.d.ts +14 -2
  4. package/dist/ctx.js +56 -9
  5. package/dist/ctx.js.map +1 -1
  6. package/dist/err.js +36 -15
  7. package/dist/err.js.map +1 -1
  8. package/dist/lang.d.ts +5 -1
  9. package/dist/lang.js +100 -24
  10. package/dist/lang.js.map +1 -1
  11. package/dist/tsconfig.tsbuildinfo +1 -1
  12. package/dist/type.d.ts +5 -0
  13. package/dist/type.js.map +1 -1
  14. package/dist/unify.js +372 -55
  15. package/dist/unify.js.map +1 -1
  16. package/dist/utility.js +6 -2
  17. package/dist/utility.js.map +1 -1
  18. package/dist/val/BagVal.d.ts +0 -3
  19. package/dist/val/BagVal.js +6 -6
  20. package/dist/val/BagVal.js.map +1 -1
  21. package/dist/val/ConjunctVal.d.ts +1 -1
  22. package/dist/val/ConjunctVal.js +138 -15
  23. package/dist/val/ConjunctVal.js.map +1 -1
  24. package/dist/val/CopyFuncVal.js +3 -2
  25. package/dist/val/CopyFuncVal.js.map +1 -1
  26. package/dist/val/DisjunctVal.js +40 -10
  27. package/dist/val/DisjunctVal.js.map +1 -1
  28. package/dist/val/ExpectVal.js +17 -4
  29. package/dist/val/ExpectVal.js.map +1 -1
  30. package/dist/val/FuncBaseVal.js +2 -2
  31. package/dist/val/FuncBaseVal.js.map +1 -1
  32. package/dist/val/IntegerVal.js +1 -1
  33. package/dist/val/IntegerVal.js.map +1 -1
  34. package/dist/val/JunctionVal.d.ts +1 -0
  35. package/dist/val/JunctionVal.js +6 -1
  36. package/dist/val/JunctionVal.js.map +1 -1
  37. package/dist/val/KeyFuncVal.js +0 -2
  38. package/dist/val/KeyFuncVal.js.map +1 -1
  39. package/dist/val/ListVal.d.ts +1 -0
  40. package/dist/val/ListVal.js +36 -65
  41. package/dist/val/ListVal.js.map +1 -1
  42. package/dist/val/MapVal.d.ts +3 -2
  43. package/dist/val/MapVal.js +71 -91
  44. package/dist/val/MapVal.js.map +1 -1
  45. package/dist/val/MoveFuncVal.d.ts +2 -1
  46. package/dist/val/MoveFuncVal.js +78 -13
  47. package/dist/val/MoveFuncVal.js.map +1 -1
  48. package/dist/val/NilVal.d.ts +2 -1
  49. package/dist/val/NilVal.js +15 -1
  50. package/dist/val/NilVal.js.map +1 -1
  51. package/dist/val/OpBaseVal.js +1 -1
  52. package/dist/val/OpBaseVal.js.map +1 -1
  53. package/dist/val/PathFuncVal.js +25 -4
  54. package/dist/val/PathFuncVal.js.map +1 -1
  55. package/dist/val/{RefVal.d.ts → PathVal.d.ts} +4 -3
  56. package/dist/val/{RefVal.js → PathVal.js} +75 -77
  57. package/dist/val/PathVal.js.map +1 -0
  58. package/dist/val/PlusOpVal.d.ts +1 -1
  59. package/dist/val/PrefVal.js +20 -7
  60. package/dist/val/PrefVal.js.map +1 -1
  61. package/dist/val/SpreadVal.d.ts +20 -0
  62. package/dist/val/SpreadVal.js +194 -0
  63. package/dist/val/SpreadVal.js.map +1 -0
  64. package/dist/val/Val.d.ts +4 -1
  65. package/dist/val/Val.js +88 -44
  66. package/dist/val/Val.js.map +1 -1
  67. package/dist/val/VarVal.js +3 -3
  68. package/dist/val/VarVal.js.map +1 -1
  69. package/package.json +6 -7
  70. package/src/aontu.ts +9 -1
  71. package/src/ctx.ts +95 -11
  72. package/src/err.ts +37 -17
  73. package/src/lang.ts +113 -23
  74. package/src/tsconfig.json +2 -1
  75. package/src/type.ts +5 -0
  76. package/src/unify.ts +390 -64
  77. package/src/utility.ts +5 -2
  78. package/src/val/BagVal.ts +6 -7
  79. package/src/val/ConjunctVal.ts +133 -15
  80. package/src/val/CopyFuncVal.ts +3 -2
  81. package/src/val/DisjunctVal.ts +43 -11
  82. package/src/val/ExpectVal.ts +19 -5
  83. package/src/val/FuncBaseVal.ts +2 -2
  84. package/src/val/IntegerVal.ts +1 -1
  85. package/src/val/JunctionVal.ts +5 -1
  86. package/src/val/KeyFuncVal.ts +0 -3
  87. package/src/val/ListVal.ts +40 -86
  88. package/src/val/MapVal.ts +78 -119
  89. package/src/val/MoveFuncVal.ts +79 -14
  90. package/src/val/NilVal.ts +17 -1
  91. package/src/val/OpBaseVal.ts +1 -1
  92. package/src/val/PathFuncVal.ts +29 -4
  93. package/src/val/PathVal.ts +435 -0
  94. package/src/val/PrefVal.ts +21 -8
  95. package/src/val/{RefVal.ts → RefVal.ts.old} +31 -20
  96. package/src/val/SpreadVal.ts +275 -0
  97. package/src/val/Val.ts +141 -50
  98. package/src/val/VarVal.ts +3 -3
  99. package/dist/val/RefVal.js.map +0 -1
@@ -0,0 +1,275 @@
1
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
2
+
3
+ // SpreadVal represents a spread constraint (&:{...}).
4
+ // It owns all spread application logic — MapVal and ListVal know
5
+ // nothing about spreads. A parsed `{a:1, &:{x:2}}` becomes
6
+ // `ConjunctVal([MapVal({a:1}), SpreadVal({x:2})])`.
7
+ //
8
+ // SpreadVal.unify applies the constraint to a peer MapVal/ListVal
9
+ // by unifying each of the peer's children with a per-key clone of
10
+ // the spread constraint.
11
+
12
+ import type {
13
+ Val,
14
+ ValSpec,
15
+ } from '../type'
16
+
17
+ import {
18
+ DONE,
19
+ } from '../type'
20
+
21
+ import { AontuContext } from '../ctx'
22
+ import { unite } from '../unify'
23
+
24
+ import {
25
+ propagateMarks,
26
+ walk,
27
+ explainOpen,
28
+ ec,
29
+ explainClose,
30
+ } from '../utility'
31
+
32
+ import { makeNilErr } from '../err'
33
+
34
+ import {
35
+ top
36
+ } from './top'
37
+
38
+ import { FeatureVal } from './FeatureVal'
39
+ import { ConjunctVal } from './ConjunctVal'
40
+ import { NilVal } from './NilVal'
41
+ import { MapVal } from './MapVal'
42
+ import { ListVal } from './ListVal'
43
+
44
+
45
+ class SpreadVal extends FeatureVal {
46
+ isSpread = true
47
+ isGenable = true
48
+ cjo = 110000 // Sorts after MapVal/ListVal in ConjunctVal norm
49
+
50
+ constructor(spec: ValSpec, ctx?: AontuContext) {
51
+ super(spec, ctx)
52
+ }
53
+
54
+
55
+ unify(peer: Val, ctx: AontuContext): Val {
56
+ peer = peer ?? top()
57
+
58
+ const te = ctx.explain && explainOpen(ctx, ctx.explain, 'Spread', this, peer)
59
+
60
+ let out: Val
61
+
62
+ if (peer.isTop) {
63
+ // Self-unify: spread is a constraint, not a value that converges.
64
+ // Mark done to prevent fixpoint cycling.
65
+ out = this
66
+ out.dc = DONE
67
+ }
68
+ else if ((peer as any).isSpread) {
69
+ // SpreadVal + SpreadVal: unify the two constraints
70
+ const merged = unite(
71
+ te ? ctx.clone({ explain: ec(te, 'SPR') }) : ctx,
72
+ this.peg, peer.peg, 'spread-merge')
73
+ out = new SpreadVal({ peg: merged }, ctx)
74
+ out.dc = merged.done ? DONE : this.dc + 1
75
+ }
76
+ else if (peer.isMap) {
77
+ // SpreadVal + MapVal: apply spread to each map key
78
+ out = this.applyToMap(peer as any, ctx, te)
79
+ }
80
+ else if (peer.isList) {
81
+ // SpreadVal + ListVal: apply spread to each list element
82
+ out = this.applyToList(peer as any, ctx, te)
83
+ }
84
+ else if (peer.isConjunct) {
85
+ // SpreadVal + ConjunctVal: unify with the conjunct.
86
+ // The conjunct fold will place us last (high cjo).
87
+ out = peer.unify(this, te ? ctx.clone({ explain: ec(te, 'SCJ') }) : ctx)
88
+ }
89
+ else {
90
+ // SpreadVal + other: defer by wrapping in ConjunctVal
91
+ out = new ConjunctVal({ peg: [peer, this] }, ctx)
92
+ out.dc = this.dc + 1
93
+ }
94
+
95
+ // Track unresolved spread count.
96
+ // cc=0: increment for spreads that don't vanish.
97
+ // cc>0: decrement when a spread vanishes.
98
+ if (0 === ctx.cc) {
99
+ if (out.isSpread && !out.done) {
100
+ ctx.sc++
101
+ }
102
+ }
103
+ else if (ctx.sc > 0) {
104
+ if (!(out.isSpread && !out.done)) {
105
+ ctx.sc--
106
+ }
107
+ }
108
+
109
+ ctx.explain && explainClose(te, out)
110
+ return out
111
+ }
112
+
113
+
114
+ // Apply this spread constraint to each key in a MapVal.
115
+ // Uses unite() per key with the correct descended context.
116
+ applyToMap(map: MapVal, ctx: AontuContext, te: any): Val {
117
+ const spread = this.peg
118
+
119
+ const mapKeys = Object.keys(map.peg)
120
+
121
+ // If map has no keys, preserve the spread for future merges.
122
+ // Mark as DONE to prevent fixpoint cycling.
123
+ if (mapKeys.length === 0) {
124
+ const out = new ConjunctVal({ peg: [map, this] }, ctx)
125
+ out.dc = DONE
126
+ return out
127
+ }
128
+
129
+ const out = new MapVal({ peg: {} }, ctx)
130
+ out.closed = map.closed
131
+ out.optionalKeys = 0 < map.optionalKeys.length
132
+ ? [...map.optionalKeys] : map.optionalKeys
133
+ out.site = map.site
134
+
135
+ let done = true
136
+
137
+ for (const key of mapKeys) {
138
+ const child = map.peg[key]
139
+ const keyctx = ctx.descend(key)
140
+ // Clone the spread for this key's context, then resolve any
141
+ // path-dependent functions (key(), path(), etc.) by unifying
142
+ // with TOP. This ensures the spread values are concrete before
143
+ // being merged as peer keys into the child map.
144
+ let key_spread = spread.spreadClone(keyctx)
145
+ if (!key_spread.done) {
146
+ key_spread = unite(keyctx, key_spread, top(), 'spread-resolve')
147
+ }
148
+
149
+ // Clear type marks on the spread constraint root and its
150
+ // direct children — type() constrains but should not mark
151
+ // children as type-invisible.
152
+ key_spread.mark.type = false
153
+ key_spread.mark.hide = false
154
+ if (key_spread.isMap) {
155
+ for (const k in key_spread.peg) {
156
+ if (key_spread.peg[k]?.isVal) {
157
+ key_spread.peg[k].mark.type = false
158
+ }
159
+ }
160
+ }
161
+
162
+ propagateMarks(map, child)
163
+
164
+ out.peg[key] =
165
+ undefined === child ? key_spread :
166
+ child.isNil ? child :
167
+ key_spread.isNil ? key_spread :
168
+ key_spread.isTop && child.done ? child :
169
+ child.isTop && key_spread.done ? key_spread :
170
+ unite(te ? keyctx.clone({ explain: ec(te, 'SK:' + key) }) : keyctx,
171
+ child, key_spread, 'spread-apply')
172
+
173
+ done = done && (DONE === out.peg[key].dc)
174
+ }
175
+
176
+ out.dc = done ? DONE : map.dc + 1
177
+
178
+ propagateMarks(map, out)
179
+ // NOTE: do not propagate type/hide marks from the spread constraint
180
+ // to the output — a type spread constrains children but doesn't
181
+ // make them type-invisible.
182
+
183
+ return out
184
+ }
185
+
186
+
187
+ // Apply this spread constraint to each element in a ListVal.
188
+ applyToList(list: ListVal, ctx: AontuContext, te: any): Val {
189
+ const spread = this.peg
190
+
191
+ const listKeys = Object.keys(list.peg)
192
+
193
+ if (listKeys.length === 0) {
194
+ const out = new ConjunctVal({ peg: [list, this] }, ctx)
195
+ out.dc = DONE
196
+ return out
197
+ }
198
+
199
+ const out = new ListVal({ peg: [] }, ctx)
200
+ out.closed = list.closed
201
+ out.optionalKeys = 0 < list.optionalKeys.length
202
+ ? [...list.optionalKeys] : list.optionalKeys
203
+ out.site = list.site
204
+
205
+ let done = true
206
+
207
+ for (const key of listKeys) {
208
+ const child = list.peg[key]
209
+ const keyctx = ctx.descend(key)
210
+ const key_spread = spread.spreadClone(keyctx)
211
+
212
+ propagateMarks(list, child)
213
+
214
+ out.peg[key as any] =
215
+ undefined === child ? key_spread :
216
+ child.isNil ? child :
217
+ key_spread.isNil ? key_spread :
218
+ key_spread.isTop && child.done ? child :
219
+ child.isTop && key_spread.done ? key_spread :
220
+ unite(te ? keyctx.clone({ explain: ec(te, 'SL:' + key) }) : keyctx,
221
+ child, key_spread, 'spread-apply-list')
222
+
223
+ done = done && (DONE === out.peg[key as any]?.dc)
224
+ }
225
+
226
+ out.dc = done ? DONE : list.dc + 1
227
+
228
+ propagateMarks(list, out)
229
+
230
+ return out
231
+ }
232
+
233
+
234
+ clone(ctx: AontuContext, spec?: ValSpec): Val {
235
+ const out = new SpreadVal({
236
+ peg: this.peg.clone(ctx, spec),
237
+ ...(spec || {}),
238
+ }, ctx)
239
+ out.dc = this.done ? DONE : out.dc
240
+ out.site = this.site
241
+ return out
242
+ }
243
+
244
+
245
+ spreadClone(ctx: AontuContext): Val {
246
+ if (!this.isPathDependent) return this
247
+ return this.clone(ctx)
248
+ }
249
+
250
+
251
+ get canon(): string {
252
+ // Use {&:...} for map spreads, [&:...] for list spreads, {&:X} for scalars
253
+ const pc = this.peg.canon
254
+ if (this.peg.isMap) return '{&:' + pc.slice(1, -1) + '}' // {&:k:v,...}
255
+ if (this.peg.isList) return '[&:' + pc.slice(1, -1) + ']' // [&:v,...]
256
+ return '{&:' + pc + '}'
257
+ }
258
+
259
+
260
+ gen(_ctx: AontuContext) {
261
+ // Unresolved spread (never applied to a map/list) generates
262
+ // as undefined — the spread is a constraint, not a value.
263
+ return undefined
264
+ }
265
+
266
+
267
+ inspection() {
268
+ return 'spread'
269
+ }
270
+ }
271
+
272
+
273
+ export {
274
+ SpreadVal,
275
+ }
package/src/val/Val.ts CHANGED
@@ -58,47 +58,51 @@ let ID = 1000
58
58
 
59
59
 
60
60
  abstract class Val {
61
- isVal = true
62
-
63
- isTop = false
64
- isNil = false
65
- isMap = false
66
- isList = false
67
- isScalar = false
68
- isScalarKind = false
69
- isRef = false
70
- isPref = false
71
- isVar = false
72
- isBag = false
73
- isNumber = false
74
- isInteger = false
75
- isString = false
76
- isBoolean = false
77
- isConjunct = false
78
- isDisjunct = false
79
- isJunction = false
61
+ // Type-discriminator flags: defaults live on Val.prototype (see
62
+ // bottom of this file). Each subclass overrides only its own
63
+ // discriminator(s), so a plain Val instance writes zero flags.
64
+ declare isVal: boolean
65
+
66
+ declare isTop: boolean
67
+ declare isNil: boolean
68
+ declare isMap: boolean
69
+ declare isList: boolean
70
+ declare isScalar: boolean
71
+ declare isScalarKind: boolean
72
+ declare isPath: boolean
73
+ declare isPref: boolean
74
+ declare isVar: boolean
75
+ declare isBag: boolean
76
+ declare isSpread: boolean
77
+ declare isNumber: boolean
78
+ declare isInteger: boolean
79
+ declare isString: boolean
80
+ declare isBoolean: boolean
81
+ declare isConjunct: boolean
82
+ declare isDisjunct: boolean
83
+ declare isJunction: boolean
80
84
 
81
85
  // Conjunct sort order. Lower values sort first in norm().
82
- cjo = 99999
83
-
84
- isOp = false
85
- isPlusOp = false
86
-
87
- isFunc = false
88
- isCloseFunc = false
89
- isCopyFunc = false
90
- isHideFunc = false
91
- isMoveFunc = false
92
- isKeyFunc = false
93
- isLowerFunc = false
94
- isOpenFunc = false
95
- isPathFunc = false
96
- isPrefFunc = false
97
- isSuperFunc = false
98
- isTypeFunc = false
99
- isUpperFunc = false
100
-
101
- isGenable = false
86
+ declare cjo: number
87
+
88
+ declare isOp: boolean
89
+ declare isPlusOp: boolean
90
+
91
+ declare isFunc: boolean
92
+ declare isCloseFunc: boolean
93
+ declare isCopyFunc: boolean
94
+ declare isHideFunc: boolean
95
+ declare isMoveFunc: boolean
96
+ declare isKeyFunc: boolean
97
+ declare isLowerFunc: boolean
98
+ declare isOpenFunc: boolean
99
+ declare isPathFunc: boolean
100
+ declare isPrefFunc: boolean
101
+ declare isSuperFunc: boolean
102
+ declare isTypeFunc: boolean
103
+ declare isUpperFunc: boolean
104
+
105
+ declare isGenable: boolean
102
106
 
103
107
  id: number
104
108
  dc: number = 0
@@ -147,11 +151,16 @@ abstract class Val {
147
151
 
148
152
  if (Array.isArray(this.peg)) {
149
153
  let spread = (this.peg as any)[SPREAD]
150
- this.peg = this.peg.filter(n => undefined !== n)
151
- ; (this.peg as any)[SPREAD] = spread
154
+ if (this.peg.includes(undefined)) {
155
+ this.peg = this.peg.filter(n => undefined !== n)
156
+ }
157
+ ;(this.peg as any)[SPREAD] = spread
152
158
  }
153
159
 
154
- this.path = ctx?.path || []
160
+ // spec.path takes precedence over ctx.path: lets callers (notably
161
+ // Val.clone) specify the target path without paying for a full
162
+ // ctx.clone just to carry it.
163
+ this.path = spec?.path ?? ctx?.path ?? []
155
164
 
156
165
  // TODO: make this work
157
166
  // this.id = spec?.id ?? (ctx ? ++ctx.vc : ++ID)
@@ -180,27 +189,26 @@ abstract class Val {
180
189
 
181
190
 
182
191
  clone(ctx: AontuContext, spec?: ValSpec): Val {
183
- let cloneCtx
184
-
185
192
  let path = spec?.path
186
193
  if (null == path) {
187
194
  let cut = this.path.indexOf('&')
188
195
  cut = -1 < cut ? cut + 1 : ctx.path.length
189
196
  path = ctx.path.concat(this.path.slice(cut))
190
197
  }
191
- // console.log('CLONE', path, this.canon)
192
- // console.trace()
193
-
194
- cloneCtx = ctx.clone({ path })
195
198
 
199
+ // Carry the target path via the spec instead of cloning ctx just
200
+ // to hold it: the Val constructor now reads spec.path first. This
201
+ // saves ~120k ctx.clone calls (two Object.create each) on a
202
+ // foo-sdk-sized model.
196
203
  let fullspec = {
197
204
  peg: this.peg,
198
205
  mark: { type: this.mark.type, hide: this.mark.hide },
199
- ...(spec ?? {})
206
+ ...(spec ?? {}),
207
+ path,
200
208
  }
201
209
 
202
210
  let out = new (this as any)
203
- .constructor(fullspec, cloneCtx)
211
+ .constructor(fullspec, ctx)
204
212
 
205
213
  out.dc = this.done ? DONE : out.dc
206
214
 
@@ -224,6 +232,38 @@ abstract class Val {
224
232
  }
225
233
 
226
234
 
235
+ // True if this Val's unification result depends on its own `path`
236
+ // — i.e. the tree contains a RefVal, KeyFuncVal, PathFuncVal,
237
+ // MoveFuncVal, or SuperFuncVal. Used by MapVal/ListVal.spreadClone
238
+ // to share the spread constraint across keys when it's safe.
239
+ // Lazy + cached: the answer is a function of the Val's immutable
240
+ // structure, so we compute once per Val.
241
+ _isPathDependent?: boolean
242
+ get isPathDependent(): boolean {
243
+ if (this._isPathDependent !== undefined) return this._isPathDependent
244
+ let dep =
245
+ this.isPath || this.isKeyFunc || this.isPathFunc ||
246
+ this.isMoveFunc || this.isSuperFunc
247
+ if (!dep) {
248
+ const peg = this.peg
249
+ if (Array.isArray(peg)) {
250
+ for (let i = 0; i < peg.length; i++) {
251
+ const c = peg[i]
252
+ if (c && c.isVal && c.isPathDependent) { dep = true; break }
253
+ }
254
+ }
255
+ else if (peg != null && typeof peg === 'object') {
256
+ for (const k in peg) {
257
+ const c = (peg as any)[k]
258
+ if (c && c.isVal && c.isPathDependent) { dep = true; break }
259
+ }
260
+ }
261
+ }
262
+ this._isPathDependent = dep
263
+ return dep
264
+ }
265
+
266
+
227
267
  place(v: Val) {
228
268
  v.site.row = this.site.row
229
269
  v.site.col = this.site.col
@@ -311,6 +351,57 @@ abstract class Val {
311
351
  }
312
352
 
313
353
 
354
+ // Prototype-level defaults for Val's type-discriminator flags.
355
+ // Keeping these on the prototype (instead of per-instance class-field
356
+ // initializers) removes ~35 property writes from every Val construction
357
+ // and eliminates the corresponding hidden-class transitions. Subclasses
358
+ // override only the flags that differ, via their own class-field
359
+ // initializers (e.g. `MapVal.isMap = true`).
360
+ Object.assign(Val.prototype, {
361
+ isVal: true,
362
+
363
+ isTop: false,
364
+ isNil: false,
365
+ isMap: false,
366
+ isList: false,
367
+ isScalar: false,
368
+ isScalarKind: false,
369
+ isPath: false,
370
+ isPref: false,
371
+ isVar: false,
372
+ isBag: false,
373
+ isSpread: false,
374
+ isNumber: false,
375
+ isInteger: false,
376
+ isString: false,
377
+ isBoolean: false,
378
+ isConjunct: false,
379
+ isDisjunct: false,
380
+ isJunction: false,
381
+
382
+ cjo: 99999,
383
+
384
+ isOp: false,
385
+ isPlusOp: false,
386
+
387
+ isFunc: false,
388
+ isCloseFunc: false,
389
+ isCopyFunc: false,
390
+ isHideFunc: false,
391
+ isMoveFunc: false,
392
+ isKeyFunc: false,
393
+ isLowerFunc: false,
394
+ isOpenFunc: false,
395
+ isPathFunc: false,
396
+ isPrefFunc: false,
397
+ isSuperFunc: false,
398
+ isTypeFunc: false,
399
+ isUpperFunc: false,
400
+
401
+ isGenable: false,
402
+ })
403
+
404
+
314
405
  function inspectpeg(peg: any, d: number) {
315
406
  const indent = ' '.repeat(d)
316
407
  return pretty(Array.isArray(peg) ?
package/src/val/VarVal.ts CHANGED
@@ -62,12 +62,12 @@ class VarVal extends FeatureVal {
62
62
  if (this.peg.isVal) {
63
63
  // $.a.b.c - convert path to absolute
64
64
  // if (this.peg instanceof RefVal) {
65
- if (this.peg.isRef) {
65
+ if (this.peg.isPath) {
66
66
  this.peg.absolute = true
67
67
  nameVal = this.peg
68
68
  }
69
69
  else {
70
- nameVal = this.peg.unify(peer, ctx.clone({ explain: ec(te, 'PEG') }))
70
+ nameVal = this.peg.unify(peer, te ? ctx.clone({ explain: ec(te, 'PEG') }) : ctx)
71
71
  }
72
72
  }
73
73
  else {
@@ -76,7 +76,7 @@ class VarVal extends FeatureVal {
76
76
  }
77
77
 
78
78
  // if (!(nameVal instanceof RefVal) && DONE === nameVal.dc) {
79
- if (!(nameVal.isRef) && DONE === nameVal.dc) {
79
+ if (!(nameVal.isPath) && DONE === nameVal.dc) {
80
80
  if (nameVal instanceof StringVal) {
81
81
  let found = ctx.vars[nameVal.peg]
82
82
  if (undefined === found) {
@@ -1 +0,0 @@
1
- {"version":3,"file":"RefVal.js","sourceRoot":"","sources":["../../src/val/RefVal.ts"],"names":[],"mappings":"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"}