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) {