@@ -24,7 +24,9 @@ import org.jetbrains.kotlin.ir.symbols.impl.*
24
24
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
25
25
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
26
26
27
- class DeepCopySymbolsRemapper : IrElementVisitorVoid , SymbolRemapper {
27
+ class DeepCopySymbolsRemapper (
28
+ val descriptorsRemapper : DescriptorsRemapper = DescriptorsRemapper .DEFAULT
29
+ ) : IrElementVisitorVoid, SymbolRemapper {
28
30
private val classes = hashMapOf<IrClassSymbol , IrClassSymbol >()
29
31
private val constructors = hashMapOf<IrConstructorSymbol , IrConstructorSymbol >()
30
32
private val enumEntries = hashMapOf<IrEnumEntrySymbol , IrEnumEntrySymbol >()
@@ -47,52 +49,72 @@ class DeepCopySymbolsRemapper : IrElementVisitorVoid, SymbolRemapper {
47
49
}
48
50
49
51
override fun visitClass (declaration : IrClass ) {
50
- remapSymbol(classes, declaration) { IrClassSymbolImpl (it.descriptor) }
52
+ remapSymbol(classes, declaration) {
53
+ IrClassSymbolImpl (descriptorsRemapper.remapDeclaredClass(it.descriptor))
54
+ }
51
55
declaration.acceptChildrenVoid(this )
52
56
}
53
57
54
58
override fun visitConstructor (declaration : IrConstructor ) {
55
- remapSymbol(constructors, declaration) { IrConstructorSymbolImpl (it.descriptor) }
59
+ remapSymbol(constructors, declaration) {
60
+ IrConstructorSymbolImpl (descriptorsRemapper.remapDeclaredConstructor(it.descriptor))
61
+ }
56
62
declaration.acceptChildrenVoid(this )
57
63
}
58
64
59
65
override fun visitEnumEntry (declaration : IrEnumEntry ) {
60
- remapSymbol(enumEntries, declaration) { IrEnumEntrySymbolImpl (it.descriptor) }
66
+ remapSymbol(enumEntries, declaration) {
67
+ IrEnumEntrySymbolImpl (descriptorsRemapper.remapDeclaredEnumEntry(it.descriptor))
68
+ }
61
69
declaration.acceptChildrenVoid(this )
62
70
}
63
71
64
72
override fun visitExternalPackageFragment (declaration : IrExternalPackageFragment ) {
65
- remapSymbol(externalPackageFragments, declaration) { IrExternalPackageFragmentSymbolImpl (it.descriptor) }
73
+ remapSymbol(externalPackageFragments, declaration) {
74
+ IrExternalPackageFragmentSymbolImpl (descriptorsRemapper.remapDeclaredExternalPackageFragment(it.descriptor))
75
+ }
66
76
declaration.acceptChildrenVoid(this )
67
77
}
68
78
69
79
override fun visitField (declaration : IrField ) {
70
- remapSymbol(fields, declaration) { IrFieldSymbolImpl (it.descriptor) }
80
+ remapSymbol(fields, declaration) {
81
+ IrFieldSymbolImpl (descriptorsRemapper.remapDeclaredField(it.descriptor))
82
+ }
71
83
declaration.acceptChildrenVoid(this )
72
84
}
73
85
74
86
override fun visitFile (declaration : IrFile ) {
75
- remapSymbol(files, declaration) { IrFileSymbolImpl (it.descriptor) }
87
+ remapSymbol(files, declaration) {
88
+ IrFileSymbolImpl (descriptorsRemapper.remapDeclaredFilePackageFragment(it.descriptor))
89
+ }
76
90
declaration.acceptChildrenVoid(this )
77
91
}
78
92
79
93
override fun visitSimpleFunction (declaration : IrSimpleFunction ) {
80
- remapSymbol(functions, declaration) { IrSimpleFunctionSymbolImpl (it.descriptor) }
94
+ remapSymbol(functions, declaration) {
95
+ IrSimpleFunctionSymbolImpl (descriptorsRemapper.remapDeclaredSimpleFunction(it.descriptor))
96
+ }
81
97
declaration.acceptChildrenVoid(this )
82
98
}
83
99
84
100
override fun visitTypeParameter (declaration : IrTypeParameter ) {
85
- remapSymbol(typeParameters, declaration) { IrTypeParameterSymbolImpl (it.descriptor) }
101
+ remapSymbol(typeParameters, declaration) {
102
+ IrTypeParameterSymbolImpl (descriptorsRemapper.remapDeclaredTypeParameter(it.descriptor))
103
+ }
86
104
declaration.acceptChildrenVoid(this )
87
105
}
88
106
89
107
override fun visitValueParameter (declaration : IrValueParameter ) {
90
- remapSymbol(valueParameters, declaration) { IrValueParameterSymbolImpl (it.descriptor) }
108
+ remapSymbol(valueParameters, declaration) {
109
+ IrValueParameterSymbolImpl (descriptorsRemapper.remapDeclaredValueParameter(it.descriptor))
110
+ }
91
111
declaration.acceptChildrenVoid(this )
92
112
}
93
113
94
114
override fun visitVariable (declaration : IrVariable ) {
95
- remapSymbol(variables, declaration) { IrVariableSymbolImpl (it.descriptor) }
115
+ remapSymbol(variables, declaration) {
116
+ IrVariableSymbolImpl (descriptorsRemapper.remapDeclaredVariable(it.descriptor))
117
+ }
96
118
declaration.acceptChildrenVoid(this )
97
119
}
98
120
0 commit comments