From 2972dbca00d247a940acb2508fbe1240f0b7946b Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 21 Jan 2016 16:49:31 +0300 Subject: [PATCH] Rename LightClassGenerationSupport.getPsiClass -> getLightClass and make it return KtLightClass --- .../compiler/CliLightClassGenerationSupport.kt | 7 ++----- .../asJava/LightClassGenerationSupport.java | 2 +- .../org/jetbrains/kotlin/asJava/LightClassUtil.kt | 7 ++++--- .../jetbrains/kotlin/asJava/lightClassUtils.kt | 2 +- .../resolve/IDELightClassGenerationSupport.kt | 15 ++++++++------- .../asJava/KotlinLightClassInheritorTest.kt | 2 +- 6 files changed, 17 insertions(+), 18 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt index febc9ca56b5..29834cb4eaf 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt @@ -25,10 +25,7 @@ import com.intellij.util.Function import com.intellij.util.SmartList import com.intellij.util.containers.ContainerUtil import org.jetbrains.annotations.TestOnly -import org.jetbrains.kotlin.asJava.KtLightClassForExplicitDeclaration -import org.jetbrains.kotlin.asJava.KtLightClassForFacade -import org.jetbrains.kotlin.asJava.LightClassConstructionContext -import org.jetbrains.kotlin.asJava.LightClassGenerationSupport +import org.jetbrains.kotlin.asJava.* import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor @@ -140,7 +137,7 @@ class CliLightClassGenerationSupport(project: Project) : LightClassGenerationSup }) } - override fun getPsiClass(classOrObject: KtClassOrObject): PsiClass? { + override fun getLightClass(classOrObject: KtClassOrObject): KtLightClass? { return KtLightClassForExplicitDeclaration.create(classOrObject) } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.java index 6b559c37eae..3a048a92fe6 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.java @@ -68,7 +68,7 @@ public abstract class LightClassGenerationSupport { public abstract Collection getSubPackages(@NotNull FqName fqn, @NotNull GlobalSearchScope scope); @Nullable - public abstract PsiClass getPsiClass(@NotNull KtClassOrObject classOrObject); + public abstract KtLightClass getLightClass(@NotNull KtClassOrObject classOrObject); @Nullable public abstract ClassDescriptor resolveClassToDescriptor(@NotNull KtClassOrObject classOrObject); 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 3cd93f06865..e3a9753159c 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt @@ -48,9 +48,10 @@ object LightClassUtil { return null }/*package*/ - fun getPsiClass(classOrObject: KtClassOrObject?): PsiClass? { - if (classOrObject == null) return null - return LightClassGenerationSupport.getInstance(classOrObject.project).getPsiClass(classOrObject) + fun getPsiClass(classOrObject: KtClassOrObject?): KtLightClass? { + return classOrObject?.let { + return LightClassGenerationSupport.getInstance(it.project).getLightClass(it) + } } fun getLightClassAccessorMethod(accessor: KtPropertyAccessor): PsiMethod? = 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 fd048f1407e..05279faf36b 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) as KtLightClass? +fun KtClassOrObject.toLightClass(): KtLightClass? = LightClassUtil.getPsiClass(this) fun KtFile.findFacadeClass(): KtLightClass? { return LightClassGenerationSupport.getInstance(project) 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 8ca320c7baa..4c654a1e285 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 @@ -138,7 +138,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG return PackageIndexUtil.getSubPackageFqNames(fqn, sourceAndClassFiles(scope, project), project, MemberScope.ALL_NAME_FILTER) } - override fun getPsiClass(classOrObject: KtClassOrObject): PsiClass? { + override fun getLightClass(classOrObject: KtClassOrObject): KtLightClass? { val virtualFile = classOrObject.containingFile.virtualFile if (virtualFile != null) { when { @@ -147,7 +147,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG ProjectRootsUtil.isLibraryClassFile(project, virtualFile) -> return getLightClassForDecompiledClassOrObject(classOrObject) ProjectRootsUtil.isLibrarySourceFile(project, virtualFile) -> - return SourceNavigationHelper.getOriginalClass(classOrObject) + return SourceNavigationHelper.getOriginalClass(classOrObject) as? KtLightClass } } if (classOrObject.getContainingKtFile().analysisContext != null) { @@ -270,7 +270,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG } } - private fun getLightClassForDecompiledClassOrObject(decompiledClassOrObject: KtClassOrObject): PsiClass? { + private fun getLightClassForDecompiledClassOrObject(decompiledClassOrObject: KtClassOrObject): KtLightClassForDecompiledDeclaration? { if (decompiledClassOrObject is KtEnumEntry) { return null } @@ -285,18 +285,19 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG private fun findCorrespondingLightClass( decompiledClassOrObject: KtClassOrObject, - rootLightClassForDecompiledFile: PsiClass): PsiClass { + rootLightClassForDecompiledFile: KtLightClassForDecompiledDeclaration + ): KtLightClassForDecompiledDeclaration { val relativeFqName = getClassRelativeName(decompiledClassOrObject) val iterator = relativeFqName.pathSegments().iterator() val base = iterator.next() assert(rootLightClassForDecompiledFile.name == base.asString()) { "Light class for file:\n" + decompiledClassOrObject.getContainingKtFile().virtualFile.canonicalPath + "\nwas expected to have name: " + base.asString() + "\n Actual: " + rootLightClassForDecompiledFile.name } - var current = rootLightClassForDecompiledFile + var current: KtLightClassForDecompiledDeclaration = rootLightClassForDecompiledFile while (iterator.hasNext()) { val name = iterator.next() val innerClass = current.findInnerClassByName(name.asString(), false).sure { "Could not find corresponding inner/nested class " + relativeFqName + " in class " + decompiledClassOrObject.fqName + "\n" + "File: " + decompiledClassOrObject.getContainingKtFile().virtualFile.name } - current = innerClass + current = innerClass as KtLightClassForDecompiledDeclaration } return current } @@ -361,7 +362,7 @@ class KtFileClassProviderImpl(val lightClassGenerationSupport: LightClassGenerat } val result = arrayListOf() - file.declarations.filterIsInstance().map { lightClassGenerationSupport.getPsiClass(it) }.filterNotNullTo(result) + file.declarations.filterIsInstance().map { lightClassGenerationSupport.getLightClass(it) }.filterNotNullTo(result) val moduleInfo = file.getModuleInfo() val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file) diff --git a/idea/tests/org/jetbrains/kotlin/asJava/KotlinLightClassInheritorTest.kt b/idea/tests/org/jetbrains/kotlin/asJava/KotlinLightClassInheritorTest.kt index 64acd167345..eb2b6650bc6 100644 --- a/idea/tests/org/jetbrains/kotlin/asJava/KotlinLightClassInheritorTest.kt +++ b/idea/tests/org/jetbrains/kotlin/asJava/KotlinLightClassInheritorTest.kt @@ -49,7 +49,7 @@ class KotlinLightClassInheritorTest : KotlinLightCodeInsightFixtureTestCase() { private fun doTestInheritorByText(text: String, superQName: String, checkDeep: Boolean) { val file = myFixture.configureByText("A.kt", text) as KtFile val jetClass = file.declarations.filterIsInstance().single() - val psiClass = LightClassGenerationSupport.getInstance(project).getPsiClass(jetClass)!! + val psiClass = LightClassGenerationSupport.getInstance(project).getLightClass(jetClass)!! val baseClass = JavaPsiFacade.getInstance(project).findClass(superQName, GlobalSearchScope.allScope(project))!! Assert.assertTrue(psiClass.isInheritor(baseClass, checkDeep)) }