Enable ultra-light classes by default

^KT-29267 Fixed
This commit is contained in:
Denis Zharkov
2019-02-25 15:26:36 +03:00
committed by Igor Yakovlev
parent e8fbd42f7c
commit 1b5f72bd59
17 changed files with 56 additions and 34 deletions
@@ -65,7 +65,8 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
if (element.shouldNotBeVisibleAsLightClass() ||
element is KtObjectDeclaration && element.isObjectLiteral() ||
element.isLocal ||
element is KtEnumEntry
element is KtEnumEntry ||
element.containingKtFile.isScript()
) {
return null
}
+1 -1
View File
@@ -159,7 +159,7 @@
<registryKey key="kotlin.use.ultra.light.classes"
description="Whether to use an experimental implementation of Kotlin-as-Java classes"
defaultValue="false"
defaultValue="true"
restartRequired="false"/>
<registryKey key="kotlin.uast.multiresolve.enabled"
+1 -1
View File
@@ -159,7 +159,7 @@
<registryKey key="kotlin.use.ultra.light.classes"
description="Whether to use an experimental implementation of Kotlin-as-Java classes"
defaultValue="false"
defaultValue="true"
restartRequired="false"/>
<registryKey key="kotlin.uast.multiresolve.enabled"
@@ -1,4 +1,3 @@
// ULTRA_LIGHT_CLASSES
package test
expect interface Closable {
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.checkers
import org.jetbrains.kotlin.idea.perf.forceUsingUltraLightClassesForTest
import org.jetbrains.kotlin.idea.perf.forceUsingOldLightClassesForTest
abstract class AbstractJavaAgainstKotlinSourceCheckerTest : AbstractJavaAgainstKotlinCheckerTest() {
fun doTest(path: String) {
@@ -13,9 +13,9 @@ abstract class AbstractJavaAgainstKotlinSourceCheckerTest : AbstractJavaAgainstK
}
}
abstract class AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest : AbstractJavaAgainstKotlinSourceCheckerTest() {
abstract class AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest : AbstractJavaAgainstKotlinSourceCheckerTest() {
override fun setUp() {
super.setUp()
forceUsingUltraLightClassesForTest()
forceUsingOldLightClassesForTest()
}
}
@@ -18,11 +18,11 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@RunWith(JUnit3RunnerWithInners.class)
public class JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated extends AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest {
public class JavaAgainstKotlinSourceCheckerWithoutUltraLightTestGenerated extends AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest {
@TestMetadata("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class JavaAgainstKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest {
public static class JavaAgainstKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
}
@@ -195,7 +195,7 @@ public class JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated extends A
@TestMetadata("idea/testData/kotlinAndJavaChecker/javaWithKotlin")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class JavaWithKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest {
public static class JavaWithKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
}
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.idea.KotlinDaemonAnalyzerTestCase
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassConstructionContext
import org.jetbrains.kotlin.idea.caches.resolve.LightClassLazinessChecker.Tracker.Level.*
import org.jetbrains.kotlin.idea.completion.test.withServiceRegistered
import org.jetbrains.kotlin.idea.perf.forceUsingOldLightClassesForTest
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
@@ -44,6 +45,7 @@ import kotlin.test.assertTrue
abstract class AbstractIdeLightClassTest : KotlinLightCodeInsightFixtureTestCase() {
fun doTest(testDataPath: String) {
forceUsingOldLightClassesForTest()
val extraFilePath = when {
testDataPath.endsWith(".kt") -> testDataPath.replace(".kt", ".extra.kt")
testDataPath.endsWith(".kts") -> testDataPath.replace(".kts", ".extra.kts")
@@ -49,8 +49,8 @@ public class LightClassEqualsTest extends KotlinLightCodeInsightFixtureTestCase
private static void doTestEquals(@Nullable KtClassOrObject origin) {
assertNotNull(origin);
PsiClass lightClass1 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin);
PsiClass lightClass2 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin);
PsiClass lightClass1 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin, true);
PsiClass lightClass2 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin, true);
assertNotNull(lightClass1);
assertNotNull(lightClass2);
@@ -13,12 +13,10 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.idea.codeInsight.GotoSuperActionHandler
import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromDirStructure
import org.jetbrains.kotlin.idea.perf.forceUsingUltraLightClassesForTest
import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.test.extractMarkerOffset
import org.jetbrains.kotlin.idea.test.findFileWithCaret
import org.jetbrains.kotlin.test.InTextDirectivesUtils
import java.io.File
abstract class AbstractKotlinNavigationMultiModuleTest : AbstractMultiModuleTest() {
@@ -27,9 +25,6 @@ abstract class AbstractKotlinNavigationMultiModuleTest : AbstractMultiModuleTest
protected fun doTest(testDataDir: String) {
setupMppProjectFromDirStructure(File(testDataDir))
val file = project.findFileWithCaret()
if (InTextDirectivesUtils.isDirectiveDefined(file.text, "ULTRA_LIGHT_CLASSES")) {
forceUsingUltraLightClassesForTest()
}
val doc = PsiDocumentManager.getInstance(myProject).getDocument(file)!!
val offset = doc.extractMarkerOffset(project, "<caret>")
@@ -19,10 +19,10 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile
import org.junit.Assert
fun UsefulTestCase.forceUsingUltraLightClassesForTest() {
KtUltraLightClass.forceUsingUltraLightClasses = true
fun UsefulTestCase.forceUsingOldLightClassesForTest() {
KtUltraLightClass.forceUsingOldLightClasses = true
Disposer.register(testRootDisposable, Disposable {
KtUltraLightClass.forceUsingUltraLightClasses = false
KtUltraLightClass.forceUsingOldLightClasses = false
})
}
@@ -37,7 +37,7 @@ object UltraLightChecker {
SyntaxTraverser.psiTraverser(file).filter(KtClassOrObject::class.java).toList()
fun checkClassEquivalence(ktClass: KtClassOrObject): KtUltraLightClass? {
val gold = KtLightClassForSourceDeclaration.create(ktClass)
val gold = KtLightClassForSourceDeclaration.createNoCache(ktClass, forceUsingOldLightClasses = true)
val ultraLightClass = LightClassGenerationSupport.getInstance(ktClass.project).createUltraLightClass(ktClass) ?: return null
if (gold != null) {
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.asJava.toLightMethods
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.perf.forceUsingUltraLightClassesForTest
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinChangeSignatureDialog.Companion.getTypeCodeFragmentContext
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinChangeSignatureDialog.Companion.getTypeInfo
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinMethodNode
@@ -568,7 +567,6 @@ class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() {
fun testConvertParameterToReceiverForMember1() = doTest { receiverParameterInfo = newParameters[0] }
fun testConvertParameterToReceiverForMemberUltraLight() {
forceUsingUltraLightClassesForTest()
doTest { receiverParameterInfo = newParameters[0] }
}