From 0c93ff5f1dcc92dc3ce02ceee128279a2966672d Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 5 Nov 2015 23:14:02 +0300 Subject: [PATCH] Moved method --- .../caches/resolve/JavaResolveExtension.kt | 16 ++++++++ .../smart/TypeInstantiationItems.kt | 2 +- .../kotlin/idea/core/KotlinIndicesHelper.kt | 1 + .../kotlin/idea/core/psiClassToDescriptor.kt | 41 ------------------- 4 files changed, 18 insertions(+), 42 deletions(-) delete mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiClassToDescriptor.kt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt index f5b088a84c5..19d5fa5acd7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.caches.resolve import com.intellij.psi.* +import org.jetbrains.kotlin.asJava.KtLightClass import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.util.ProjectRootsUtil @@ -27,6 +28,7 @@ import org.jetbrains.kotlin.load.java.sources.JavaSourceElement import org.jetbrains.kotlin.load.java.structure.* import org.jetbrains.kotlin.load.java.structure.impl.* import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import org.jetbrains.kotlin.resolve.scopes.MemberScope @@ -64,6 +66,20 @@ fun PsiMember.getJavaMemberDescriptor(resolutionFacade: ResolutionFacade? = null } } +fun ResolutionFacade.psiClassToDescriptor( + psiClass: PsiClass, + declarationTranslator: (KtClassOrObject) -> KtClassOrObject? = { it } +): ClassifierDescriptor? { + return if (psiClass is KtLightClass && psiClass !is KtLightClassForDecompiledDeclaration) { + val origin = psiClass.getOrigin () ?: return null + val declaration = declarationTranslator(origin) ?: return null + resolveToDescriptor(declaration) + } + else { + this.getFrontendService(psiClass, JavaDescriptorResolver::class.java).resolveClass(JavaClassImpl(psiClass)) + } as? ClassifierDescriptor +} + private fun PsiElement.getJavaDescriptorResolver(resolutionFacade: ResolutionFacade?): JavaDescriptorResolver? { if (resolutionFacade != null) { return resolutionFacade.getFrontendService(this, JavaDescriptorResolver::class.java) 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 cf86e5aa74f..7a871ab38ae 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 @@ -28,11 +28,11 @@ import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations +import org.jetbrains.kotlin.idea.caches.resolve.psiClassToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.completion.* import org.jetbrains.kotlin.idea.completion.handlers.KotlinFunctionInsertHandler import org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler -import org.jetbrains.kotlin.idea.core.psiClassToDescriptor import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.util.FuzzyType import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt index 3f7da2d49ea..1bf13e0c299 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt @@ -27,6 +27,7 @@ import com.intellij.util.indexing.IdFilter import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.caches.resolve.getJavaFieldDescriptor import org.jetbrains.kotlin.idea.caches.resolve.getJavaMethodDescriptor +import org.jetbrains.kotlin.idea.caches.resolve.psiClassToDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.resolve.ResolutionFacade diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiClassToDescriptor.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiClassToDescriptor.kt deleted file mode 100644 index 940fc4ad924..00000000000 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiClassToDescriptor.kt +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.core - -import com.intellij.psi.PsiClass -import org.jetbrains.kotlin.asJava.KtLightClass -import org.jetbrains.kotlin.descriptors.ClassifierDescriptor -import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration -import org.jetbrains.kotlin.idea.resolve.ResolutionFacade -import org.jetbrains.kotlin.idea.resolve.frontendService -import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl -import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver - -public fun ResolutionFacade.psiClassToDescriptor( - psiClass: PsiClass, - declarationTranslator: (KtClassOrObject) -> KtClassOrObject? = { it } -): ClassifierDescriptor? { - return if (psiClass is KtLightClass && psiClass !is KtLightClassForDecompiledDeclaration) { - val origin = psiClass.getOrigin () ?: return null - val declaration = declarationTranslator(origin) ?: return null - resolveToDescriptor(declaration) - } - else { - this.getFrontendService(psiClass, javaClass()).resolveClass(JavaClassImpl(psiClass)) - } as? ClassifierDescriptor -} \ No newline at end of file