FIR: split transformer into three (imports / types / descriptors)

This commit is contained in:
Mikhail Glukhikh
2018-03-20 15:25:16 +03:00
parent 8933c9035b
commit 6c8a326e15
22 changed files with 243 additions and 81 deletions
@@ -6,10 +6,11 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.descriptors.FirClassifierResolveTransformer
import org.jetbrains.kotlin.descriptors.FirTotalResolveTransformer
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
import org.jetbrains.kotlin.fir.resolve.impl.FirQualifierResolverImpl
import org.jetbrains.kotlin.fir.resolve.impl.FirTypeResolverImpl
@@ -47,13 +48,13 @@ abstract class AbstractFirResolveTestCase : KotlinTestWithEnvironment() {
val builder = RawFirBuilder(session)
val transformer = FirClassifierResolveTransformer()
val transformer = FirTotalResolveTransformer()
val firFiles = ktFiles.map {
val firFile = builder.buildFirFile(it)
(session.service<FirProvider>() as FirProviderImpl).recordFile(firFile)
firFile
}.onEach {
it.transform<FirFile, Nothing?>(transformer, null)
}.also {
transformer.processFiles(it)
}
val firFileDump = StringBuilder().also { firFiles.first().accept(FirRenderer(it), null) }.toString()
@@ -51,6 +51,12 @@ public class FirResolveTestCaseGenerated extends AbstractFirResolveTestCase {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/fir/resolve/multifile"), Pattern.compile("^([^.]+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("simpleAliasedImport.kt")
public void testSimpleAliasedImport() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/fir/resolve/multifile/simpleAliasedImport.kt");
doTest(fileName);
}
@TestMetadata("simpleImport.kt")
public void testSimpleImport() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/fir/resolve/multifile/simpleImport.kt");