From 14ed660f4f3425b68c0c576b0d9f02a7e95d2b8c Mon Sep 17 00:00:00 2001 From: Nikita Bobko Date: Tue, 25 May 2021 20:01:37 +0200 Subject: [PATCH] [cleanup] Remove unused AbstractFirMultiModuleResolveTest --- .../generators/tests/idea/GenerateTests.kt | 4 - .../api/AbstractFirMultiModuleResolveTest.kt | 183 ------------------ .../FirMultiModuleResolveTestGenerated.java | 31 --- 3 files changed, 218 deletions(-) delete mode 100644 idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt delete mode 100644 idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleResolveTestGenerated.java diff --git a/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt b/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt index efbf2254577..dd98645716e 100644 --- a/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt +++ b/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt @@ -1017,10 +1017,6 @@ fun main(args: Array) { } testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "idea/testData") { - testClass { - model("fir/multiModule", recursive = false, extension = null) - } - testClass { model("fir/lazyResolve", extension = "test", singleClass = true, filenameStartsLowerCase = true) } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt deleted file mode 100644 index 2f73342f836..00000000000 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleResolveTest.kt +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea.fir.low.level.api - -import com.intellij.openapi.module.Module -import com.intellij.openapi.vfs.VirtualFile -import com.intellij.psi.PsiFile -import com.intellij.psi.PsiManager -import com.intellij.psi.search.FileTypeIndex -import org.jetbrains.kotlin.fir.* -import org.jetbrains.kotlin.fir.builder.RawFirBuilder -import org.jetbrains.kotlin.fir.declarations.FirFile -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider -import org.jetbrains.kotlin.fir.java.* -import org.jetbrains.kotlin.fir.resolve.ScopeSession -import org.jetbrains.kotlin.fir.resolve.firProvider -import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl -import org.jetbrains.kotlin.fir.resolve.transformers.* -import org.jetbrains.kotlin.fir.session.FirModuleInfoBasedModuleData -import org.jetbrains.kotlin.fir.session.FirSessionFactory -import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo -import org.jetbrains.kotlin.idea.caches.project.isLibraryClasses -import org.jetbrains.kotlin.idea.caches.project.productionSourceInfo -import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider -import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.moduleInfoUnsafe -import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromDirStructure -import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest -import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil -import org.jetbrains.kotlin.idea.test.PluginTestCaseBase -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.test.KotlinTestUtils -import org.jetbrains.kotlin.test.TestJdkKind -import java.io.File - -abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { - override fun getTestDataPath(): String { - return File(PluginTestCaseBase.getTestDataPathBase(), "/fir/multiModule").path + File.separator - } - - fun doTest(dirPath: String) { - setupMppProjectFromDirStructure(File(dirPath)) - val useFullJdk = "full" in dirPath - val jdkKind = if (useFullJdk) TestJdkKind.FULL_JDK else TestJdkKind.MOCK_JDK - for (module in project.allModules().drop(1)) { - ConfigLibraryUtil.configureSdk( - module, - PluginTestCaseBase.addJdk(testRootDisposable) { PluginTestCaseBase.jdk(jdkKind) } - ) - } - doFirResolveTest(dirPath) - } - - private fun createSession(module: Module, provider: FirProjectSessionProvider): FirSession { - val moduleInfo = module.productionSourceInfo()!! - return FirSessionFactory.createJavaModuleBasedSession( - FirModuleInfoBasedModuleData(moduleInfo), - provider, - moduleInfo.contentScope(), - project, - providerAndScopeForIncrementalCompilation = null - ) - } - - private fun createLibrarySession(moduleInfo: IdeaModuleInfo, provider: FirProjectSessionProvider): FirSession { - val contentScope = moduleInfo.contentScope() - return FirSessionFactory.createLibrarySession( - mainModuleName = Name.identifier(moduleInfo.moduleOrigin.name), - provider, - SingleModuleDataProvider(FirModuleInfoBasedModuleData(moduleInfo)), - contentScope, - project, - IDEPackagePartProvider(contentScope) - ) - } - - private fun doFirResolveTest(dirPath: String) { - val firFilesPerSession = mutableMapOf>() - val processorsPerSession = mutableMapOf>() - val sessions = mutableListOf() - val provider = FirProjectSessionProvider() - for (module in project.allModules().drop(1)) { - val session = createSession(module, provider) - sessions += session - - val firProvider = (session.firProvider as FirProviderImpl) - val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider) - val psiManager = PsiManager.getInstance(project) - - val ideaModuleInfo = session.moduleData.moduleInfoUnsafe() - - ideaModuleInfo.dependenciesWithoutSelf().forEach { - if (it is IdeaModuleInfo && it.isLibraryClasses()) { - createLibrarySession(it, provider) - } - } - - val contentScope = ideaModuleInfo.contentScope() - - val files = FileTypeIndex.getFiles(KotlinFileType.INSTANCE, contentScope) - - println("Got vfiles: ${files.size}") - val firFiles = mutableListOf() - files.forEach { - val file = psiManager.findFile(it) as? KtFile ?: return@forEach - val firFile = builder.buildFirFile(file) - firProvider.recordFile(firFile) - firFiles += firFile - } - firFilesPerSession[session] = firFiles - processorsPerSession[session] = createAllTransformerBasedResolveProcessors(session) - } - println("Raw fir up, files: ${firFilesPerSession.values.flatten().size}") - - fun expectedTxtPath(virtualFile: VirtualFile): String { - val virtualPath = virtualFile.path - var result: String? = null - val root = File(dirPath) - for (file in root.walkTopDown()) { - if (!file.isDirectory && file.name in virtualPath) { - result = file.absolutePath.replace(".kt", ".txt") - } - } - return result!! - } - - // Start from 1 to miss raw FIR building - for (phaseIndex in 1 until FirResolvePhase.values().size) { - for (session in sessions) { - val firFiles = firFilesPerSession[session]!! - val processors = processorsPerSession[session]!! - for (file in firFiles) { - val processor = processors[phaseIndex - 1] - processor.processFile(file) - } - } - } - - for (file in firFilesPerSession.values.flatten()) { - val firFileDump = StringBuilder().also { file.accept(FirRenderer(it), null) }.toString() - val expectedPath = expectedTxtPath((file.psi as PsiFile).virtualFile) - KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump) - } - - /* - * This code is commented due to deleted JavaSymbolProvider.getJavaTopLevelClasses() method - * There is no replace for this code because of there are no tests for this test runner, so - * it is questionable, do we need java class check (or that test runner at all) - */ -// val processedJavaClasses = mutableSetOf() -// val javaFirDump = StringBuilder().also { builder -> -// val renderer = FirRenderer(builder) -// for (session in sessions) { -// val symbolProvider = session.firSymbolProvider as FirCompositeSymbolProvider -// val javaProvider = symbolProvider.providers.filterIsInstance().first() -// for (javaClass in javaProvider.getJavaTopLevelClasses().sortedBy { it.name }) { -// if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) continue -// renderJavaClass(renderer, javaClass, session) -// processedJavaClasses += javaClass -// } -// } -// }.toString() -// if (javaFirDump.isNotEmpty()) { -// KotlinTestUtils.assertEqualsToFile(File("$dirPath/extraDump.java.txt"), javaFirDump) -// } - } - - private fun createAllTransformerBasedResolveProcessors( - session: FirSession, - scopeSession: ScopeSession? = null, - pluginPhasesEnabled: Boolean = false, - ): List { - return createAllResolveProcessors(scopeSession, pluginPhasesEnabled) { - createTransformerBasedProcessorByPhase(session, it) - } - } -} - diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleResolveTestGenerated.java b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleResolveTestGenerated.java deleted file mode 100644 index 85261163fd3..00000000000 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleResolveTestGenerated.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea.fir.low.level.api; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; -import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.util.KtTestUtil; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.runner.RunWith; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@TestMetadata("idea/testData/fir/multiModule") -@TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) -public class FirMultiModuleResolveTestGenerated extends AbstractFirMultiModuleResolveTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); - } - - public void testAllFilesPresentInMultiModule() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/fir/multiModule"), Pattern.compile("^([^\\.]+)$"), null, false); - } -}