Enable ultra-light classes by default
^KT-29267 Fixed
This commit is contained in:
committed by
Igor Yakovlev
parent
e8fbd42f7c
commit
1b5f72bd59
+14
-6
@@ -70,7 +70,10 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.swing.Icon
|
import javax.swing.Icon
|
||||||
|
|
||||||
abstract class KtLightClassForSourceDeclaration(protected val classOrObject: KtClassOrObject) : KtLazyLightClass(classOrObject.manager),
|
abstract class KtLightClassForSourceDeclaration(
|
||||||
|
protected val classOrObject: KtClassOrObject,
|
||||||
|
private val forceUsingOldLightClasses: Boolean = false
|
||||||
|
) : KtLazyLightClass(classOrObject.manager),
|
||||||
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
|
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
|
||||||
private val lightIdentifier = KtLightIdentifier(this, classOrObject)
|
private val lightIdentifier = KtLightIdentifier(this, classOrObject)
|
||||||
|
|
||||||
@@ -303,7 +306,12 @@ abstract class KtLightClassForSourceDeclaration(protected val classOrObject: KtC
|
|||||||
// inner classes with null names can't be searched for and can't be used from java anyway
|
// inner classes with null names can't be searched for and can't be used from java anyway
|
||||||
// we can't prohibit creating light classes with null names either since they can contain members
|
// we can't prohibit creating light classes with null names either since they can contain members
|
||||||
.filter { it.name != null }
|
.filter { it.name != null }
|
||||||
.mapNotNullTo(result) { create(it) }
|
.mapNotNullTo(result) {
|
||||||
|
if (!forceUsingOldLightClasses)
|
||||||
|
create(it)
|
||||||
|
else
|
||||||
|
createNoCache(it, forceUsingOldLightClasses = true)
|
||||||
|
}
|
||||||
|
|
||||||
if (classOrObject.hasInterfaceDefaultImpls) {
|
if (classOrObject.hasInterfaceDefaultImpls) {
|
||||||
result.add(KtLightClassForInterfaceDefaultImpls(classOrObject))
|
result.add(KtLightClassForInterfaceDefaultImpls(classOrObject))
|
||||||
@@ -334,10 +342,10 @@ abstract class KtLightClassForSourceDeclaration(protected val classOrObject: KtC
|
|||||||
fun create(classOrObject: KtClassOrObject): KtLightClassForSourceDeclaration? =
|
fun create(classOrObject: KtClassOrObject): KtLightClassForSourceDeclaration? =
|
||||||
CachedValuesManager.getCachedValue(classOrObject) {
|
CachedValuesManager.getCachedValue(classOrObject) {
|
||||||
CachedValueProvider.Result
|
CachedValueProvider.Result
|
||||||
.create(createNoCache(classOrObject), OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)
|
.create(createNoCache(classOrObject, KtUltraLightClass.forceUsingOldLightClasses), OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createNoCache(classOrObject: KtClassOrObject): KtLightClassForSourceDeclaration? {
|
fun createNoCache(classOrObject: KtClassOrObject, forceUsingOldLightClasses: Boolean): KtLightClassForSourceDeclaration? {
|
||||||
val containingFile = classOrObject.containingFile
|
val containingFile = classOrObject.containingFile
|
||||||
if (containingFile is KtCodeFragment) {
|
if (containingFile is KtCodeFragment) {
|
||||||
// Avoid building light classes for code fragments
|
// Avoid building light classes for code fragments
|
||||||
@@ -348,7 +356,7 @@ abstract class KtLightClassForSourceDeclaration(protected val classOrObject: KtC
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KtUltraLightClass.forceUsingUltraLightClasses || Registry.`is`("kotlin.use.ultra.light.classes", false)) {
|
if (!forceUsingOldLightClasses && Registry.`is`("kotlin.use.ultra.light.classes", true)) {
|
||||||
LightClassGenerationSupport.getInstance(classOrObject.project).createUltraLightClass(classOrObject)?.let { return it }
|
LightClassGenerationSupport.getInstance(classOrObject.project).createUltraLightClass(classOrObject)?.let { return it }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,7 +368,7 @@ abstract class KtLightClassForSourceDeclaration(protected val classOrObject: KtC
|
|||||||
KtLightClassForLocalDeclaration(classOrObject)
|
KtLightClassForLocalDeclaration(classOrObject)
|
||||||
|
|
||||||
else ->
|
else ->
|
||||||
KtLightClassImpl(classOrObject)
|
KtLightClassImpl(classOrObject, forceUsingOldLightClasses)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,10 @@ package org.jetbrains.kotlin.asJava.classes
|
|||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
|
|
||||||
// light class for top level or (inner/nested of top level) source declarations
|
// light class for top level or (inner/nested of top level) source declarations
|
||||||
open class KtLightClassImpl(classOrObject: KtClassOrObject) : KtLightClassForSourceDeclaration(classOrObject) {
|
open class KtLightClassImpl(
|
||||||
|
classOrObject: KtClassOrObject,
|
||||||
|
forceUsingOldLightClasses: Boolean = false
|
||||||
|
) : KtLightClassForSourceDeclaration(classOrObject, forceUsingOldLightClasses) {
|
||||||
override fun getQualifiedName() = classOrObject.fqName?.asString()
|
override fun getQualifiedName() = classOrObject.fqName?.asString()
|
||||||
|
|
||||||
override fun getParent() = if (classOrObject.isTopLevel())
|
override fun getParent() = if (classOrObject.isTopLevel())
|
||||||
@@ -28,4 +31,4 @@ open class KtLightClassImpl(classOrObject: KtClassOrObject) : KtLightClassForSou
|
|||||||
containingClass
|
containingClass
|
||||||
|
|
||||||
override fun copy() = KtLightClassImpl(classOrObject.copy() as KtClassOrObject)
|
override fun copy() = KtLightClassImpl(classOrObject.copy() as KtClassOrObject)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.intellij.psi.impl.light.LightMethodBuilder
|
|||||||
import com.intellij.psi.impl.light.LightTypeParameterListBuilder
|
import com.intellij.psi.impl.light.LightTypeParameterListBuilder
|
||||||
import com.intellij.psi.search.LocalSearchScope
|
import com.intellij.psi.search.LocalSearchScope
|
||||||
import com.intellij.psi.search.SearchScope
|
import com.intellij.psi.search.SearchScope
|
||||||
|
import com.intellij.psi.util.MethodSignatureBackedByPsiMethod
|
||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
||||||
@@ -72,6 +73,21 @@ internal abstract class KtUltraLightMethod(
|
|||||||
|
|
||||||
override fun getHierarchicalMethodSignature() = PsiSuperMethodImplUtil.getHierarchicalMethodSignature(this)
|
override fun getHierarchicalMethodSignature() = PsiSuperMethodImplUtil.getHierarchicalMethodSignature(this)
|
||||||
|
|
||||||
|
override fun findSuperMethodSignaturesIncludingStatic(checkAccess: Boolean): List<MethodSignatureBackedByPsiMethod> =
|
||||||
|
PsiSuperMethodImplUtil.findSuperMethodSignaturesIncludingStatic(this, checkAccess)
|
||||||
|
|
||||||
|
override fun findDeepestSuperMethod() = PsiSuperMethodImplUtil.findDeepestSuperMethod(this)
|
||||||
|
|
||||||
|
override fun findDeepestSuperMethods(): Array<out PsiMethod> = PsiSuperMethodImplUtil.findDeepestSuperMethods(this)
|
||||||
|
|
||||||
|
override fun findSuperMethods(): Array<out PsiMethod> = PsiSuperMethodImplUtil.findSuperMethods(this)
|
||||||
|
|
||||||
|
override fun findSuperMethods(checkAccess: Boolean): Array<out PsiMethod> =
|
||||||
|
PsiSuperMethodImplUtil.findSuperMethods(this, checkAccess)
|
||||||
|
|
||||||
|
override fun findSuperMethods(parentClass: PsiClass?): Array<out PsiMethod> =
|
||||||
|
PsiSuperMethodImplUtil.findSuperMethods(this, parentClass)
|
||||||
|
|
||||||
override fun getThrowsList(): PsiReferenceList = _throwsList
|
override fun getThrowsList(): PsiReferenceList = _throwsList
|
||||||
|
|
||||||
abstract fun computeDescriptor(): FunctionDescriptor?
|
abstract fun computeDescriptor(): FunctionDescriptor?
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
// And usages of that property may be replaced with relevant registry key
|
// And usages of that property may be replaced with relevant registry key
|
||||||
@Volatile
|
@Volatile
|
||||||
@get:TestOnly
|
@get:TestOnly
|
||||||
var forceUsingUltraLightClasses = false
|
var forceUsingOldLightClasses = false
|
||||||
}
|
}
|
||||||
|
|
||||||
private val tooComplex: Boolean by lazyPub { support.isTooComplexForUltraLightGeneration(classOrObject) }
|
private val tooComplex: Boolean by lazyPub { support.isTooComplexForUltraLightGeneration(classOrObject) }
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ fun main(args: Array<String>) {
|
|||||||
model("kotlinAndJavaChecker/javaWithKotlin")
|
model("kotlinAndJavaChecker/javaWithKotlin")
|
||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest> {
|
testClass<AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest> {
|
||||||
model("kotlinAndJavaChecker/javaAgainstKotlin")
|
model("kotlinAndJavaChecker/javaAgainstKotlin")
|
||||||
model("kotlinAndJavaChecker/javaWithKotlin")
|
model("kotlinAndJavaChecker/javaWithKotlin")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ fun main(args: Array<String>) {
|
|||||||
model("kotlinAndJavaChecker/javaWithKotlin")
|
model("kotlinAndJavaChecker/javaWithKotlin")
|
||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest> {
|
testClass<AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest> {
|
||||||
model("kotlinAndJavaChecker/javaAgainstKotlin")
|
model("kotlinAndJavaChecker/javaAgainstKotlin")
|
||||||
model("kotlinAndJavaChecker/javaWithKotlin")
|
model("kotlinAndJavaChecker/javaWithKotlin")
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -65,7 +65,8 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
|
|||||||
if (element.shouldNotBeVisibleAsLightClass() ||
|
if (element.shouldNotBeVisibleAsLightClass() ||
|
||||||
element is KtObjectDeclaration && element.isObjectLiteral() ||
|
element is KtObjectDeclaration && element.isObjectLiteral() ||
|
||||||
element.isLocal ||
|
element.isLocal ||
|
||||||
element is KtEnumEntry
|
element is KtEnumEntry ||
|
||||||
|
element.containingKtFile.isScript()
|
||||||
) {
|
) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -159,7 +159,7 @@
|
|||||||
|
|
||||||
<registryKey key="kotlin.use.ultra.light.classes"
|
<registryKey key="kotlin.use.ultra.light.classes"
|
||||||
description="Whether to use an experimental implementation of Kotlin-as-Java classes"
|
description="Whether to use an experimental implementation of Kotlin-as-Java classes"
|
||||||
defaultValue="false"
|
defaultValue="true"
|
||||||
restartRequired="false"/>
|
restartRequired="false"/>
|
||||||
|
|
||||||
<registryKey key="kotlin.uast.multiresolve.enabled"
|
<registryKey key="kotlin.uast.multiresolve.enabled"
|
||||||
|
|||||||
@@ -159,7 +159,7 @@
|
|||||||
|
|
||||||
<registryKey key="kotlin.use.ultra.light.classes"
|
<registryKey key="kotlin.use.ultra.light.classes"
|
||||||
description="Whether to use an experimental implementation of Kotlin-as-Java classes"
|
description="Whether to use an experimental implementation of Kotlin-as-Java classes"
|
||||||
defaultValue="false"
|
defaultValue="true"
|
||||||
restartRequired="false"/>
|
restartRequired="false"/>
|
||||||
|
|
||||||
<registryKey key="kotlin.uast.multiresolve.enabled"
|
<registryKey key="kotlin.uast.multiresolve.enabled"
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// ULTRA_LIGHT_CLASSES
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
expect interface Closable {
|
expect interface Closable {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.checkers
|
package org.jetbrains.kotlin.checkers
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.perf.forceUsingUltraLightClassesForTest
|
import org.jetbrains.kotlin.idea.perf.forceUsingOldLightClassesForTest
|
||||||
|
|
||||||
abstract class AbstractJavaAgainstKotlinSourceCheckerTest : AbstractJavaAgainstKotlinCheckerTest() {
|
abstract class AbstractJavaAgainstKotlinSourceCheckerTest : AbstractJavaAgainstKotlinCheckerTest() {
|
||||||
fun doTest(path: String) {
|
fun doTest(path: String) {
|
||||||
@@ -13,9 +13,9 @@ abstract class AbstractJavaAgainstKotlinSourceCheckerTest : AbstractJavaAgainstK
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest : AbstractJavaAgainstKotlinSourceCheckerTest() {
|
abstract class AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest : AbstractJavaAgainstKotlinSourceCheckerTest() {
|
||||||
override fun setUp() {
|
override fun setUp() {
|
||||||
super.setUp()
|
super.setUp()
|
||||||
forceUsingUltraLightClassesForTest()
|
forceUsingOldLightClassesForTest()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -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 */
|
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
public class JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated extends AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest {
|
public class JavaAgainstKotlinSourceCheckerWithoutUltraLightTestGenerated extends AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest {
|
||||||
@TestMetadata("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin")
|
@TestMetadata("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
public static class JavaAgainstKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest {
|
public static class JavaAgainstKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest {
|
||||||
private void runTest(String testDataFilePath) throws Exception {
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
||||||
}
|
}
|
||||||
@@ -195,7 +195,7 @@ public class JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated extends A
|
|||||||
@TestMetadata("idea/testData/kotlinAndJavaChecker/javaWithKotlin")
|
@TestMetadata("idea/testData/kotlinAndJavaChecker/javaWithKotlin")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
public static class JavaWithKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithUltraLightTest {
|
public static class JavaWithKotlin extends AbstractJavaAgainstKotlinSourceCheckerWithoutUltraLightTest {
|
||||||
private void runTest(String testDataFilePath) throws Exception {
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
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.lightClasses.IDELightClassConstructionContext
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.LightClassLazinessChecker.Tracker.Level.*
|
import org.jetbrains.kotlin.idea.caches.resolve.LightClassLazinessChecker.Tracker.Level.*
|
||||||
import org.jetbrains.kotlin.idea.completion.test.withServiceRegistered
|
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.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||||
@@ -44,6 +45,7 @@ import kotlin.test.assertTrue
|
|||||||
|
|
||||||
abstract class AbstractIdeLightClassTest : KotlinLightCodeInsightFixtureTestCase() {
|
abstract class AbstractIdeLightClassTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||||
fun doTest(testDataPath: String) {
|
fun doTest(testDataPath: String) {
|
||||||
|
forceUsingOldLightClassesForTest()
|
||||||
val extraFilePath = when {
|
val extraFilePath = when {
|
||||||
testDataPath.endsWith(".kt") -> testDataPath.replace(".kt", ".extra.kt")
|
testDataPath.endsWith(".kt") -> testDataPath.replace(".kt", ".extra.kt")
|
||||||
testDataPath.endsWith(".kts") -> testDataPath.replace(".kts", ".extra.kts")
|
testDataPath.endsWith(".kts") -> testDataPath.replace(".kts", ".extra.kts")
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ public class LightClassEqualsTest extends KotlinLightCodeInsightFixtureTestCase
|
|||||||
private static void doTestEquals(@Nullable KtClassOrObject origin) {
|
private static void doTestEquals(@Nullable KtClassOrObject origin) {
|
||||||
assertNotNull(origin);
|
assertNotNull(origin);
|
||||||
|
|
||||||
PsiClass lightClass1 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin);
|
PsiClass lightClass1 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin, true);
|
||||||
PsiClass lightClass2 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin);
|
PsiClass lightClass2 = KtLightClassForSourceDeclaration.Companion.createNoCache(origin, true);
|
||||||
assertNotNull(lightClass1);
|
assertNotNull(lightClass1);
|
||||||
assertNotNull(lightClass2);
|
assertNotNull(lightClass2);
|
||||||
|
|
||||||
|
|||||||
-5
@@ -13,12 +13,10 @@ import com.intellij.psi.PsiDocumentManager
|
|||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.GotoSuperActionHandler
|
import org.jetbrains.kotlin.idea.codeInsight.GotoSuperActionHandler
|
||||||
import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromDirStructure
|
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.stubs.AbstractMultiModuleTest
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||||
import org.jetbrains.kotlin.idea.test.extractMarkerOffset
|
import org.jetbrains.kotlin.idea.test.extractMarkerOffset
|
||||||
import org.jetbrains.kotlin.idea.test.findFileWithCaret
|
import org.jetbrains.kotlin.idea.test.findFileWithCaret
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
abstract class AbstractKotlinNavigationMultiModuleTest : AbstractMultiModuleTest() {
|
abstract class AbstractKotlinNavigationMultiModuleTest : AbstractMultiModuleTest() {
|
||||||
@@ -27,9 +25,6 @@ abstract class AbstractKotlinNavigationMultiModuleTest : AbstractMultiModuleTest
|
|||||||
protected fun doTest(testDataDir: String) {
|
protected fun doTest(testDataDir: String) {
|
||||||
setupMppProjectFromDirStructure(File(testDataDir))
|
setupMppProjectFromDirStructure(File(testDataDir))
|
||||||
val file = project.findFileWithCaret()
|
val file = project.findFileWithCaret()
|
||||||
if (InTextDirectivesUtils.isDirectiveDefined(file.text, "ULTRA_LIGHT_CLASSES")) {
|
|
||||||
forceUsingUltraLightClassesForTest()
|
|
||||||
}
|
|
||||||
|
|
||||||
val doc = PsiDocumentManager.getInstance(myProject).getDocument(file)!!
|
val doc = PsiDocumentManager.getInstance(myProject).getDocument(file)!!
|
||||||
val offset = doc.extractMarkerOffset(project, "<caret>")
|
val offset = doc.extractMarkerOffset(project, "<caret>")
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
|
||||||
fun UsefulTestCase.forceUsingUltraLightClassesForTest() {
|
fun UsefulTestCase.forceUsingOldLightClassesForTest() {
|
||||||
KtUltraLightClass.forceUsingUltraLightClasses = true
|
KtUltraLightClass.forceUsingOldLightClasses = true
|
||||||
Disposer.register(testRootDisposable, Disposable {
|
Disposer.register(testRootDisposable, Disposable {
|
||||||
KtUltraLightClass.forceUsingUltraLightClasses = false
|
KtUltraLightClass.forceUsingOldLightClasses = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ object UltraLightChecker {
|
|||||||
SyntaxTraverser.psiTraverser(file).filter(KtClassOrObject::class.java).toList()
|
SyntaxTraverser.psiTraverser(file).filter(KtClassOrObject::class.java).toList()
|
||||||
|
|
||||||
fun checkClassEquivalence(ktClass: KtClassOrObject): KtUltraLightClass? {
|
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
|
val ultraLightClass = LightClassGenerationSupport.getInstance(ktClass.project).createUltraLightClass(ktClass) ?: return null
|
||||||
|
|
||||||
if (gold != null) {
|
if (gold != null) {
|
||||||
|
|||||||
-2
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.asJava.toLightMethods
|
|||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
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.getTypeCodeFragmentContext
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinChangeSignatureDialog.Companion.getTypeInfo
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinChangeSignatureDialog.Companion.getTypeInfo
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinMethodNode
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinMethodNode
|
||||||
@@ -568,7 +567,6 @@ class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() {
|
|||||||
fun testConvertParameterToReceiverForMember1() = doTest { receiverParameterInfo = newParameters[0] }
|
fun testConvertParameterToReceiverForMember1() = doTest { receiverParameterInfo = newParameters[0] }
|
||||||
|
|
||||||
fun testConvertParameterToReceiverForMemberUltraLight() {
|
fun testConvertParameterToReceiverForMemberUltraLight() {
|
||||||
forceUsingUltraLightClassesForTest()
|
|
||||||
doTest { receiverParameterInfo = newParameters[0] }
|
doTest { receiverParameterInfo = newParameters[0] }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user