From d7f28d9e19bbe849f2bc02c33bfb55da54870b94 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Wed, 26 Jun 2019 15:58:17 +0300 Subject: [PATCH] Fix flaky tests for incorrect language version recognition (UltraLightFacadeClassTestGenerated.testCoroutines and UltraLightClassLoadingTestGenerated.testCoroutines tests) --- .../caches/resolve/IDELightClassGenerationSupport.kt | 5 +++-- .../asJava/classes/AbstractUltraLightClassLoadingTest.kt | 8 ++++++++ .../asJava/classes/AbstractUltraLightClassSanityTest.kt | 9 +++++++++ .../classes/AbstractUltraLightFacadeClassLoadingTest.kt | 8 ++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index 85c275e1e08..98d1055876c 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -39,12 +39,14 @@ import org.jetbrains.kotlin.codegen.ClassBuilderMode import org.jetbrains.kotlin.codegen.JvmCodegenUtil import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper import org.jetbrains.kotlin.config.JvmTarget +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassContexts import org.jetbrains.kotlin.idea.caches.lightClasses.LazyLightClassDataHolder import org.jetbrains.kotlin.idea.facet.KotlinFacet +import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.resolve.frontendService import org.jetbrains.kotlin.idea.stubindex.KotlinTypeAliasShortNameIndex import org.jetbrains.kotlin.lexer.KtTokens @@ -74,8 +76,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG } override val isReleasedCoroutine - get() = KotlinFacet.get(module) - ?.configuration?.settings?.languageLevel?.let { it.major >= 1 && it.minor >= 3 } ?: true + get() = module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) override fun isTooComplexForUltraLightGeneration(element: KtDeclaration): Boolean { val facet = KotlinFacet.get(module) diff --git a/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassLoadingTest.kt b/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassLoadingTest.kt index a3b719a9428..d818b50ddc2 100644 --- a/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassLoadingTest.kt +++ b/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassLoadingTest.kt @@ -6,8 +6,11 @@ package org.jetbrains.kotlin.asJava.classes import com.intellij.testFramework.LightProjectDescriptor +import junit.framework.TestCase import org.jetbrains.kotlin.asJava.LightClassGenerationSupport +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.perf.UltraLightChecker +import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.psi.KtClassOrObject @@ -38,6 +41,11 @@ abstract class AbstractUltraLightClassLoadingTest : KotlinLightCodeInsightFixtur return } + TestCase.assertTrue( + "Test should be runned under language version that supports released coroutines", + module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) + ) + for (ktClass in UltraLightChecker.allClasses(file)) { val ultraLightClass = UltraLightChecker.checkClassEquivalence(ktClass) if (ultraLightClass != null) { diff --git a/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassSanityTest.kt b/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassSanityTest.kt index d9fef487c94..a6455b983f9 100644 --- a/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassSanityTest.kt +++ b/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightClassSanityTest.kt @@ -6,7 +6,10 @@ package org.jetbrains.kotlin.asJava.classes import com.intellij.testFramework.LightProjectDescriptor +import junit.framework.TestCase +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.perf.UltraLightChecker +import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.psi.KtFile @@ -22,6 +25,12 @@ abstract class AbstractUltraLightClassSanityTest : KotlinLightCodeInsightFixture } val file = myFixture.addFileToProject(testDataPath, ioFile.readText()) as KtFile + + TestCase.assertTrue( + "Test should be runned under language version that supports released coroutines", + module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) + ) + UltraLightChecker.checkClassEquivalence(file) } } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightFacadeClassLoadingTest.kt b/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightFacadeClassLoadingTest.kt index dc16369691d..37c0bbc4049 100644 --- a/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightFacadeClassLoadingTest.kt +++ b/idea/tests/org/jetbrains/kotlin/asJava/classes/AbstractUltraLightFacadeClassLoadingTest.kt @@ -7,8 +7,11 @@ package org.jetbrains.kotlin.asJava.classes import com.intellij.psi.search.GlobalSearchScope import com.intellij.testFramework.LightProjectDescriptor +import junit.framework.TestCase import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.perf.UltraLightChecker +import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.kdoc.psi.api.KDoc @@ -31,6 +34,11 @@ abstract class AbstractUltraLightFacadeClassTest : KotlinLightCodeInsightFixture val scope = GlobalSearchScope.allScope(project) val facades = KotlinAsJavaSupport.getInstance(project).getFacadeNames(FqName.ROOT, scope) + TestCase.assertTrue( + "Test should be runned under language version that supports released coroutines", + module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) + ) + for (facadeName in facades) { val ultraLightClass = UltraLightChecker.checkFacadeEquivalence(FqName(facadeName), scope, project) if (ultraLightClass != null) {