From 1fe749c11430fce1a2102736c171b0e0236cd442 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 21 Jan 2016 18:49:02 +0300 Subject: [PATCH] Refactor: get rid of LightClassUtil#getPsiClass() in favor of KtClassOrObject:toLightClass extension --- .../jetbrains/kotlin/asJava/JavaElementFinder.java | 8 +++++--- .../asJava/KtLightClassForExplicitDeclaration.kt | 4 ++-- .../org/jetbrains/kotlin/asJava/LightClassUtil.kt | 14 ++++---------- .../org/jetbrains/kotlin/asJava/lightClassUtils.kt | 6 +++--- .../navigation/SourceNavigationHelper.java | 5 +++-- .../declarationsSearch/classInheritorsSearch.kt | 13 ++++++------- .../ideaExtensions/KotlinReferencesSearcher.kt | 8 ++++---- .../completion/smart/TypeInstantiationItems.kt | 4 ++-- .../dialogs/KotlinFindClassUsagesDialog.java | 5 +++-- .../handlers/KotlinFindClassUsagesHandler.kt | 3 +-- .../hierarchy/calls/KotlinCallTreeStructure.java | 4 +++- .../idea/highlighter/markers/JavaPsiUtils.kt | 5 +++-- .../markers/KotlinLineMarkerProvider.kt | 9 ++++++--- .../kotlin/idea/refactoring/jetRefactoringUtil.kt | 4 ++-- .../rename/AutomaticInheritorRenamer.kt | 4 ++-- .../run/KotlinJUnitRunConfigurationProducer.kt | 11 ++++------- .../run/KotlinTestNgConfigurationProducer.java | 7 ++++--- .../KotlinAnnotatedElementsSearcher.kt | 3 ++- .../KotlinClassesWithAnnotatedMembersSearcher.kt | 4 ++-- .../ideaExtensions/KotlinDefinitionsSearcher.java | 6 ++++-- .../navigation/NavigateFromLibrarySourcesTest.kt | 4 ++-- .../idea/javaFacade/KotlinJavaFacadeTest.java | 6 ++++-- .../idea/lightClasses/LightClassEqualsTest.java | 7 ++++--- 23 files changed, 75 insertions(+), 69 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java index 10648741788..ab85a33c9cd 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java @@ -45,6 +45,8 @@ import java.util.Comparator; import java.util.List; import java.util.Set; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; + public class JavaElementFinder extends PsiElementFinder implements KotlinFinderMarker { @NotNull @@ -133,7 +135,7 @@ public class JavaElementFinder extends PsiElementFinder implements KotlinFinderM for (KtClassOrObject declaration : classOrObjectDeclarations) { if (!(declaration instanceof KtEnumEntry)) { - PsiClass lightClass = LightClassUtil.INSTANCE.getPsiClass(declaration); + PsiClass lightClass = toLightClass(declaration); if (lightClass != null) { answer.add(lightClass); } @@ -149,7 +151,7 @@ public class JavaElementFinder extends PsiElementFinder implements KotlinFinderM for (KtClassOrObject classOrObject : lightClassGenerationSupport.findClassOrObjectDeclarations(qualifiedName.parent(), scope)) { //NOTE: can't filter out more interfaces right away because decompiled declarations do not have member bodies if (classOrObject instanceof KtClass && ((KtClass) classOrObject).isInterface()) { - PsiClass interfaceClass = LightClassUtil.INSTANCE.getPsiClass(classOrObject); + PsiClass interfaceClass = toLightClass(classOrObject); if (interfaceClass != null) { PsiClass implsClass = interfaceClass.findInnerClassByName(JvmAbi.DEFAULT_IMPLS_CLASS_NAME, false); if (implsClass != null) { @@ -224,7 +226,7 @@ public class JavaElementFinder extends PsiElementFinder implements KotlinFinderM Collection declarations = lightClassGenerationSupport.findClassOrObjectDeclarationsInPackage(packageFQN, scope); for (KtClassOrObject declaration : declarations) { - PsiClass aClass = LightClassUtil.INSTANCE.getPsiClass(declaration); + PsiClass aClass = toLightClass(declaration); if (aClass != null) { answer.add(aClass); } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt index 56709c37255..398a2e84696 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt @@ -116,12 +116,12 @@ open class KtLightClassForExplicitDeclaration( val grandparent = parent.parent if (parent is KtClassBody && grandparent is KtClassOrObject) { - return LightClassUtil.getPsiClass(grandparent) + return grandparent.toLightClass() } } if (declaration is KtClass) { - return LightClassUtil.getPsiClass(declaration) + return declaration.toLightClass() } return null } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt index e3a9753159c..55381458176 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt @@ -48,12 +48,6 @@ object LightClassUtil { return null }/*package*/ - fun getPsiClass(classOrObject: KtClassOrObject?): KtLightClass? { - return classOrObject?.let { - return LightClassGenerationSupport.getInstance(it.project).getLightClass(it) - } - } - fun getLightClassAccessorMethod(accessor: KtPropertyAccessor): PsiMethod? = getLightClassAccessorMethods(accessor).firstOrNull() @@ -94,7 +88,7 @@ object LightClassUtil { if (origin is KtObjectDeclaration && origin.isCompanion()) { val containingClass = PsiTreeUtil.getParentOfType(origin, KtClass::class.java) if (containingClass != null) { - val containingLightClass = getPsiClass(containingClass) + val containingLightClass = containingClass.toLightClass() if (containingLightClass != null) { psiClass = containingLightClass } @@ -156,7 +150,7 @@ object LightClassUtil { if (declaration is KtParameter) { val constructorClass = KtPsiUtil.getClassIfParameterIsProperty(declaration) if (constructorClass != null) { - return getPsiClass(constructorClass) + return constructorClass.toLightClass() } } @@ -165,7 +159,7 @@ object LightClassUtil { } if (declaration is KtConstructor<*>) { - return getPsiClass(declaration.getContainingClassOrObject()) + return declaration.getContainingClassOrObject().toLightClass() } if (!canGenerateLightClass(declaration)) { @@ -184,7 +178,7 @@ object LightClassUtil { } else if (parent is KtClassBody) { assert(parent.parent is KtClassOrObject) - return getPsiClass(parent.parent as KtClassOrObject) + return (parent.parent as KtClassOrObject).toLightClass() } return null diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt index 05279faf36b..f428120a8b1 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.singletonList import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList import java.util.* -fun KtClassOrObject.toLightClass(): KtLightClass? = LightClassUtil.getPsiClass(this) +fun KtClassOrObject.toLightClass(): KtLightClass? = LightClassGenerationSupport.getInstance(project).getLightClass(this) fun KtFile.findFacadeClass(): KtLightClass? { return LightClassGenerationSupport.getInstance(project) @@ -38,7 +38,7 @@ fun KtFile.findFacadeClass(): KtLightClass? { fun KtDeclaration.toLightElements(): List = when (this) { - is KtClassOrObject -> LightClassUtil.getPsiClass(this).singletonOrEmptyList() + is KtClassOrObject -> toLightClass().singletonOrEmptyList() is KtNamedFunction, is KtSecondaryConstructor -> LightClassUtil.getLightClassMethods(this as KtFunction) is KtProperty -> LightClassUtil.getLightClassPropertyMethods(this).toList() @@ -59,7 +59,7 @@ fun PsiElement.toLightMethods(): List = is KtProperty -> LightClassUtil.getLightClassPropertyMethods(this).toList() is KtParameter -> LightClassUtil.getLightClassPropertyMethods(this).toList() is KtPropertyAccessor -> LightClassUtil.getLightClassAccessorMethods(this) - is KtClass -> LightClassUtil.getPsiClass(this)?.getConstructors()?.first().singletonOrEmptyList() + is KtClass -> toLightClass()?.getConstructors()?.first().singletonOrEmptyList() is PsiMethod -> this.singletonList() else -> listOf() } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java index 61fd0ffd40c..06eb421bbc6 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.java @@ -38,7 +38,7 @@ import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; -import org.jetbrains.kotlin.asJava.LightClassUtil; +import org.jetbrains.kotlin.asJava.LightClassUtilsKt; import org.jetbrains.kotlin.builtins.DefaultBuiltIns; import org.jetbrains.kotlin.codegen.binding.PsiCodegenPredictor; import org.jetbrains.kotlin.context.ContextKt; @@ -72,6 +72,7 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; import static org.jetbrains.kotlin.idea.decompiler.navigation.MemberMatching.*; public class SourceNavigationHelper { @@ -375,7 +376,7 @@ public class SourceNavigationHelper { ); } } - return LightClassUtil.INSTANCE.getPsiClass(classOrObject); + return toLightClass(classOrObject); } @Nullable diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/classInheritorsSearch.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/classInheritorsSearch.kt index 478e1b873cc..dcd1864fe6b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/classInheritorsSearch.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/classInheritorsSearch.kt @@ -16,19 +16,18 @@ package org.jetbrains.kotlin.idea.search.declarationsSearch -import com.intellij.psi.PsiClass -import com.intellij.util.Query -import com.intellij.psi.PsiModifier import com.intellij.psi.PsiAnonymousClass -import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.asJava.LightClassUtil -import com.intellij.psi.PsiElement +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiModifier import com.intellij.psi.search.searches.ClassInheritorsSearch import com.intellij.util.EmptyQuery +import com.intellij.util.Query +import org.jetbrains.kotlin.asJava.toLightClass +import org.jetbrains.kotlin.psi.KtClassOrObject fun HierarchySearchRequest<*>.searchInheritors(): Query { val psiClass: PsiClass? = when (originalElement) { - is KtClassOrObject -> LightClassUtil.getPsiClass(originalElement) + is KtClassOrObject -> originalElement.toLightClass() is PsiClass -> originalElement else -> null } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt index da02b8df637..6fe8382db07 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt @@ -174,7 +174,7 @@ class KotlinReferencesSearcher : QueryExecutorBase() - val originLightClass = LightClassUtil.getPsiClass(originClass) + val originLightClass = originClass?.toLightClass() if (originLightClass != null) { val lightDeclarations: List?> = originLightClass.methods.map { it as? KtLightMethod } + @@ -214,7 +214,7 @@ class KotlinReferencesSearcher : QueryExecutorBase() - val originLightClass = LightClassUtil.getPsiClass(originClass) + val originLightClass = originClass?.toLightClass() val allMethods = originLightClass?.allMethods return allMethods?.find { it is KtLightMethod && it.getOrigin() == function } } @@ -266,7 +266,7 @@ class KotlinReferencesSearcher : QueryExecutorBase()) + val containingClass = element.getStrictParentOfType()?.toLightClass() searchDataClassComponentUsages(queryParameters, containingClass, componentFunctionDescriptor) } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt index d062f079d78..19c777af3fa 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt @@ -24,7 +24,7 @@ import com.intellij.codeInsight.lookup.LookupElementPresentation import com.intellij.psi.PsiClass import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.searches.ClassInheritorsSearch -import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations @@ -114,7 +114,7 @@ class TypeInstantiationItems( val psiClass: PsiClass = when (declaration) { is PsiClass -> declaration - is KtClassOrObject -> LightClassUtil.getPsiClass(declaration) ?: return + is KtClassOrObject -> declaration.toLightClass() ?: return else -> return } add(InheritanceSearcher(psiClass, kotlinClassDescriptor, typeArgs, freeParameters, tail)) diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/dialogs/KotlinFindClassUsagesDialog.java b/idea/src/org/jetbrains/kotlin/idea/findUsages/dialogs/KotlinFindClassUsagesDialog.java index 016e6fda1a3..ed14b1c088e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/dialogs/KotlinFindClassUsagesDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/dialogs/KotlinFindClassUsagesDialog.java @@ -30,7 +30,6 @@ import com.intellij.psi.PsiModifier; import com.intellij.ui.SimpleColoredComponent; import com.intellij.ui.StateRestoringCheckBox; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.asJava.LightClassUtil; import org.jetbrains.kotlin.asJava.LightClassUtilsKt; import org.jetbrains.kotlin.idea.KotlinBundle; import org.jetbrains.kotlin.idea.findUsages.KotlinClassFindUsagesOptions; @@ -41,6 +40,8 @@ import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt; import javax.swing.*; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; + public class KotlinFindClassUsagesDialog extends FindClassUsagesDialog { private StateRestoringCheckBox constructorUsages; private StateRestoringCheckBox derivedClasses; @@ -62,7 +63,7 @@ public class KotlinFindClassUsagesDialog extends FindClassUsagesDialog { @NotNull private static PsiClass getRepresentingPsiClass(@NotNull KtClassOrObject classOrObject) { - PsiClass lightClass = LightClassUtil.INSTANCE.getPsiClass(classOrObject); + PsiClass lightClass = toLightClass(classOrObject); if (lightClass != null) return lightClass; // TODO: Remove this code when light classes are generated for builtins diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt index 014551bff6b..88a09fe1d8d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindClassUsagesHandler.kt @@ -31,7 +31,6 @@ import com.intellij.usageView.UsageInfo import com.intellij.util.FilteredQuery import com.intellij.util.Processor import org.jetbrains.kotlin.asJava.KtLightMethod -import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.findUsages.KotlinClassFindUsagesOptions @@ -193,7 +192,7 @@ class KotlinFindClassUsagesHandler( override fun getStringsToSearch(element: PsiElement): Collection { val psiClass = when (element) { is PsiClass -> element - is KtClassOrObject -> LightClassUtil.getPsiClass(getElement()) + is KtClassOrObject -> getElement().toLightClass() else -> null } ?: return Collections.emptyList() diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallTreeStructure.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallTreeStructure.java index 48bd54a52b8..d5cd56bfad9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallTreeStructure.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallTreeStructure.java @@ -35,6 +35,8 @@ import org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt; import java.util.Map; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; + public abstract class KotlinCallTreeStructure extends HierarchyTreeStructure { protected final String scopeType; @@ -102,7 +104,7 @@ public abstract class KotlinCallTreeStructure extends HierarchyTreeStructure { } if (element instanceof KtClassOrObject) { - PsiClass psiClass = LightClassUtil.INSTANCE.getPsiClass((KtClassOrObject) element); + PsiClass psiClass = toLightClass((KtClassOrObject) element); if (psiClass == null) return null; PsiMethod[] constructors = psiClass.getConstructors(); diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/JavaPsiUtils.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/JavaPsiUtils.kt index 98e8359d0e7..c35edb8b912 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/JavaPsiUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/JavaPsiUtils.kt @@ -22,6 +22,7 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethod import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtFunction import org.jetbrains.kotlin.psi.KtNamedFunction @@ -45,8 +46,8 @@ internal fun getPsiClass(element: PsiElement?): PsiClass? { return when { element == null -> null element is PsiClass -> element - element is KtClass -> LightClassUtil.getPsiClass(element) - element.parent is KtClass -> LightClassUtil.getPsiClass(element.parent as KtClass) + element is KtClass -> element.toLightClass() + element.parent is KtClass -> (element.parent as KtClass).toLightClass() else -> null } } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt index baed6b0ceb5..8a2c3e86c43 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt @@ -28,13 +28,16 @@ import com.intellij.openapi.project.DumbService import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethod import com.intellij.psi.search.searches.ClassInheritorsSearch -import com.intellij.util.NullableFunction import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.KtClass +import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.psi.KtNamedFunction +import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.psi.psiUtil.isOverridable import java.awt.event.MouseEvent import java.util.* @@ -141,7 +144,7 @@ private fun collectInheritedClassMarker(element: KtClass, result: MutableCollect return } - val lightClass = LightClassUtil.getPsiClass(element) ?: return + val lightClass = element.toLightClass() ?: return if (ClassInheritorsSearch.search(lightClass, false).findFirst() == null) return diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/jetRefactoringUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/jetRefactoringUtil.kt index 3708b204444..1fbf8ee30ca 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/jetRefactoringUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/jetRefactoringUtil.kt @@ -58,6 +58,7 @@ import com.intellij.util.VisibilityUtil import com.intellij.util.containers.MultiMap import org.jetbrains.kotlin.asJava.KtLightMethod import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassKind @@ -548,8 +549,7 @@ fun createJavaClass(klass: KtClass, targetClass: PsiClass?, forcePlainClass: Boo } val javaClass = (targetClass?.add(javaClassToAdd) ?: javaClassToAdd) as PsiClass - val template = LightClassUtil.getPsiClass(klass) - ?: throw AssertionError("Can't generate light class: ${klass.getElementTextWithContext()}") + val template = klass.toLightClass() ?: throw AssertionError("Can't generate light class: ${klass.getElementTextWithContext()}") copyModifierListItems(template.modifierList!!, javaClass.modifierList!!) if (template.isInterface) { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticInheritorRenamer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticInheritorRenamer.kt index ace1e4a75c4..248639b2fa7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticInheritorRenamer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticInheritorRenamer.kt @@ -24,13 +24,13 @@ import com.intellij.refactoring.RefactoringBundle import com.intellij.refactoring.rename.naming.AutomaticRenamer import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory import com.intellij.usageView.UsageInfo -import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.psi.KtClass class AutomaticInheritorRenamer(klass: KtClass, newName: String): AutomaticRenamer() { init { - val lightClass = LightClassUtil.getPsiClass(klass) + val lightClass = klass.toLightClass() if (lightClass != null) { for (inheritorLightClass in ClassInheritorsSearch.search(lightClass, true).findAll()) { if ((inheritorLightClass.unwrapped as? PsiNamedElement)?.name != null) { diff --git a/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt b/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt index 557ef91095d..bae401439b3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt @@ -28,7 +28,7 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethod import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.project.ProjectStructureUtil import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.psi.KtClass @@ -141,7 +141,7 @@ class KotlinJUnitRunConfigurationProducer : RunConfigurationProducer().singleOrNull { it.isJUnitTestClass() } diff --git a/idea/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java b/idea/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java index 52a98f6a6cf..3359ef1666a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java +++ b/idea/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java @@ -36,7 +36,6 @@ import com.theoryinpractice.testng.util.TestNGUtil; import kotlin.collections.CollectionsKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.asJava.LightClassUtil; import org.jetbrains.kotlin.asJava.LightClassUtilsKt; import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; import org.jetbrains.kotlin.idea.util.ProjectRootsUtil; @@ -44,6 +43,8 @@ import org.jetbrains.kotlin.psi.*; import java.util.List; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; + public class KotlinTestNgConfigurationProducer extends TestNGConfigurationProducer { @Override public boolean shouldReplace(ConfigurationFromContext self, ConfigurationFromContext other) { @@ -88,7 +89,7 @@ public class KotlinTestNgConfigurationProducer extends TestNGConfigurationProduc KtElement owner = PsiTreeUtil.getParentOfType(function, KtFunction.class, KtClass.class); if (owner instanceof KtClass) { - PsiClass delegate = LightClassUtil.INSTANCE.getPsiClass((KtClass) owner); + PsiClass delegate = toLightClass((KtClass) owner); if (delegate != null) { for (PsiMethod method : delegate.getMethods()) { if (method.getNavigationElement() == function) { @@ -103,7 +104,7 @@ public class KotlinTestNgConfigurationProducer extends TestNGConfigurationProduc } if (declarationToRun instanceof KtClass) { - PsiClass delegate = LightClassUtil.INSTANCE.getPsiClass((KtClassOrObject) declarationToRun); + PsiClass delegate = toLightClass((KtClassOrObject) declarationToRun); if (!isTestNGClass(delegate)) { return false; } diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinAnnotatedElementsSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinAnnotatedElementsSearcher.kt index 1b34707c9e5..e60bf2c6439 100644 --- a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinAnnotatedElementsSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinAnnotatedElementsSearcher.kt @@ -29,6 +29,7 @@ import com.intellij.util.Processor import com.intellij.util.QueryExecutor import com.intellij.util.indexing.FileBasedIndex import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.stubindex.KotlinAnnotationsIndex import org.jetbrains.kotlin.idea.util.application.runReadAction @@ -45,7 +46,7 @@ class KotlinAnnotatedElementsSearcher : QueryExecutor when (declaration) { is KtClass -> { - val lightClass = LightClassUtil.getPsiClass(declaration) + val lightClass = declaration.toLightClass() consumer.process(lightClass) } is KtNamedFunction, is KtSecondaryConstructor -> { diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinClassesWithAnnotatedMembersSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinClassesWithAnnotatedMembersSearcher.kt index e5052fb3a1c..35ea12c5b87 100644 --- a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinClassesWithAnnotatedMembersSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinClassesWithAnnotatedMembersSearcher.kt @@ -21,7 +21,7 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.searches.ClassesWithAnnotatedMembersSearch import com.intellij.psi.search.searches.ScopedQueryExecutor import com.intellij.util.Processor -import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.search.allScope import org.jetbrains.kotlin.psi.KtClassOrObject @@ -39,7 +39,7 @@ class KotlinClassesWithAnnotatedMembersSearcher : ScopedQueryExecutor() !in processed}) { declaration -> val ktClass = declaration.getNonStrictParentOfType() if (ktClass != null && processed.add(ktClass)) { - val lightClass = LightClassUtil.getPsiClass(ktClass) + val lightClass = ktClass.toLightClass() if (lightClass != null) consumer.process(lightClass) else true } else diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDefinitionsSearcher.java b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDefinitionsSearcher.java index 8d17de0f902..642bbf775e7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDefinitionsSearcher.java +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDefinitionsSearcher.java @@ -36,6 +36,8 @@ import org.jetbrains.kotlin.psi.*; import java.util.ArrayList; import java.util.List; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; + public class KotlinDefinitionsSearcher implements QueryExecutor { @Override public boolean execute(@NotNull DefinitionsScopedSearch.SearchParameters queryParameters, @NotNull Processor consumer) { @@ -82,11 +84,11 @@ public class KotlinDefinitionsSearcher implements QueryExecutor consumer) { + private static boolean processClassImplementations(@NotNull final KtClass klass, Processor consumer) { PsiClass psiClass = ApplicationManager.getApplication().runReadAction(new Computable() { @Override public PsiClass compute() { - return LightClassUtil.INSTANCE.getPsiClass(klass); + return toLightClass(klass); } }); if (psiClass != null) { diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateFromLibrarySourcesTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateFromLibrarySourcesTest.kt index 563093438c1..6c336c2ffcf 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateFromLibrarySourcesTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateFromLibrarySourcesTest.kt @@ -24,7 +24,7 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiElement import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase -import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration import org.jetbrains.kotlin.idea.test.JdkAndMockLibraryProjectDescriptor import org.jetbrains.kotlin.idea.test.PluginTestCaseBase @@ -50,7 +50,7 @@ class NavigateFromLibrarySourcesTest: LightCodeInsightFixtureTestCase() { fun testLightClassForLibrarySource() { val navigationElement = navigationElementForReferenceInLibrarySource("Foo") assertTrue(navigationElement is KtClassOrObject, "Foo should navigate to JetClassOrObject") - val lightClass = LightClassUtil.getPsiClass(navigationElement as KtClassOrObject) + val lightClass = (navigationElement as KtClassOrObject).toLightClass() assertTrue(lightClass is KtLightClassForDecompiledDeclaration, "Light classes for decompiled declaration should be provided for library source") assertEquals("Foo", lightClass!!.name) diff --git a/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java b/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java index 271b2b78827..7227a65017f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java @@ -30,6 +30,8 @@ import org.jetbrains.kotlin.idea.test.PluginTestCaseBase; import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.psi.*; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; + public class KotlinJavaFacadeTest extends KotlinLightCodeInsightFixtureTestCase { @NotNull @Override @@ -212,7 +214,7 @@ public class KotlinJavaFacadeTest extends KotlinLightCodeInsightFixtureTestCase assertInstanceOf(element, KtClass.class); KtClass aClass = (KtClass) element; - PsiClass createdByWrapDelegate = LightClassUtil.INSTANCE.getPsiClass(aClass); + PsiClass createdByWrapDelegate = toLightClass(aClass); assertNull(createdByWrapDelegate); } @@ -296,7 +298,7 @@ public class KotlinJavaFacadeTest extends KotlinLightCodeInsightFixtureTestCase assertNotNull("Caret should be placed to class definition", ktClass); // Should not fail! - KtLightClass lightClass = (KtLightClass) LightClassUtil.INSTANCE.getPsiClass(ktClass); + KtLightClass lightClass = toLightClass(ktClass); assertNotNull(String.format("Failed to wrap jetClass '%s' to class", ktClass.getText()), lightClass); diff --git a/idea/tests/org/jetbrains/kotlin/idea/lightClasses/LightClassEqualsTest.java b/idea/tests/org/jetbrains/kotlin/idea/lightClasses/LightClassEqualsTest.java index af8429011d5..922cf593f4c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/lightClasses/LightClassEqualsTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/lightClasses/LightClassEqualsTest.java @@ -22,12 +22,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.asJava.KtLightClass; import org.jetbrains.kotlin.asJava.KtLightClassForExplicitDeclaration; -import org.jetbrains.kotlin.asJava.LightClassUtil; import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration; import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase; import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor; import org.jetbrains.kotlin.psi.KtClassOrObject; +import static org.jetbrains.kotlin.asJava.LightClassUtilsKt.toLightClass; + public class LightClassEqualsTest extends KotlinLightCodeInsightFixtureTestCase { @NotNull @Override @@ -58,8 +59,8 @@ public class LightClassEqualsTest extends KotlinLightCodeInsightFixtureTestCase private static void doTestEquals(@Nullable KtClassOrObject origin) { assertNotNull(origin); - PsiClass lightClass1 = LightClassUtil.INSTANCE.getPsiClass(origin); - PsiClass lightClass2 = LightClassUtil.INSTANCE.getPsiClass(origin); + PsiClass lightClass1 = toLightClass(origin); + PsiClass lightClass2 = toLightClass(origin); assertNotNull(lightClass1); assertNotNull(lightClass2);