FIR/LC: filter out scripts for facade creation
^KTIJ-22016 Fixed
This commit is contained in:
committed by
Ilya Kirillov
parent
cd80bddfcd
commit
b18999be82
+4
-3
@@ -32,10 +32,11 @@ class SymbolLightClassFacadeCache(private val project: Project) {
|
||||
ktFiles: List<KtFile>,
|
||||
facadeClassFqName: FqName,
|
||||
): KtLightClassForFacade? {
|
||||
if (ktFiles.isEmpty()) return null
|
||||
val key = FacadeKey(facadeClassFqName, ktFiles.toSet())
|
||||
val ktFilesWithoutScript = ktFiles.filterNot { it.isScript() }
|
||||
if (ktFilesWithoutScript.isEmpty()) return null
|
||||
val key = FacadeKey(facadeClassFqName, ktFilesWithoutScript.toSet())
|
||||
return cache.getOrPut(key) {
|
||||
getOrCreateFirLightFacadeNoCache(ktFiles, facadeClassFqName)
|
||||
getOrCreateFirLightFacadeNoCache(ktFilesWithoutScript, facadeClassFqName)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
|
||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.asJava.LightClassTestCommon
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.renderClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.base.service.withExtendedTypeRenderer
|
||||
@@ -24,6 +25,7 @@ abstract class AbstractSymbolLightClassesFacadeTest(
|
||||
) : AbstractSymbolLightClassesTestBase(configurator) {
|
||||
override fun getRenderResult(ktFile: KtFile, testDataFile: Path, module: TestModule, project: Project): String {
|
||||
val lightClasses = getFacades(project)
|
||||
if (lightClasses.isEmpty()) return LightClassTestCommon.NOT_GENERATED_DIRECTIVE
|
||||
return withExtendedTypeRenderer((testDataFile)) {
|
||||
lightClasses.joinToString("\n\n") { it.renderClass() }
|
||||
}
|
||||
|
||||
+2
@@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.SyntaxTraverser
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
|
||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.asJava.LightClassTestCommon
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.renderClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.base.service.withExtendedTypeRenderer
|
||||
@@ -25,6 +26,7 @@ abstract class AbstractSymbolLightClassesLoadingTest(
|
||||
|
||||
override fun getRenderResult(ktFile: KtFile, testDataFile: Path, module: TestModule, project: Project): String {
|
||||
val lightClasses = getLightClassesFromFile(ktFile, project)
|
||||
if (lightClasses.isEmpty()) return LightClassTestCommon.NOT_GENERATED_DIRECTIVE
|
||||
return withExtendedTypeRenderer(testDataFile) {
|
||||
lightClasses.joinToString("\n\n") { it.renderClass() }
|
||||
}
|
||||
|
||||
+4
-1
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.analysis.test.framework.services.libraries.CompiledL
|
||||
import org.jetbrains.kotlin.analysis.test.framework.services.libraries.CompilerExecutor
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
|
||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||
import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
|
||||
import org.jetbrains.kotlin.light.classes.symbol.base.service.NullabilityAnnotationSourceProvider
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
@@ -54,7 +55,9 @@ abstract class AbstractSymbolLightClassesTestBase(
|
||||
if (stopIfCompilationErrorDirectivePresent && CompilerExecutor.Directives.COMPILATION_ERRORS in module.directives) {
|
||||
return
|
||||
}
|
||||
val testDataFile = module.files.first { it.name.endsWith(".kt") }.originalFile.toPath()
|
||||
val testDataFile = module.files.first {
|
||||
it.originalFile.extension in DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
|
||||
}.originalFile.toPath()
|
||||
|
||||
val ktFile = ktFiles.first()
|
||||
val project = ktFile.project
|
||||
|
||||
+7
-1
@@ -21,7 +21,7 @@ import java.util.regex.Pattern;
|
||||
public class SymbolLightClassesFacadeForLibraryTestGenerated extends AbstractSymbolLightClassesFacadeForLibraryTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInUltraLightFacades() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightFacades"), Pattern.compile("^(.+)\\.(kt)$"), null, true);
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightFacades"), Pattern.compile("^(.+)\\.(kt|kts)$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -84,6 +84,12 @@ public class SymbolLightClassesFacadeForLibraryTestGenerated extends AbstractSym
|
||||
runTest("compiler/testData/asJava/ultraLightFacades/properties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("script.kts")
|
||||
public void testScript() throws Exception {
|
||||
runTest("compiler/testData/asJava/ultraLightFacades/script.kts");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("simpleFunctions.kt")
|
||||
public void testSimpleFunctions() throws Exception {
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ import java.util.regex.Pattern;
|
||||
public class SymbolLightClassesLoadingForLibraryTestGenerated extends AbstractSymbolLightClassesLoadingForLibraryTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInUltraLightClasses() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightClasses"), Pattern.compile("^(.+)\\.(kt)$"), null, true);
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightClasses"), Pattern.compile("^(.+)\\.(kt|kts)$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+7
-1
@@ -21,7 +21,7 @@ import java.util.regex.Pattern;
|
||||
public class SymbolLightClassesFacadeForSourceTestGenerated extends AbstractSymbolLightClassesFacadeForSourceTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInUltraLightFacades() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightFacades"), Pattern.compile("^(.+)\\.(kt)$"), null, true);
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightFacades"), Pattern.compile("^(.+)\\.(kt|kts)$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -84,6 +84,12 @@ public class SymbolLightClassesFacadeForSourceTestGenerated extends AbstractSymb
|
||||
runTest("compiler/testData/asJava/ultraLightFacades/properties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("script.kts")
|
||||
public void testScript() throws Exception {
|
||||
runTest("compiler/testData/asJava/ultraLightFacades/script.kts");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("simpleFunctions.kt")
|
||||
public void testSimpleFunctions() throws Exception {
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ import java.util.regex.Pattern;
|
||||
public class SymbolLightClassesLoadingForSourceTestGenerated extends AbstractSymbolLightClassesLoadingForSourceTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInUltraLightClasses() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightClasses"), Pattern.compile("^(.+)\\.(kt)$"), null, true);
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/asJava/ultraLightClasses"), Pattern.compile("^(.+)\\.(kt|kts)$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user