Deep copy fixes + sanitize file names for module dumps
This commit is contained in:
@@ -94,9 +94,13 @@ open class DeepCopyIrTree : IrElementTransformerVoid() {
|
||||
mapClassDeclaration(declaration.descriptor),
|
||||
declaration.declarations.map { it.transform() }
|
||||
).apply {
|
||||
thisReceiver = declaration.thisReceiver?.withDescriptor(descriptor.thisAsReceiverParameter)
|
||||
transformTypeParameters(declaration, descriptor.declaredTypeParameters)
|
||||
}
|
||||
|
||||
private fun IrValueParameter.withDescriptor(newDescriptor: ParameterDescriptor) =
|
||||
IrValueParameterImpl(startOffset, endOffset, origin, newDescriptor, defaultValue?.transform())
|
||||
|
||||
override fun visitTypeAlias(declaration: IrTypeAlias): IrTypeAlias =
|
||||
IrTypeAliasImpl(
|
||||
declaration.startOffset, declaration.endOffset,
|
||||
@@ -421,7 +425,7 @@ open class DeepCopyIrTree : IrElementTransformerVoid() {
|
||||
newProperty, newFieldSymbol, newGetterSymbol, newSetterSymbol,
|
||||
expression.transformTypeArguments(newProperty),
|
||||
mapStatementOrigin(expression.origin)
|
||||
)
|
||||
).transformValueArguments(expression)
|
||||
}
|
||||
|
||||
override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference): IrExpression {
|
||||
|
||||
@@ -53,7 +53,8 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
|
||||
private fun doTestIrModuleDependencies(wholeFile: File, irModule: IrModuleFragment) {
|
||||
irModule.dependencyModules.forEach { irDependencyModule ->
|
||||
val actual = irDependencyModule.dump()
|
||||
val expectedFileName = wholeFile.absolutePath.replace(".kt", "__${irDependencyModule.descriptor.name.asString()}.txt")
|
||||
val sanitizedModuleName = StringUtil.sanitizeJavaIdentifier(irDependencyModule.descriptor.name.asString())
|
||||
val expectedFileName = wholeFile.absolutePath.replace(".kt", "__$sanitizedModuleName.txt")
|
||||
KotlinTestUtils.assertEqualsToFile(File(expectedFileName), actual)
|
||||
}
|
||||
}
|
||||
@@ -83,7 +84,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
|
||||
|
||||
val irFileCopyOld = irFile.deepCopyOld()
|
||||
val copiedTreesOld = irFileCopyOld.dumpTreesFromLineNumber(irTreeFileLabel.lineNumber)
|
||||
TestCase.assertEquals("IR dump mismatch after old deep copy", actualTrees, copiedTrees)
|
||||
TestCase.assertEquals("IR dump mismatch after old deep copy", actualTrees, copiedTreesOld)
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user