Skip to content

Commit b9dee7f

Browse files
committed
Extract SymbolRemapper interface for DeepCopy customization
1 parent 5f57368 commit b9dee7f

File tree

3 files changed

+98
-57
lines changed

3 files changed

+98
-57
lines changed

compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ inline fun <reified T : IrElement> T.deepCopyWithSymbols(): T {
3636
}
3737

3838

39-
class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRemapper) : IrElementTransformerVoid() {
39+
class DeepCopyIrTreeWithSymbols(private val symbolRemapper: SymbolRemapper) : IrElementTransformerVoid() {
4040
private fun mapDeclarationOrigin(origin: IrDeclarationOrigin) = origin
4141
private fun mapStatementOrigin(origin: IrStatementOrigin?) = origin
4242

@@ -64,15 +64,15 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
6464

6565
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): IrExternalPackageFragment =
6666
IrExternalPackageFragmentImpl(
67-
symbolsRemapper.getDeclaredExternalPackageFragment(declaration.symbol)
67+
symbolRemapper.getDeclaredExternalPackageFragment(declaration.symbol)
6868
).apply {
6969
declaration.transformDeclarationsTo(this)
7070
}
7171

7272
override fun visitFile(declaration: IrFile): IrFile =
7373
IrFileImpl(
7474
declaration.fileEntry,
75-
symbolsRemapper.getDeclaredFile(declaration.symbol)
75+
symbolRemapper.getDeclaredFile(declaration.symbol)
7676
).apply {
7777
fileAnnotations.addAll(declaration.fileAnnotations)
7878
declaration.transformDeclarationsTo(this)
@@ -85,7 +85,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
8585
IrClassImpl(
8686
declaration.startOffset, declaration.endOffset,
8787
mapDeclarationOrigin(declaration.origin),
88-
symbolsRemapper.getDeclaredClass(declaration.symbol)
88+
symbolRemapper.getDeclaredClass(declaration.symbol)
8989
).apply {
9090
thisReceiver = declaration.thisReceiver?.transform()
9191
declaration.typeParameters.transformTo(typeParameters)
@@ -103,7 +103,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
103103
IrFunctionImpl(
104104
declaration.startOffset, declaration.endOffset,
105105
mapDeclarationOrigin(declaration.origin),
106-
symbolsRemapper.getDeclaredFunction(declaration.symbol)
106+
symbolRemapper.getDeclaredFunction(declaration.symbol)
107107
).apply {
108108
transformFunctionChildren(declaration)
109109
}
@@ -112,7 +112,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
112112
IrConstructorImpl(
113113
declaration.startOffset, declaration.endOffset,
114114
mapDeclarationOrigin(declaration.origin),
115-
symbolsRemapper.getDeclaredConstructor(declaration.symbol)
115+
symbolRemapper.getDeclaredConstructor(declaration.symbol)
116116
).apply {
117117
transformFunctionChildren(declaration)
118118
}
@@ -141,7 +141,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
141141
IrFieldImpl(
142142
declaration.startOffset, declaration.endOffset,
143143
mapDeclarationOrigin(declaration.origin),
144-
symbolsRemapper.getDeclaredField(declaration.symbol)
144+
symbolRemapper.getDeclaredField(declaration.symbol)
145145
).apply {
146146
initializer = declaration.initializer?.transform()
147147
}
@@ -160,7 +160,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
160160
IrEnumEntryImpl(
161161
declaration.startOffset, declaration.endOffset,
162162
mapDeclarationOrigin(declaration.origin),
163-
symbolsRemapper.getDeclaredEnumEntry(declaration.symbol)
163+
symbolRemapper.getDeclaredEnumEntry(declaration.symbol)
164164
).apply {
165165
correspondingClass = declaration.correspondingClass?.transform()
166166
initializerExpression = declaration.initializerExpression?.transform()
@@ -179,7 +179,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
179179
IrVariableImpl(
180180
declaration.startOffset, declaration.endOffset,
181181
mapDeclarationOrigin(declaration.origin),
182-
symbolsRemapper.getDeclaredVariable(declaration.symbol)
182+
symbolRemapper.getDeclaredVariable(declaration.symbol)
183183
).apply {
184184
initializer = declaration.initializer?.transform()
185185
}
@@ -188,14 +188,14 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
188188
IrTypeParameterImpl(
189189
declaration.startOffset, declaration.endOffset,
190190
mapDeclarationOrigin(declaration.origin),
191-
symbolsRemapper.getDeclaredTypeParameter(declaration.symbol)
191+
symbolRemapper.getDeclaredTypeParameter(declaration.symbol)
192192
)
193193

194194
override fun visitValueParameter(declaration: IrValueParameter): IrValueParameter =
195195
IrValueParameterImpl(
196196
declaration.startOffset, declaration.endOffset,
197197
mapDeclarationOrigin(declaration.origin),
198-
symbolsRemapper.getDeclaredValueParameter(declaration.symbol)
198+
symbolRemapper.getDeclaredValueParameter(declaration.symbol)
199199
).apply {
200200
defaultValue = declaration.defaultValue?.transform()
201201
}
@@ -261,48 +261,48 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
261261
IrGetObjectValueImpl(
262262
expression.startOffset, expression.endOffset,
263263
expression.type,
264-
symbolsRemapper.getReferencedClass(expression.symbol)
264+
symbolRemapper.getReferencedClass(expression.symbol)
265265
)
266266

267267
override fun visitGetEnumValue(expression: IrGetEnumValue): IrGetEnumValue =
268268
IrGetEnumValueImpl(
269269
expression.startOffset, expression.endOffset,
270270
expression.type,
271-
symbolsRemapper.getReferencedEnumEntry(expression.symbol)
271+
symbolRemapper.getReferencedEnumEntry(expression.symbol)
272272
)
273273

274274
override fun visitGetValue(expression: IrGetValue): IrGetValue =
275275
IrGetValueImpl(
276276
expression.startOffset, expression.endOffset,
277-
symbolsRemapper.getReferencedValue(expression.symbol),
277+
symbolRemapper.getReferencedValue(expression.symbol),
278278
mapStatementOrigin(expression.origin)
279279
)
280280

281281
override fun visitSetVariable(expression: IrSetVariable): IrSetVariable =
282282
IrSetVariableImpl(
283283
expression.startOffset, expression.endOffset,
284-
symbolsRemapper.getReferencedVariable(expression.symbol),
284+
symbolRemapper.getReferencedVariable(expression.symbol),
285285
expression.value.transform(),
286286
mapStatementOrigin(expression.origin)
287287
)
288288

289289
override fun visitGetField(expression: IrGetField): IrGetField =
290290
IrGetFieldImpl(
291291
expression.startOffset, expression.endOffset,
292-
symbolsRemapper.getReferencedField(expression.symbol),
292+
symbolRemapper.getReferencedField(expression.symbol),
293293
expression.receiver?.transform(),
294294
mapStatementOrigin(expression.origin),
295-
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
295+
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
296296
)
297297

298298
override fun visitSetField(expression: IrSetField): IrSetField =
299299
IrSetFieldImpl(
300300
expression.startOffset, expression.endOffset,
301-
symbolsRemapper.getReferencedField(expression.symbol),
301+
symbolRemapper.getReferencedField(expression.symbol),
302302
expression.receiver?.transform(),
303303
expression.value.transform(),
304304
mapStatementOrigin(expression.origin),
305-
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
305+
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
306306
)
307307

308308
override fun visitCall(expression: IrCall): IrCall =
@@ -313,18 +313,18 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
313313
is IrCallWithShallowCopy ->
314314
expression.shallowCopy(
315315
mapStatementOrigin(expression.origin),
316-
symbolsRemapper.getReferencedFunction(expression.symbol),
317-
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
316+
symbolRemapper.getReferencedFunction(expression.symbol),
317+
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
318318
)
319319
else ->
320320
IrCallImpl(
321321
expression.startOffset, expression.endOffset,
322322
expression.type,
323-
symbolsRemapper.getReferencedFunction(expression.symbol),
323+
symbolRemapper.getReferencedFunction(expression.symbol),
324324
expression.descriptor, // TODO substitute referenced descriptor
325325
expression.getTypeArgumentsMap(),
326326
mapStatementOrigin(expression.origin),
327-
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
327+
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
328328
)
329329
}
330330

@@ -355,15 +355,15 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
355355
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall): IrDelegatingConstructorCall =
356356
IrDelegatingConstructorCallImpl(
357357
expression.startOffset, expression.endOffset,
358-
symbolsRemapper.getReferencedConstructor(expression.symbol),
358+
symbolRemapper.getReferencedConstructor(expression.symbol),
359359
expression.descriptor,
360360
expression.getTypeArgumentsMap()
361361
).transformValueArguments(expression)
362362

363363
override fun visitEnumConstructorCall(expression: IrEnumConstructorCall): IrEnumConstructorCall =
364364
IrEnumConstructorCallImpl(
365365
expression.startOffset, expression.endOffset,
366-
symbolsRemapper.getReferencedConstructor(expression.symbol)
366+
symbolRemapper.getReferencedConstructor(expression.symbol)
367367
).transformValueArguments(expression)
368368

369369
override fun visitGetClass(expression: IrGetClass): IrGetClass =
@@ -377,7 +377,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
377377
IrFunctionReferenceImpl(
378378
expression.startOffset, expression.endOffset,
379379
expression.type,
380-
symbolsRemapper.getReferencedFunction(expression.symbol),
380+
symbolRemapper.getReferencedFunction(expression.symbol),
381381
expression.descriptor, // TODO substitute referenced descriptor
382382
expression.getTypeArgumentsMap(),
383383
mapStatementOrigin(expression.origin)
@@ -388,9 +388,9 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
388388
expression.startOffset, expression.endOffset,
389389
expression.type,
390390
expression.descriptor,
391-
expression.field?.let { symbolsRemapper.getReferencedField(it) },
392-
expression.getter?.let { symbolsRemapper.getReferencedFunction(it) },
393-
expression.setter?.let { symbolsRemapper.getReferencedFunction(it) },
391+
expression.field?.let { symbolRemapper.getReferencedField(it) },
392+
expression.getter?.let { symbolRemapper.getReferencedFunction(it) },
393+
expression.setter?.let { symbolRemapper.getReferencedFunction(it) },
394394
expression.getTypeArgumentsMap(),
395395
mapStatementOrigin(expression.origin)
396396
).transformReceiverArguments(expression)
@@ -400,23 +400,23 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
400400
expression.startOffset, expression.endOffset,
401401
expression.type,
402402
expression.descriptor,
403-
symbolsRemapper.getReferencedVariable(expression.delegate),
404-
symbolsRemapper.getReferencedFunction(expression.getter),
405-
expression.setter?.let { symbolsRemapper.getReferencedFunction(it) },
403+
symbolRemapper.getReferencedVariable(expression.delegate),
404+
symbolRemapper.getReferencedFunction(expression.getter),
405+
expression.setter?.let { symbolRemapper.getReferencedFunction(it) },
406406
mapStatementOrigin(expression.origin)
407407
)
408408

409409
override fun visitClassReference(expression: IrClassReference): IrClassReference =
410410
IrClassReferenceImpl(
411411
expression.startOffset, expression.endOffset,
412412
expression.type,
413-
symbolsRemapper.getReferencedClassifier(expression.symbol)
413+
symbolRemapper.getReferencedClassifier(expression.symbol)
414414
)
415415

416416
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall): IrInstanceInitializerCall =
417417
IrInstanceInitializerCallImpl(
418418
expression.startOffset, expression.endOffset,
419-
symbolsRemapper.getReferencedClass(expression.classSymbol)
419+
symbolRemapper.getReferencedClass(expression.classSymbol)
420420
)
421421

422422
override fun visitTypeOperator(expression: IrTypeOperatorCall): IrTypeOperatorCall =
@@ -508,7 +508,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
508508
IrReturnImpl(
509509
expression.startOffset, expression.endOffset,
510510
expression.type,
511-
symbolsRemapper.getReferencedFunction(expression.returnTargetSymbol),
511+
symbolRemapper.getReferencedFunction(expression.returnTargetSymbol),
512512
expression.value.transform()
513513
)
514514

0 commit comments

Comments
 (0)