Deep copy for IR elements.

NB: we can transform descriptors during copying.
This commit is contained in:
Dmitry Petrov
2016-09-23 17:26:54 +03:00
parent 31d971a302
commit 45c999788a
28 changed files with 779 additions and 165 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.ir
import com.intellij.openapi.util.text.StringUtil
import junit.framework.TestCase
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.util.DeepCopyIrTree
import org.jetbrains.kotlin.ir.util.dump
import org.jetbrains.kotlin.ir.util.dumpTreesFromLineNumber
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -51,6 +52,10 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
for (irTreeFileLabel in expectations.irTreeFileLabels) {
val actualTrees = irFile.dumpTreesFromLineNumber(irTreeFileLabel.lineNumber)
KotlinTestUtils.assertEqualsToFile(irTreeFileLabel.expectedTextFile, actualTrees)
// Check that deep copy produces an equivalent result
val copiedTrees = irFile.transform(DeepCopyIrTree(), null).dumpTreesFromLineNumber(irTreeFileLabel.lineNumber)
KotlinTestUtils.assertEqualsToFile(irTreeFileLabel.expectedTextFile, copiedTrees)
}
try {