@@ -17,6 +17,7 @@ import * as ir from './quintIr'
17
17
import * as t from './quintTypes'
18
18
import { unreachable } from '../util'
19
19
import { LookupDefinition } from '../names/base'
20
+ import cloneDeep from 'lodash.clonedeep'
20
21
21
22
export class IRTransformer {
22
23
enterModule ?: ( module : ir . QuintModule ) => ir . QuintModule
@@ -111,7 +112,7 @@ export class IRTransformer {
111
112
* @returns the tranformed Quint module
112
113
*/
113
114
export function transformModule ( transformer : IRTransformer , quintModule : ir . QuintModule ) : ir . QuintModule {
114
- let newModule = { ... quintModule }
115
+ let newModule = cloneDeep ( quintModule )
115
116
116
117
if ( transformer . enterModule ) {
117
118
newModule = transformer . enterModule ( newModule )
@@ -136,7 +137,7 @@ export function transformModule(transformer: IRTransformer, quintModule: ir.Quin
136
137
* @returns the transformed Quint type
137
138
*/
138
139
export function transformType ( transformer : IRTransformer , type : t . QuintType ) : t . QuintType {
139
- let newType = { ... type }
140
+ let newType = cloneDeep ( type )
140
141
if ( transformer . enterType ) {
141
142
newType = transformer . enterType ( newType )
142
143
}
@@ -317,7 +318,7 @@ export function transformLookupDefinition(transformer: IRTransformer, lud: Looku
317
318
* @returns the transformed Quint definition
318
319
*/
319
320
export function transformDeclaration ( transformer : IRTransformer , decl : ir . QuintDeclaration ) : ir . QuintDeclaration {
320
- let newDecl = { ... decl }
321
+ let newDecl = cloneDeep ( decl )
321
322
if ( transformer . enterDecl ) {
322
323
newDecl = transformer . enterDecl ( newDecl )
323
324
}
@@ -375,7 +376,7 @@ export function transformDeclaration(transformer: IRTransformer, decl: ir.QuintD
375
376
* @returns the transformed Quint definition
376
377
*/
377
378
export function transformDefinition ( transformer : IRTransformer , def : ir . QuintDef ) : ir . QuintDef {
378
- let newDef = { ... def }
379
+ let newDef = cloneDeep ( def )
379
380
if ( transformer . enterDef ) {
380
381
newDef = transformer . enterDef ( newDef )
381
382
}
@@ -450,7 +451,7 @@ export function transformDefinition(transformer: IRTransformer, def: ir.QuintDef
450
451
* @returns the transformed Quint expression
451
452
*/
452
453
function transformExpression ( transformer : IRTransformer , expr : ir . QuintEx ) : ir . QuintEx {
453
- let newExpr = { ... expr }
454
+ let newExpr = cloneDeep ( expr )
454
455
if ( transformer . enterExpr ) {
455
456
newExpr = transformer . enterExpr ( newExpr )
456
457
}
@@ -542,7 +543,7 @@ function transformExpression(transformer: IRTransformer, expr: ir.QuintEx): ir.Q
542
543
* @returns the transformed Quint row
543
544
*/
544
545
export function transformRow ( transformer : IRTransformer , row : t . Row ) : t . Row {
545
- let newRow = row
546
+ let newRow = cloneDeep ( row )
546
547
if ( transformer . enterRow ) {
547
548
newRow = transformer . enterRow ( newRow )
548
549
}
0 commit comments