Deep copy fixes + sanitize file names for module dumps

This commit is contained in:
Dmitry Petrov
2017-05-04 13:51:17 +03:00
parent 506941e7e0
commit d5feb2d6f4
4 changed files with 8 additions and 3 deletions
@@ -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 {