@@ -12,7 +12,7 @@ import scala.collection.immutable.IntMap
1212 * into the file that is later used to provide error messages.
1313 */
1414trait Expr {
15- def pos : Position
15+ var pos : Position
1616 private [sjsonnet] def tag : Byte = ExprTags .UNTAGGED
1717
1818 /** The name of this expression type to be shown in error messages */
@@ -60,26 +60,26 @@ object Expr {
6060 if (a == null ) " null" else a.mkString(" [" , " , " , " ]" )
6161 }
6262
63- final case class Self (pos : Position ) extends Expr {
63+ final case class Self (var pos : Position ) extends Expr {
6464 final override private [sjsonnet] def tag = ExprTags .Self
6565 }
66- final case class Super (pos : Position ) extends Expr {
66+ final case class Super (var pos : Position ) extends Expr {
6767 final override private [sjsonnet] def tag = ExprTags .Super
6868 }
69- final case class $ (pos : Position ) extends Expr {
69+ final case class $ (var pos : Position ) extends Expr {
7070 final override private [sjsonnet] def tag = ExprTags .`$`
7171 }
7272
73- final case class Id (pos : Position , name : String ) extends Expr {
73+ final case class Id (var pos : Position , name : String ) extends Expr {
7474 final override private [sjsonnet] def tag = ExprTags .Id
7575 override def exprErrorString : String = s " ${super .exprErrorString} $name"
7676 }
7777
78- final case class ValidId (pos : Position , name : String , nameIdx : Int ) extends Expr {
78+ final case class ValidId (var pos : Position , name : String , nameIdx : Int ) extends Expr {
7979 final override private [sjsonnet] def tag = ExprTags .ValidId
8080 override def exprErrorString : String = s " ${super .exprErrorString} $name"
8181 }
82- final case class Arr (pos : Position , value : Array [Expr ]) extends Expr {
82+ final case class Arr (var pos : Position , value : Array [Expr ]) extends Expr {
8383 final override private [sjsonnet] def tag = ExprTags .Arr
8484 override def toString : String = s " Arr( $pos, ${arrStr(value)}) "
8585 }
@@ -101,7 +101,7 @@ object Expr {
101101 case object Unhide extends Visibility
102102 }
103103 final case class Field (
104- pos : Position ,
104+ var pos : Position ,
105105 fieldName : FieldName ,
106106 plus : Boolean , // see https://jsonnet.org/ref/language.html#nested-field-inheritance
107107 args : Params ,
@@ -120,7 +120,7 @@ object Expr {
120120 override def toString : String = s " Params( ${arrStr(names)}, ${arrStr(defaultExprs)}) "
121121 }
122122
123- final case class UnaryOp (pos : Position , op : Int , value : Expr ) extends Expr {
123+ final case class UnaryOp (var pos : Position , op : Int , value : Expr ) extends Expr {
124124 final override private [sjsonnet] def tag = ExprTags .UnaryOp
125125 override def exprErrorString : String = s " ${super .exprErrorString} ${UnaryOp .name(op)}"
126126 }
@@ -132,13 +132,13 @@ object Expr {
132132 private val names = IntMap (OP_! -> " !" , OP_- -> " -" , OP_~ -> " ~" , OP_+ -> " +" )
133133 def name (op : Int ): String = names.getOrElse(op, " <unknown>" )
134134 }
135- final case class And (pos : Position , lhs : Expr , rhs : Expr ) extends Expr {
135+ final case class And (var pos : Position , lhs : Expr , rhs : Expr ) extends Expr {
136136 final override private [sjsonnet] def tag = ExprTags .And
137137 }
138- final case class Or (pos : Position , lhs : Expr , rhs : Expr ) extends Expr {
138+ final case class Or (var pos : Position , lhs : Expr , rhs : Expr ) extends Expr {
139139 final override private [sjsonnet] def tag = ExprTags .Or
140140 }
141- final case class BinaryOp (pos : Position , lhs : Expr , op : Int , rhs : Expr ) extends Expr {
141+ final case class BinaryOp (var pos : Position , lhs : Expr , op : Int , rhs : Expr ) extends Expr {
142142 final override private [sjsonnet] def tag = ExprTags .BinaryOp
143143 override def exprErrorString : String = s " ${super .exprErrorString} ${BinaryOp .name(op)}"
144144 }
@@ -185,11 +185,12 @@ object Expr {
185185 )
186186 def name (op : Int ): String = names.getOrElse(op, " <unknown>" )
187187 }
188- final case class AssertExpr (pos : Position , asserted : Member .AssertStmt , returned : Expr )
188+ final case class AssertExpr (var pos : Position , asserted : Member .AssertStmt , returned : Expr )
189189 extends Expr {
190190 final override private [sjsonnet] def tag = ExprTags .AssertExpr
191191 }
192- final case class LocalExpr (pos : Position , bindings : Array [Bind ], returned : Expr ) extends Expr {
192+ final case class LocalExpr (var pos : Position , bindings : Array [Bind ], returned : Expr )
193+ extends Expr {
193194 final override private [sjsonnet] def tag = ExprTags .LocalExpr
194195 override def toString : String = s " LocalExpr( $pos, ${arrStr(bindings)}, $returned) "
195196 override def equals (o : Any ): Boolean = o match {
@@ -202,21 +203,21 @@ object Expr {
202203 }
203204 }
204205
205- final case class Bind (pos : Position , name : String , args : Params , rhs : Expr ) extends Member
206- final case class Import (pos : Position , value : String ) extends Expr {
206+ final case class Bind (var pos : Position , name : String , args : Params , rhs : Expr ) extends Member
207+ final case class Import (var pos : Position , value : String ) extends Expr {
207208 final override private [sjsonnet] def tag = ExprTags .Import
208209 }
209- final case class ImportStr (pos : Position , value : String ) extends Expr {
210+ final case class ImportStr (var pos : Position , value : String ) extends Expr {
210211 final override private [sjsonnet] def tag = ExprTags .ImportStr
211212 }
212- final case class ImportBin (pos : Position , value : String ) extends Expr {
213+ final case class ImportBin (var pos : Position , value : String ) extends Expr {
213214 final override private [sjsonnet] def tag = ExprTags .ImportBin
214215 }
215- final case class Error (pos : Position , value : Expr ) extends Expr {
216+ final case class Error (var pos : Position , value : Expr ) extends Expr {
216217 final override private [sjsonnet] def tag = ExprTags .Error
217218 }
218219 final case class Apply (
219- pos : Position ,
220+ var pos : Position ,
220221 value : Expr ,
221222 args : Array [Expr ],
222223 namedNames : Array [String ],
@@ -225,23 +226,23 @@ object Expr {
225226 final override private [sjsonnet] def tag = ExprTags .Apply
226227 override def exprErrorString : String = Expr .callTargetName(value)
227228 }
228- final case class Apply0 (pos : Position , value : Expr , tailstrict : Boolean )
229+ final case class Apply0 (var pos : Position , value : Expr , tailstrict : Boolean )
229230 extends TailstrictableExpr {
230231 final override private [sjsonnet] def tag = ExprTags .Apply0
231232 override def exprErrorString : String = Expr .callTargetName(value)
232233 }
233- final case class Apply1 (pos : Position , value : Expr , a1 : Expr , tailstrict : Boolean )
234+ final case class Apply1 (var pos : Position , value : Expr , a1 : Expr , tailstrict : Boolean )
234235 extends TailstrictableExpr {
235236 final override private [sjsonnet] def tag = ExprTags .Apply1
236237 override def exprErrorString : String = Expr .callTargetName(value)
237238 }
238- final case class Apply2 (pos : Position , value : Expr , a1 : Expr , a2 : Expr , tailstrict : Boolean )
239+ final case class Apply2 (var pos : Position , value : Expr , a1 : Expr , a2 : Expr , tailstrict : Boolean )
239240 extends TailstrictableExpr {
240241 final override private [sjsonnet] def tag = ExprTags .Apply2
241242 override def exprErrorString : String = Expr .callTargetName(value)
242243 }
243244 final case class Apply3 (
244- pos : Position ,
245+ var pos : Position ,
245246 value : Expr ,
246247 a1 : Expr ,
247248 a2 : Expr ,
@@ -252,26 +253,30 @@ object Expr {
252253 override def exprErrorString : String = Expr .callTargetName(value)
253254 }
254255 final case class ApplyBuiltin (
255- pos : Position ,
256+ var pos : Position ,
256257 func : Val .Builtin ,
257258 argExprs : Array [Expr ],
258259 tailstrict : Boolean )
259260 extends TailstrictableExpr {
260261 final override private [sjsonnet] def tag = ExprTags .ApplyBuiltin
261262 override def exprErrorString : String = func.qualifiedName
262263 }
263- final case class ApplyBuiltin0 (pos : Position , func : Val .Builtin0 , tailstrict : Boolean )
264+ final case class ApplyBuiltin0 (var pos : Position , func : Val .Builtin0 , tailstrict : Boolean )
264265 extends TailstrictableExpr {
265266 final override private [sjsonnet] def tag = ExprTags .ApplyBuiltin0
266267 override def exprErrorString : String = func.qualifiedName
267268 }
268- final case class ApplyBuiltin1 (pos : Position , func : Val .Builtin1 , a1 : Expr , tailstrict : Boolean )
269+ final case class ApplyBuiltin1 (
270+ var pos : Position ,
271+ func : Val .Builtin1 ,
272+ a1 : Expr ,
273+ tailstrict : Boolean )
269274 extends TailstrictableExpr {
270275 final override private [sjsonnet] def tag = ExprTags .ApplyBuiltin1
271276 override def exprErrorString : String = func.qualifiedName
272277 }
273278 final case class ApplyBuiltin2 (
274- pos : Position ,
279+ var pos : Position ,
275280 func : Val .Builtin2 ,
276281 a1 : Expr ,
277282 a2 : Expr ,
@@ -281,7 +286,7 @@ object Expr {
281286 override def exprErrorString : String = func.qualifiedName
282287 }
283288 final case class ApplyBuiltin3 (
284- pos : Position ,
289+ var pos : Position ,
285290 func : Val .Builtin3 ,
286291 a1 : Expr ,
287292 a2 : Expr ,
@@ -292,7 +297,7 @@ object Expr {
292297 override def exprErrorString : String = func.qualifiedName
293298 }
294299 final case class ApplyBuiltin4 (
295- pos : Position ,
300+ var pos : Position ,
296301 func : Val .Builtin4 ,
297302 a1 : Expr ,
298303 a2 : Expr ,
@@ -303,56 +308,56 @@ object Expr {
303308 override private [sjsonnet] def tag = ExprTags .ApplyBuiltin4
304309 override def exprErrorString : String = func.qualifiedName
305310 }
306- final case class Select (pos : Position , value : Expr , name : String ) extends Expr {
311+ final case class Select (var pos : Position , value : Expr , name : String ) extends Expr {
307312 final override private [sjsonnet] def tag = ExprTags .Select
308313 override def exprErrorString : String = s " ${super .exprErrorString} $name"
309314 }
310- final case class SelectSuper (pos : Position , selfIdx : Int , name : String ) extends Expr {
315+ final case class SelectSuper (var pos : Position , selfIdx : Int , name : String ) extends Expr {
311316 final override private [sjsonnet] def tag = ExprTags .SelectSuper
312317 override def exprErrorString : String = s " ${super .exprErrorString} $name"
313318 }
314- final case class InSuper (pos : Position , value : Expr , selfIdx : Int ) extends Expr {
319+ final case class InSuper (var pos : Position , value : Expr , selfIdx : Int ) extends Expr {
315320 final override private [sjsonnet] def tag = ExprTags .InSuper
316321 }
317- final case class Lookup (pos : Position , value : Expr , index : Expr ) extends Expr {
322+ final case class Lookup (var pos : Position , value : Expr , index : Expr ) extends Expr {
318323 final override private [sjsonnet] def tag = ExprTags .Lookup
319324 }
320- final case class LookupSuper (pos : Position , selfIdx : Int , index : Expr ) extends Expr {
325+ final case class LookupSuper (var pos : Position , selfIdx : Int , index : Expr ) extends Expr {
321326 final override private [sjsonnet] def tag = ExprTags .LookupSuper
322327 }
323328 final case class Slice (
324- pos : Position ,
329+ var pos : Position ,
325330 value : Expr ,
326331 start : Option [Expr ],
327332 end : Option [Expr ],
328333 stride : Option [Expr ])
329334 extends Expr {
330335 final override private [sjsonnet] def tag = ExprTags .Slice
331336 }
332- final case class Function (pos : Position , params : Params , body : Expr ) extends Expr {
337+ final case class Function (var pos : Position , params : Params , body : Expr ) extends Expr {
333338 final override private [sjsonnet] def tag = ExprTags .Function
334339 }
335- final case class IfElse (pos : Position , cond : Expr , `then` : Expr , `else` : Expr ) extends Expr {
340+ final case class IfElse (var pos : Position , cond : Expr , `then` : Expr , `else` : Expr ) extends Expr {
336341 final override private [sjsonnet] def tag = ExprTags .IfElse
337342 }
338343
339344 sealed trait CompSpec extends Expr
340- final case class IfSpec (pos : Position , cond : Expr ) extends CompSpec
341- final case class ForSpec (pos : Position , name : String , cond : Expr ) extends CompSpec
345+ final case class IfSpec (var pos : Position , cond : Expr ) extends CompSpec
346+ final case class ForSpec (var pos : Position , name : String , cond : Expr ) extends CompSpec
342347
343- final case class Comp (pos : Position , value : Expr , first : ForSpec , rest : Array [CompSpec ])
348+ final case class Comp (var pos : Position , value : Expr , first : ForSpec , rest : Array [CompSpec ])
344349 extends Expr {
345350 final override private [sjsonnet] def tag = ExprTags .Comp
346351 override def exprErrorString : String = " array comprehension"
347352 }
348- final case class ObjExtend (pos : Position , base : Expr , ext : ObjBody ) extends Expr {
353+ final case class ObjExtend (var pos : Position , base : Expr , ext : ObjBody ) extends Expr {
349354 final override private [sjsonnet] def tag = ExprTags .ObjExtend
350355 }
351356
352357 trait ObjBody extends Expr
353358 object ObjBody {
354359 final case class MemberList (
355- pos : Position ,
360+ var pos : Position ,
356361 binds : Array [Bind ],
357362 fields : Array [Member .Field ],
358363 asserts : Array [Member .AssertStmt ])
@@ -362,7 +367,7 @@ object Expr {
362367 s " MemberList( $pos, ${arrStr(binds)}, ${arrStr(fields)}, ${arrStr(asserts)}) "
363368 }
364369 final case class ObjComp (
365- pos : Position ,
370+ var pos : Position ,
366371 preLocals : Array [Bind ],
367372 key : Expr ,
368373 value : Expr ,
0 commit comments