Extract SymbolRemapper interface for DeepCopy customization
This commit is contained in:
@@ -36,7 +36,7 @@ inline fun <reified T : IrElement> T.deepCopyWithSymbols(): T {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRemapper) : IrElementTransformerVoid() {
|
class DeepCopyIrTreeWithSymbols(private val symbolRemapper: SymbolRemapper) : IrElementTransformerVoid() {
|
||||||
private fun mapDeclarationOrigin(origin: IrDeclarationOrigin) = origin
|
private fun mapDeclarationOrigin(origin: IrDeclarationOrigin) = origin
|
||||||
private fun mapStatementOrigin(origin: IrStatementOrigin?) = origin
|
private fun mapStatementOrigin(origin: IrStatementOrigin?) = origin
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
|
|
||||||
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): IrExternalPackageFragment =
|
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): IrExternalPackageFragment =
|
||||||
IrExternalPackageFragmentImpl(
|
IrExternalPackageFragmentImpl(
|
||||||
symbolsRemapper.getDeclaredExternalPackageFragment(declaration.symbol)
|
symbolRemapper.getDeclaredExternalPackageFragment(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
declaration.transformDeclarationsTo(this)
|
declaration.transformDeclarationsTo(this)
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
override fun visitFile(declaration: IrFile): IrFile =
|
override fun visitFile(declaration: IrFile): IrFile =
|
||||||
IrFileImpl(
|
IrFileImpl(
|
||||||
declaration.fileEntry,
|
declaration.fileEntry,
|
||||||
symbolsRemapper.getDeclaredFile(declaration.symbol)
|
symbolRemapper.getDeclaredFile(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
fileAnnotations.addAll(declaration.fileAnnotations)
|
fileAnnotations.addAll(declaration.fileAnnotations)
|
||||||
declaration.transformDeclarationsTo(this)
|
declaration.transformDeclarationsTo(this)
|
||||||
@@ -85,7 +85,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrClassImpl(
|
IrClassImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredClass(declaration.symbol)
|
symbolRemapper.getDeclaredClass(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
thisReceiver = declaration.thisReceiver?.transform()
|
thisReceiver = declaration.thisReceiver?.transform()
|
||||||
declaration.typeParameters.transformTo(typeParameters)
|
declaration.typeParameters.transformTo(typeParameters)
|
||||||
@@ -103,7 +103,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrFunctionImpl(
|
IrFunctionImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredFunction(declaration.symbol)
|
symbolRemapper.getDeclaredFunction(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
transformFunctionChildren(declaration)
|
transformFunctionChildren(declaration)
|
||||||
}
|
}
|
||||||
@@ -112,7 +112,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrConstructorImpl(
|
IrConstructorImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredConstructor(declaration.symbol)
|
symbolRemapper.getDeclaredConstructor(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
transformFunctionChildren(declaration)
|
transformFunctionChildren(declaration)
|
||||||
}
|
}
|
||||||
@@ -141,7 +141,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrFieldImpl(
|
IrFieldImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredField(declaration.symbol)
|
symbolRemapper.getDeclaredField(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
initializer = declaration.initializer?.transform()
|
initializer = declaration.initializer?.transform()
|
||||||
}
|
}
|
||||||
@@ -160,7 +160,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrEnumEntryImpl(
|
IrEnumEntryImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredEnumEntry(declaration.symbol)
|
symbolRemapper.getDeclaredEnumEntry(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
correspondingClass = declaration.correspondingClass?.transform()
|
correspondingClass = declaration.correspondingClass?.transform()
|
||||||
initializerExpression = declaration.initializerExpression?.transform()
|
initializerExpression = declaration.initializerExpression?.transform()
|
||||||
@@ -179,7 +179,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrVariableImpl(
|
IrVariableImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredVariable(declaration.symbol)
|
symbolRemapper.getDeclaredVariable(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
initializer = declaration.initializer?.transform()
|
initializer = declaration.initializer?.transform()
|
||||||
}
|
}
|
||||||
@@ -188,14 +188,14 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrTypeParameterImpl(
|
IrTypeParameterImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredTypeParameter(declaration.symbol)
|
symbolRemapper.getDeclaredTypeParameter(declaration.symbol)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitValueParameter(declaration: IrValueParameter): IrValueParameter =
|
override fun visitValueParameter(declaration: IrValueParameter): IrValueParameter =
|
||||||
IrValueParameterImpl(
|
IrValueParameterImpl(
|
||||||
declaration.startOffset, declaration.endOffset,
|
declaration.startOffset, declaration.endOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
mapDeclarationOrigin(declaration.origin),
|
||||||
symbolsRemapper.getDeclaredValueParameter(declaration.symbol)
|
symbolRemapper.getDeclaredValueParameter(declaration.symbol)
|
||||||
).apply {
|
).apply {
|
||||||
defaultValue = declaration.defaultValue?.transform()
|
defaultValue = declaration.defaultValue?.transform()
|
||||||
}
|
}
|
||||||
@@ -261,27 +261,27 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrGetObjectValueImpl(
|
IrGetObjectValueImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
symbolsRemapper.getReferencedClass(expression.symbol)
|
symbolRemapper.getReferencedClass(expression.symbol)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitGetEnumValue(expression: IrGetEnumValue): IrGetEnumValue =
|
override fun visitGetEnumValue(expression: IrGetEnumValue): IrGetEnumValue =
|
||||||
IrGetEnumValueImpl(
|
IrGetEnumValueImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
symbolsRemapper.getReferencedEnumEntry(expression.symbol)
|
symbolRemapper.getReferencedEnumEntry(expression.symbol)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitGetValue(expression: IrGetValue): IrGetValue =
|
override fun visitGetValue(expression: IrGetValue): IrGetValue =
|
||||||
IrGetValueImpl(
|
IrGetValueImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolsRemapper.getReferencedValue(expression.symbol),
|
symbolRemapper.getReferencedValue(expression.symbol),
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitSetVariable(expression: IrSetVariable): IrSetVariable =
|
override fun visitSetVariable(expression: IrSetVariable): IrSetVariable =
|
||||||
IrSetVariableImpl(
|
IrSetVariableImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolsRemapper.getReferencedVariable(expression.symbol),
|
symbolRemapper.getReferencedVariable(expression.symbol),
|
||||||
expression.value.transform(),
|
expression.value.transform(),
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
)
|
)
|
||||||
@@ -289,20 +289,20 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
override fun visitGetField(expression: IrGetField): IrGetField =
|
override fun visitGetField(expression: IrGetField): IrGetField =
|
||||||
IrGetFieldImpl(
|
IrGetFieldImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolsRemapper.getReferencedField(expression.symbol),
|
symbolRemapper.getReferencedField(expression.symbol),
|
||||||
expression.receiver?.transform(),
|
expression.receiver?.transform(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitSetField(expression: IrSetField): IrSetField =
|
override fun visitSetField(expression: IrSetField): IrSetField =
|
||||||
IrSetFieldImpl(
|
IrSetFieldImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolsRemapper.getReferencedField(expression.symbol),
|
symbolRemapper.getReferencedField(expression.symbol),
|
||||||
expression.receiver?.transform(),
|
expression.receiver?.transform(),
|
||||||
expression.value.transform(),
|
expression.value.transform(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitCall(expression: IrCall): IrCall =
|
override fun visitCall(expression: IrCall): IrCall =
|
||||||
@@ -313,18 +313,18 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
is IrCallWithShallowCopy ->
|
is IrCallWithShallowCopy ->
|
||||||
expression.shallowCopy(
|
expression.shallowCopy(
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
symbolsRemapper.getReferencedFunction(expression.symbol),
|
symbolRemapper.getReferencedFunction(expression.symbol),
|
||||||
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
||||||
)
|
)
|
||||||
else ->
|
else ->
|
||||||
IrCallImpl(
|
IrCallImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
symbolsRemapper.getReferencedFunction(expression.symbol),
|
symbolRemapper.getReferencedFunction(expression.symbol),
|
||||||
expression.descriptor, // TODO substitute referenced descriptor
|
expression.descriptor, // TODO substitute referenced descriptor
|
||||||
expression.getTypeArgumentsMap(),
|
expression.getTypeArgumentsMap(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
symbolsRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,7 +355,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall): IrDelegatingConstructorCall =
|
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall): IrDelegatingConstructorCall =
|
||||||
IrDelegatingConstructorCallImpl(
|
IrDelegatingConstructorCallImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolsRemapper.getReferencedConstructor(expression.symbol),
|
symbolRemapper.getReferencedConstructor(expression.symbol),
|
||||||
expression.descriptor,
|
expression.descriptor,
|
||||||
expression.getTypeArgumentsMap()
|
expression.getTypeArgumentsMap()
|
||||||
).transformValueArguments(expression)
|
).transformValueArguments(expression)
|
||||||
@@ -363,7 +363,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
override fun visitEnumConstructorCall(expression: IrEnumConstructorCall): IrEnumConstructorCall =
|
override fun visitEnumConstructorCall(expression: IrEnumConstructorCall): IrEnumConstructorCall =
|
||||||
IrEnumConstructorCallImpl(
|
IrEnumConstructorCallImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolsRemapper.getReferencedConstructor(expression.symbol)
|
symbolRemapper.getReferencedConstructor(expression.symbol)
|
||||||
).transformValueArguments(expression)
|
).transformValueArguments(expression)
|
||||||
|
|
||||||
override fun visitGetClass(expression: IrGetClass): IrGetClass =
|
override fun visitGetClass(expression: IrGetClass): IrGetClass =
|
||||||
@@ -377,7 +377,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrFunctionReferenceImpl(
|
IrFunctionReferenceImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
symbolsRemapper.getReferencedFunction(expression.symbol),
|
symbolRemapper.getReferencedFunction(expression.symbol),
|
||||||
expression.descriptor, // TODO substitute referenced descriptor
|
expression.descriptor, // TODO substitute referenced descriptor
|
||||||
expression.getTypeArgumentsMap(),
|
expression.getTypeArgumentsMap(),
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
@@ -388,9 +388,9 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
expression.descriptor,
|
expression.descriptor,
|
||||||
expression.field?.let { symbolsRemapper.getReferencedField(it) },
|
expression.field?.let { symbolRemapper.getReferencedField(it) },
|
||||||
expression.getter?.let { symbolsRemapper.getReferencedFunction(it) },
|
expression.getter?.let { symbolRemapper.getReferencedFunction(it) },
|
||||||
expression.setter?.let { symbolsRemapper.getReferencedFunction(it) },
|
expression.setter?.let { symbolRemapper.getReferencedFunction(it) },
|
||||||
expression.getTypeArgumentsMap(),
|
expression.getTypeArgumentsMap(),
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
).transformReceiverArguments(expression)
|
).transformReceiverArguments(expression)
|
||||||
@@ -400,9 +400,9 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
expression.descriptor,
|
expression.descriptor,
|
||||||
symbolsRemapper.getReferencedVariable(expression.delegate),
|
symbolRemapper.getReferencedVariable(expression.delegate),
|
||||||
symbolsRemapper.getReferencedFunction(expression.getter),
|
symbolRemapper.getReferencedFunction(expression.getter),
|
||||||
expression.setter?.let { symbolsRemapper.getReferencedFunction(it) },
|
expression.setter?.let { symbolRemapper.getReferencedFunction(it) },
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -410,13 +410,13 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrClassReferenceImpl(
|
IrClassReferenceImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
symbolsRemapper.getReferencedClassifier(expression.symbol)
|
symbolRemapper.getReferencedClassifier(expression.symbol)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall): IrInstanceInitializerCall =
|
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall): IrInstanceInitializerCall =
|
||||||
IrInstanceInitializerCallImpl(
|
IrInstanceInitializerCallImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolsRemapper.getReferencedClass(expression.classSymbol)
|
symbolRemapper.getReferencedClass(expression.classSymbol)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun visitTypeOperator(expression: IrTypeOperatorCall): IrTypeOperatorCall =
|
override fun visitTypeOperator(expression: IrTypeOperatorCall): IrTypeOperatorCall =
|
||||||
@@ -508,7 +508,7 @@ class DeepCopyIrTreeWithSymbols(private val symbolsRemapper: DeepCopySymbolsRema
|
|||||||
IrReturnImpl(
|
IrReturnImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type,
|
expression.type,
|
||||||
symbolsRemapper.getReferencedFunction(expression.returnTargetSymbol),
|
symbolRemapper.getReferencedFunction(expression.returnTargetSymbol),
|
||||||
expression.value.transform()
|
expression.value.transform()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.symbols.impl.*
|
|||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
|
|
||||||
class DeepCopySymbolsRemapper : IrElementVisitorVoid {
|
class DeepCopySymbolsRemapper : IrElementVisitorVoid, SymbolRemapper {
|
||||||
private val classes = hashMapOf<IrClassSymbol, IrClassSymbol>()
|
private val classes = hashMapOf<IrClassSymbol, IrClassSymbol>()
|
||||||
private val constructors = hashMapOf<IrConstructorSymbol, IrConstructorSymbol>()
|
private val constructors = hashMapOf<IrConstructorSymbol, IrConstructorSymbol>()
|
||||||
private val enumEntries = hashMapOf<IrEnumEntrySymbol, IrEnumEntrySymbol>()
|
private val enumEntries = hashMapOf<IrEnumEntrySymbol, IrEnumEntrySymbol>()
|
||||||
@@ -104,39 +104,39 @@ class DeepCopySymbolsRemapper : IrElementVisitorVoid {
|
|||||||
private fun <T : IrSymbol> Map<T, T>.getReferenced(symbol: T) =
|
private fun <T : IrSymbol> Map<T, T>.getReferenced(symbol: T) =
|
||||||
getOrElse(symbol) { symbol }
|
getOrElse(symbol) { symbol }
|
||||||
|
|
||||||
fun getDeclaredClass(symbol: IrClassSymbol): IrClassSymbol = classes.getDeclared(symbol)
|
override fun getDeclaredClass(symbol: IrClassSymbol): IrClassSymbol = classes.getDeclared(symbol)
|
||||||
fun getDeclaredFunction(symbol: IrSimpleFunctionSymbol): IrSimpleFunctionSymbol = functions.getDeclared(symbol)
|
override fun getDeclaredFunction(symbol: IrSimpleFunctionSymbol): IrSimpleFunctionSymbol = functions.getDeclared(symbol)
|
||||||
fun getDeclaredField(symbol: IrFieldSymbol): IrFieldSymbol = fields.getDeclared(symbol)
|
override fun getDeclaredField(symbol: IrFieldSymbol): IrFieldSymbol = fields.getDeclared(symbol)
|
||||||
fun getDeclaredFile(symbol: IrFileSymbol): IrFileSymbol = files.getDeclared(symbol)
|
override fun getDeclaredFile(symbol: IrFileSymbol): IrFileSymbol = files.getDeclared(symbol)
|
||||||
fun getDeclaredConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol = constructors.getDeclared(symbol)
|
override fun getDeclaredConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol = constructors.getDeclared(symbol)
|
||||||
fun getDeclaredEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol = enumEntries.getDeclared(symbol)
|
override fun getDeclaredEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol = enumEntries.getDeclared(symbol)
|
||||||
fun getDeclaredExternalPackageFragment(symbol: IrExternalPackageFragmentSymbol): IrExternalPackageFragmentSymbol = externalPackageFragments.getDeclared(symbol)
|
override fun getDeclaredExternalPackageFragment(symbol: IrExternalPackageFragmentSymbol): IrExternalPackageFragmentSymbol = externalPackageFragments.getDeclared(symbol)
|
||||||
fun getDeclaredVariable(symbol: IrVariableSymbol): IrVariableSymbol = variables.getDeclared(symbol)
|
override fun getDeclaredVariable(symbol: IrVariableSymbol): IrVariableSymbol = variables.getDeclared(symbol)
|
||||||
fun getDeclaredTypeParameter(symbol: IrTypeParameterSymbol): IrTypeParameterSymbol = typeParameters.getDeclared(symbol)
|
override fun getDeclaredTypeParameter(symbol: IrTypeParameterSymbol): IrTypeParameterSymbol = typeParameters.getDeclared(symbol)
|
||||||
fun getDeclaredValueParameter(symbol: IrValueParameterSymbol): IrValueParameterSymbol = valueParameters.getDeclared(symbol)
|
override fun getDeclaredValueParameter(symbol: IrValueParameterSymbol): IrValueParameterSymbol = valueParameters.getDeclared(symbol)
|
||||||
|
|
||||||
fun getReferencedClass(symbol: IrClassSymbol): IrClassSymbol = classes.getReferenced(symbol)
|
override fun getReferencedClass(symbol: IrClassSymbol): IrClassSymbol = classes.getReferenced(symbol)
|
||||||
fun getReferencedClassOrNull(symbol: IrClassSymbol?): IrClassSymbol? = symbol?.let { classes.getReferenced(it) }
|
override fun getReferencedClassOrNull(symbol: IrClassSymbol?): IrClassSymbol? = symbol?.let { classes.getReferenced(it) }
|
||||||
fun getReferencedEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol = enumEntries.getReferenced(symbol)
|
override fun getReferencedEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol = enumEntries.getReferenced(symbol)
|
||||||
fun getReferencedVariable(symbol: IrVariableSymbol): IrVariableSymbol = variables.getReferenced(symbol)
|
override fun getReferencedVariable(symbol: IrVariableSymbol): IrVariableSymbol = variables.getReferenced(symbol)
|
||||||
fun getReferencedField(symbol: IrFieldSymbol): IrFieldSymbol = fields.getReferenced(symbol)
|
override fun getReferencedField(symbol: IrFieldSymbol): IrFieldSymbol = fields.getReferenced(symbol)
|
||||||
fun getReferencedConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol = constructors.getReferenced(symbol)
|
override fun getReferencedConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol = constructors.getReferenced(symbol)
|
||||||
|
|
||||||
fun getReferencedValue(symbol: IrValueSymbol): IrValueSymbol =
|
override fun getReferencedValue(symbol: IrValueSymbol): IrValueSymbol =
|
||||||
when (symbol) {
|
when (symbol) {
|
||||||
is IrValueParameterSymbol -> valueParameters.getReferenced(symbol)
|
is IrValueParameterSymbol -> valueParameters.getReferenced(symbol)
|
||||||
is IrVariableSymbol -> variables.getReferenced(symbol)
|
is IrVariableSymbol -> variables.getReferenced(symbol)
|
||||||
else -> throw IllegalArgumentException("Unexpected symbol $symbol ${symbol.descriptor}")
|
else -> throw IllegalArgumentException("Unexpected symbol $symbol ${symbol.descriptor}")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getReferencedFunction(symbol: IrFunctionSymbol): IrFunctionSymbol =
|
override fun getReferencedFunction(symbol: IrFunctionSymbol): IrFunctionSymbol =
|
||||||
when (symbol) {
|
when (symbol) {
|
||||||
is IrSimpleFunctionSymbol -> functions.getReferenced(symbol)
|
is IrSimpleFunctionSymbol -> functions.getReferenced(symbol)
|
||||||
is IrConstructorSymbol -> constructors.getReferenced(symbol)
|
is IrConstructorSymbol -> constructors.getReferenced(symbol)
|
||||||
else -> throw IllegalArgumentException("Unexpected symbol $symbol ${symbol.descriptor}")
|
else -> throw IllegalArgumentException("Unexpected symbol $symbol ${symbol.descriptor}")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getReferencedClassifier(symbol: IrClassifierSymbol): IrClassifierSymbol =
|
override fun getReferencedClassifier(symbol: IrClassifierSymbol): IrClassifierSymbol =
|
||||||
when (symbol) {
|
when (symbol) {
|
||||||
is IrClassSymbol -> classes.getReferenced(symbol)
|
is IrClassSymbol -> classes.getReferenced(symbol)
|
||||||
is IrTypeParameterSymbol -> typeParameters.getReferenced(symbol)
|
is IrTypeParameterSymbol -> typeParameters.getReferenced(symbol)
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.ir.util
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.*
|
||||||
|
|
||||||
|
interface SymbolRemapper {
|
||||||
|
fun getDeclaredClass(symbol: IrClassSymbol): IrClassSymbol
|
||||||
|
fun getDeclaredFunction(symbol: IrSimpleFunctionSymbol): IrSimpleFunctionSymbol
|
||||||
|
fun getDeclaredField(symbol: IrFieldSymbol): IrFieldSymbol
|
||||||
|
fun getDeclaredFile(symbol: IrFileSymbol): IrFileSymbol
|
||||||
|
fun getDeclaredConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol
|
||||||
|
fun getDeclaredEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol
|
||||||
|
fun getDeclaredExternalPackageFragment(symbol: IrExternalPackageFragmentSymbol): IrExternalPackageFragmentSymbol
|
||||||
|
fun getDeclaredVariable(symbol: IrVariableSymbol): IrVariableSymbol
|
||||||
|
fun getDeclaredTypeParameter(symbol: IrTypeParameterSymbol): IrTypeParameterSymbol
|
||||||
|
fun getDeclaredValueParameter(symbol: IrValueParameterSymbol): IrValueParameterSymbol
|
||||||
|
fun getReferencedClass(symbol: IrClassSymbol): IrClassSymbol
|
||||||
|
fun getReferencedClassOrNull(symbol: IrClassSymbol?): IrClassSymbol?
|
||||||
|
fun getReferencedEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol
|
||||||
|
fun getReferencedVariable(symbol: IrVariableSymbol): IrVariableSymbol
|
||||||
|
fun getReferencedField(symbol: IrFieldSymbol): IrFieldSymbol
|
||||||
|
fun getReferencedConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol
|
||||||
|
fun getReferencedValue(symbol: IrValueSymbol): IrValueSymbol
|
||||||
|
fun getReferencedFunction(symbol: IrFunctionSymbol): IrFunctionSymbol
|
||||||
|
fun getReferencedClassifier(symbol: IrClassifierSymbol): IrClassifierSymbol
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user