IR: Consistently copyAttributes in DeepCopyIrTreeWithSymbols
This was missing for IrFunctionReferences, which caused problems when copying default parameters before CallableReferenceLowering in the JVM_IR backend.
This commit is contained in:
committed by
Alexander Udalov
parent
5fc6fa8619
commit
102a3d60e0
@@ -139,8 +139,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
}
|
}
|
||||||
thisReceiver = declaration.thisReceiver?.transform()
|
thisReceiver = declaration.thisReceiver?.transform()
|
||||||
declaration.transformDeclarationsTo(this)
|
declaration.transformDeclarationsTo(this)
|
||||||
copyAttributes(declaration)
|
}.copyAttributes(declaration)
|
||||||
}
|
|
||||||
|
|
||||||
override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction =
|
override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction =
|
||||||
IrFunctionImpl(
|
IrFunctionImpl(
|
||||||
@@ -367,14 +366,14 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
throw IllegalArgumentException("Unsupported expression type: $expression")
|
throw IllegalArgumentException("Unsupported expression type: $expression")
|
||||||
|
|
||||||
override fun <T> visitConst(expression: IrConst<T>): IrConst<T> =
|
override fun <T> visitConst(expression: IrConst<T>): IrConst<T> =
|
||||||
expression.copy()
|
expression.copy().copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitVararg(expression: IrVararg): IrVararg =
|
override fun visitVararg(expression: IrVararg): IrVararg =
|
||||||
IrVarargImpl(
|
IrVarargImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(), expression.varargElementType.remapType(),
|
expression.type.remapType(), expression.varargElementType.remapType(),
|
||||||
expression.elements.transform()
|
expression.elements.transform()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitSpreadElement(spread: IrSpreadElement): IrSpreadElement =
|
override fun visitSpreadElement(spread: IrSpreadElement): IrSpreadElement =
|
||||||
IrSpreadElementImpl(
|
IrSpreadElementImpl(
|
||||||
@@ -391,14 +390,14 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
expression.statements.map { it.transform() },
|
expression.statements.map { it.transform() },
|
||||||
expression.inlineFunctionSymbol
|
expression.inlineFunctionSymbol
|
||||||
)
|
).copyAttributes(expression)
|
||||||
else
|
else
|
||||||
IrBlockImpl(
|
IrBlockImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
expression.statements.map { it.transform() }
|
expression.statements.map { it.transform() }
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitComposite(expression: IrComposite): IrComposite =
|
override fun visitComposite(expression: IrComposite): IrComposite =
|
||||||
IrCompositeImpl(
|
IrCompositeImpl(
|
||||||
@@ -406,28 +405,28 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
expression.statements.map { it.transform() }
|
expression.statements.map { it.transform() }
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitStringConcatenation(expression: IrStringConcatenation): IrStringConcatenation =
|
override fun visitStringConcatenation(expression: IrStringConcatenation): IrStringConcatenation =
|
||||||
IrStringConcatenationImpl(
|
IrStringConcatenationImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
expression.arguments.map { it.transform() }
|
expression.arguments.map { it.transform() }
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitGetObjectValue(expression: IrGetObjectValue): IrGetObjectValue =
|
override fun visitGetObjectValue(expression: IrGetObjectValue): IrGetObjectValue =
|
||||||
IrGetObjectValueImpl(
|
IrGetObjectValueImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
symbolRemapper.getReferencedClass(expression.symbol)
|
symbolRemapper.getReferencedClass(expression.symbol)
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitGetEnumValue(expression: IrGetEnumValue): IrGetEnumValue =
|
override fun visitGetEnumValue(expression: IrGetEnumValue): IrGetEnumValue =
|
||||||
IrGetEnumValueImpl(
|
IrGetEnumValueImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
symbolRemapper.getReferencedEnumEntry(expression.symbol)
|
symbolRemapper.getReferencedEnumEntry(expression.symbol)
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitGetValue(expression: IrGetValue): IrGetValue =
|
override fun visitGetValue(expression: IrGetValue): IrGetValue =
|
||||||
IrGetValueImpl(
|
IrGetValueImpl(
|
||||||
@@ -435,7 +434,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
symbolRemapper.getReferencedValue(expression.symbol),
|
symbolRemapper.getReferencedValue(expression.symbol),
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitSetVariable(expression: IrSetVariable): IrSetVariable =
|
override fun visitSetVariable(expression: IrSetVariable): IrSetVariable =
|
||||||
IrSetVariableImpl(
|
IrSetVariableImpl(
|
||||||
@@ -444,7 +443,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
symbolRemapper.getReferencedVariable(expression.symbol),
|
symbolRemapper.getReferencedVariable(expression.symbol),
|
||||||
expression.value.transform(),
|
expression.value.transform(),
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitGetField(expression: IrGetField): IrGetField =
|
override fun visitGetField(expression: IrGetField): IrGetField =
|
||||||
IrGetFieldImpl(
|
IrGetFieldImpl(
|
||||||
@@ -454,7 +453,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.receiver?.transform(),
|
expression.receiver?.transform(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitSetField(expression: IrSetField): IrSetField =
|
override fun visitSetField(expression: IrSetField): IrSetField =
|
||||||
IrSetFieldImpl(
|
IrSetFieldImpl(
|
||||||
@@ -465,7 +464,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitCall(expression: IrCall): IrCall =
|
override fun visitCall(expression: IrCall): IrCall =
|
||||||
shallowCopyCall(expression).apply {
|
shallowCopyCall(expression).apply {
|
||||||
@@ -487,7 +486,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
).apply {
|
).apply {
|
||||||
copyRemappedTypeArgumentsFrom(expression)
|
copyRemappedTypeArgumentsFrom(expression)
|
||||||
transformValueArguments(expression)
|
transformValueArguments(expression)
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrMemberAccessExpression.copyRemappedTypeArgumentsFrom(other: IrMemberAccessExpression) {
|
private fun IrMemberAccessExpression.copyRemappedTypeArgumentsFrom(other: IrMemberAccessExpression) {
|
||||||
@@ -512,7 +511,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
symbolRemapper.getReferencedClassOrNull(expression.superQualifierSymbol)
|
||||||
).apply {
|
).apply {
|
||||||
copyRemappedTypeArgumentsFrom(expression)
|
copyRemappedTypeArgumentsFrom(expression)
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun <T : IrMemberAccessExpression> T.transformReceiverArguments(original: T): T =
|
private fun <T : IrMemberAccessExpression> T.transformReceiverArguments(original: T): T =
|
||||||
@@ -539,7 +538,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
).apply {
|
).apply {
|
||||||
copyRemappedTypeArgumentsFrom(expression)
|
copyRemappedTypeArgumentsFrom(expression)
|
||||||
transformValueArguments(expression)
|
transformValueArguments(expression)
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitEnumConstructorCall(expression: IrEnumConstructorCall): IrEnumConstructorCall {
|
override fun visitEnumConstructorCall(expression: IrEnumConstructorCall): IrEnumConstructorCall {
|
||||||
@@ -552,7 +551,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
).apply {
|
).apply {
|
||||||
copyRemappedTypeArgumentsFrom(expression)
|
copyRemappedTypeArgumentsFrom(expression)
|
||||||
transformValueArguments(expression)
|
transformValueArguments(expression)
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitGetClass(expression: IrGetClass): IrGetClass =
|
override fun visitGetClass(expression: IrGetClass): IrGetClass =
|
||||||
@@ -560,7 +559,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
expression.argument.transform()
|
expression.argument.transform()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitFunctionReference(expression: IrFunctionReference): IrFunctionReference {
|
override fun visitFunctionReference(expression: IrFunctionReference): IrFunctionReference {
|
||||||
val symbol = symbolRemapper.getReferencedFunction(expression.symbol)
|
val symbol = symbolRemapper.getReferencedFunction(expression.symbol)
|
||||||
@@ -575,7 +574,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
).apply {
|
).apply {
|
||||||
copyRemappedTypeArgumentsFrom(expression)
|
copyRemappedTypeArgumentsFrom(expression)
|
||||||
transformValueArguments(expression)
|
transformValueArguments(expression)
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitPropertyReference(expression: IrPropertyReference): IrPropertyReference =
|
override fun visitPropertyReference(expression: IrPropertyReference): IrPropertyReference =
|
||||||
@@ -591,7 +590,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
).apply {
|
).apply {
|
||||||
copyRemappedTypeArgumentsFrom(expression)
|
copyRemappedTypeArgumentsFrom(expression)
|
||||||
transformReceiverArguments(expression)
|
transformReceiverArguments(expression)
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference): IrLocalDelegatedPropertyReference =
|
override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference): IrLocalDelegatedPropertyReference =
|
||||||
IrLocalDelegatedPropertyReferenceImpl(
|
IrLocalDelegatedPropertyReferenceImpl(
|
||||||
@@ -602,7 +601,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
symbolRemapper.getReferencedSimpleFunction(expression.getter),
|
symbolRemapper.getReferencedSimpleFunction(expression.getter),
|
||||||
expression.setter?.let { symbolRemapper.getReferencedSimpleFunction(it) },
|
expression.setter?.let { symbolRemapper.getReferencedSimpleFunction(it) },
|
||||||
mapStatementOrigin(expression.origin)
|
mapStatementOrigin(expression.origin)
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitFunctionExpression(expression: IrFunctionExpression): IrFunctionExpression =
|
override fun visitFunctionExpression(expression: IrFunctionExpression): IrFunctionExpression =
|
||||||
IrFunctionExpressionImpl(
|
IrFunctionExpressionImpl(
|
||||||
@@ -610,7 +609,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
expression.function.transform(),
|
expression.function.transform(),
|
||||||
mapStatementOrigin(expression.origin)!!
|
mapStatementOrigin(expression.origin)!!
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitClassReference(expression: IrClassReference): IrClassReference =
|
override fun visitClassReference(expression: IrClassReference): IrClassReference =
|
||||||
IrClassReferenceImpl(
|
IrClassReferenceImpl(
|
||||||
@@ -618,14 +617,14 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
symbolRemapper.getReferencedClassifier(expression.symbol),
|
symbolRemapper.getReferencedClassifier(expression.symbol),
|
||||||
expression.classType.remapType()
|
expression.classType.remapType()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall): IrInstanceInitializerCall =
|
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall): IrInstanceInitializerCall =
|
||||||
IrInstanceInitializerCallImpl(
|
IrInstanceInitializerCallImpl(
|
||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
symbolRemapper.getReferencedClass(expression.classSymbol),
|
symbolRemapper.getReferencedClass(expression.classSymbol),
|
||||||
expression.type.remapType()
|
expression.type.remapType()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitTypeOperator(expression: IrTypeOperatorCall): IrTypeOperatorCall =
|
override fun visitTypeOperator(expression: IrTypeOperatorCall): IrTypeOperatorCall =
|
||||||
IrTypeOperatorCallImpl(
|
IrTypeOperatorCallImpl(
|
||||||
@@ -634,7 +633,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.operator,
|
expression.operator,
|
||||||
expression.typeOperand.remapType(),
|
expression.typeOperand.remapType(),
|
||||||
expression.argument.transform()
|
expression.argument.transform()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitWhen(expression: IrWhen): IrWhen =
|
override fun visitWhen(expression: IrWhen): IrWhen =
|
||||||
IrWhenImpl(
|
IrWhenImpl(
|
||||||
@@ -642,7 +641,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
mapStatementOrigin(expression.origin),
|
mapStatementOrigin(expression.origin),
|
||||||
expression.branches.map { it.transform() }
|
expression.branches.map { it.transform() }
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitBranch(branch: IrBranch): IrBranch =
|
override fun visitBranch(branch: IrBranch): IrBranch =
|
||||||
IrBranchImpl(
|
IrBranchImpl(
|
||||||
@@ -672,7 +671,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
newLoop.label = loop.label
|
newLoop.label = loop.label
|
||||||
newLoop.condition = loop.condition.transform()
|
newLoop.condition = loop.condition.transform()
|
||||||
newLoop.body = loop.body?.transform()
|
newLoop.body = loop.body?.transform()
|
||||||
}
|
}.copyAttributes(loop)
|
||||||
|
|
||||||
override fun visitDoWhileLoop(loop: IrDoWhileLoop): IrDoWhileLoop =
|
override fun visitDoWhileLoop(loop: IrDoWhileLoop): IrDoWhileLoop =
|
||||||
IrDoWhileLoopImpl(loop.startOffset, loop.endOffset, loop.type, mapStatementOrigin(loop.origin)).also { newLoop ->
|
IrDoWhileLoopImpl(loop.startOffset, loop.endOffset, loop.type, mapStatementOrigin(loop.origin)).also { newLoop ->
|
||||||
@@ -680,21 +679,21 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
newLoop.label = loop.label
|
newLoop.label = loop.label
|
||||||
newLoop.condition = loop.condition.transform()
|
newLoop.condition = loop.condition.transform()
|
||||||
newLoop.body = loop.body?.transform()
|
newLoop.body = loop.body?.transform()
|
||||||
}
|
}.copyAttributes(loop)
|
||||||
|
|
||||||
override fun visitBreak(jump: IrBreak): IrBreak =
|
override fun visitBreak(jump: IrBreak): IrBreak =
|
||||||
IrBreakImpl(
|
IrBreakImpl(
|
||||||
jump.startOffset, jump.endOffset,
|
jump.startOffset, jump.endOffset,
|
||||||
jump.type,
|
jump.type,
|
||||||
getTransformedLoop(jump.loop)
|
getTransformedLoop(jump.loop)
|
||||||
).apply { label = jump.label }
|
).apply { label = jump.label }.copyAttributes(jump)
|
||||||
|
|
||||||
override fun visitContinue(jump: IrContinue): IrContinue =
|
override fun visitContinue(jump: IrContinue): IrContinue =
|
||||||
IrContinueImpl(
|
IrContinueImpl(
|
||||||
jump.startOffset, jump.endOffset,
|
jump.startOffset, jump.endOffset,
|
||||||
jump.type,
|
jump.type,
|
||||||
getTransformedLoop(jump.loop)
|
getTransformedLoop(jump.loop)
|
||||||
).apply { label = jump.label }
|
).apply { label = jump.label }.copyAttributes(jump)
|
||||||
|
|
||||||
override fun visitTry(aTry: IrTry): IrTry =
|
override fun visitTry(aTry: IrTry): IrTry =
|
||||||
IrTryImpl(
|
IrTryImpl(
|
||||||
@@ -703,7 +702,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
aTry.tryResult.transform(),
|
aTry.tryResult.transform(),
|
||||||
aTry.catches.map { it.transform() },
|
aTry.catches.map { it.transform() },
|
||||||
aTry.finallyExpression?.transform()
|
aTry.finallyExpression?.transform()
|
||||||
)
|
).copyAttributes(aTry)
|
||||||
|
|
||||||
override fun visitCatch(aCatch: IrCatch): IrCatch =
|
override fun visitCatch(aCatch: IrCatch): IrCatch =
|
||||||
IrCatchImpl(
|
IrCatchImpl(
|
||||||
@@ -718,7 +717,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
symbolRemapper.getReferencedReturnTarget(expression.returnTargetSymbol),
|
symbolRemapper.getReferencedReturnTarget(expression.returnTargetSymbol),
|
||||||
expression.value.transform()
|
expression.value.transform()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
private fun SymbolRemapper.getReferencedReturnTarget(returnTarget: IrReturnTargetSymbol) =
|
private fun SymbolRemapper.getReferencedReturnTarget(returnTarget: IrReturnTargetSymbol) =
|
||||||
when (returnTarget) {
|
when (returnTarget) {
|
||||||
@@ -732,7 +731,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
expression.value.transform()
|
expression.value.transform()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression): IrDynamicOperatorExpression =
|
override fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression): IrDynamicOperatorExpression =
|
||||||
IrDynamicOperatorExpressionImpl(
|
IrDynamicOperatorExpressionImpl(
|
||||||
@@ -742,7 +741,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
).apply {
|
).apply {
|
||||||
receiver = expression.receiver.transform()
|
receiver = expression.receiver.transform()
|
||||||
expression.arguments.mapTo(arguments) { it.transform() }
|
expression.arguments.mapTo(arguments) { it.transform() }
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression): IrDynamicMemberExpression =
|
override fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression): IrDynamicMemberExpression =
|
||||||
IrDynamicMemberExpressionImpl(
|
IrDynamicMemberExpressionImpl(
|
||||||
@@ -750,7 +749,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
expression.memberName,
|
expression.memberName,
|
||||||
expression.receiver.transform()
|
expression.receiver.transform()
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitErrorDeclaration(declaration: IrErrorDeclaration): IrErrorDeclaration =
|
override fun visitErrorDeclaration(declaration: IrErrorDeclaration): IrErrorDeclaration =
|
||||||
IrErrorDeclarationImpl(declaration.startOffset, declaration.endOffset, declaration.descriptor)
|
IrErrorDeclarationImpl(declaration.startOffset, declaration.endOffset, declaration.descriptor)
|
||||||
@@ -760,7 +759,7 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
expression.startOffset, expression.endOffset,
|
expression.startOffset, expression.endOffset,
|
||||||
expression.type.remapType(),
|
expression.type.remapType(),
|
||||||
expression.description
|
expression.description
|
||||||
)
|
).copyAttributes(expression)
|
||||||
|
|
||||||
override fun visitErrorCallExpression(expression: IrErrorCallExpression): IrErrorCallExpression =
|
override fun visitErrorCallExpression(expression: IrErrorCallExpression): IrErrorCallExpression =
|
||||||
IrErrorCallExpressionImpl(
|
IrErrorCallExpressionImpl(
|
||||||
@@ -770,7 +769,5 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
).apply {
|
).apply {
|
||||||
explicitReceiver = expression.explicitReceiver?.transform()
|
explicitReceiver = expression.explicitReceiver?.transform()
|
||||||
expression.arguments.transformTo(arguments)
|
expression.arguments.transformTo(arguments)
|
||||||
}
|
}.copyAttributes(expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
// !LANGUAGE: +InlineClasses
|
||||||
|
inline class X(val s: String)
|
||||||
|
fun foo(x: X, block: (X) -> String = { it.s }) = block(x)
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return foo(X("OK"))
|
||||||
|
}
|
||||||
+5
@@ -12640,6 +12640,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/kt28920_javaPrimitiveType.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/kt28920_javaPrimitiveType.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mangledDefaultParameterFunction.kt")
|
||||||
|
public void testMangledDefaultParameterFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/mangledDefaultParameterFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("mapInlineClassesWithSuppressWildcardsMode.kt")
|
@TestMetadata("mapInlineClassesWithSuppressWildcardsMode.kt")
|
||||||
public void testMapInlineClassesWithSuppressWildcardsMode() throws Exception {
|
public void testMapInlineClassesWithSuppressWildcardsMode() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/mapInlineClassesWithSuppressWildcardsMode.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/mapInlineClassesWithSuppressWildcardsMode.kt");
|
||||||
|
|||||||
+5
@@ -12645,6 +12645,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/kt28920_javaPrimitiveType.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/kt28920_javaPrimitiveType.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mangledDefaultParameterFunction.kt")
|
||||||
|
public void testMangledDefaultParameterFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/mangledDefaultParameterFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("mapInlineClassesWithSuppressWildcardsMode.kt")
|
@TestMetadata("mapInlineClassesWithSuppressWildcardsMode.kt")
|
||||||
public void testMapInlineClassesWithSuppressWildcardsMode() throws Exception {
|
public void testMapInlineClassesWithSuppressWildcardsMode() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/mapInlineClassesWithSuppressWildcardsMode.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/mapInlineClassesWithSuppressWildcardsMode.kt");
|
||||||
|
|||||||
+5
@@ -11525,6 +11525,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/kt28920_javaPrimitiveType.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/kt28920_javaPrimitiveType.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mangledDefaultParameterFunction.kt")
|
||||||
|
public void testMangledDefaultParameterFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/mangledDefaultParameterFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("mapInlineClassesWithSuppressWildcardsMode.kt")
|
@TestMetadata("mapInlineClassesWithSuppressWildcardsMode.kt")
|
||||||
public void testMapInlineClassesWithSuppressWildcardsMode() throws Exception {
|
public void testMapInlineClassesWithSuppressWildcardsMode() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/mapInlineClassesWithSuppressWildcardsMode.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/mapInlineClassesWithSuppressWildcardsMode.kt");
|
||||||
|
|||||||
Generated
+5
@@ -9935,6 +9935,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/kt28585.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/kt28585.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mangledDefaultParameterFunction.kt")
|
||||||
|
public void testMangledDefaultParameterFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/mangledDefaultParameterFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("noAssertionsOnInlineClassBasedOnNullableType.kt")
|
@TestMetadata("noAssertionsOnInlineClassBasedOnNullableType.kt")
|
||||||
public void testNoAssertionsOnInlineClassBasedOnNullableType() throws Exception {
|
public void testNoAssertionsOnInlineClassBasedOnNullableType() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/noAssertionsOnInlineClassBasedOnNullableType.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/noAssertionsOnInlineClassBasedOnNullableType.kt");
|
||||||
|
|||||||
+5
@@ -11090,6 +11090,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/kt28585.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/kt28585.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("mangledDefaultParameterFunction.kt")
|
||||||
|
public void testMangledDefaultParameterFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/mangledDefaultParameterFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("noAssertionsOnInlineClassBasedOnNullableType.kt")
|
@TestMetadata("noAssertionsOnInlineClassBasedOnNullableType.kt")
|
||||||
public void testNoAssertionsOnInlineClassBasedOnNullableType() throws Exception {
|
public void testNoAssertionsOnInlineClassBasedOnNullableType() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/inlineClasses/noAssertionsOnInlineClassBasedOnNullableType.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/noAssertionsOnInlineClassBasedOnNullableType.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user