Introduce KtClassOrObject.resolveToDescriptorIfAny()

This commit is contained in:
Mikhail Glukhikh
2018-02-20 17:55:30 +03:00
parent bd0cbb716c
commit 5848bc9a44
18 changed files with 25 additions and 29 deletions
@@ -25,7 +25,6 @@ import com.intellij.psi.impl.light.LightMethod
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.LightClassInheritanceHelper
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
@@ -61,8 +60,8 @@ class KtFakeLightClass(override val kotlinOrigin: KtClassOrObject) :
LightClassInheritanceHelper.getService(project).isInheritor(this, baseClass, checkDeep).ifSure { return it }
val baseKtClass = (baseClass as? KtLightClass)?.kotlinOrigin ?: return false
val baseDescriptor = baseKtClass.resolveToDescriptorIfAny() as? ClassDescriptor ?: return false
val thisDescriptor = kotlinOrigin.resolveToDescriptorIfAny() as? ClassDescriptor ?: return false
val baseDescriptor = baseKtClass.resolveToDescriptorIfAny() ?: return false
val thisDescriptor = kotlinOrigin.resolveToDescriptorIfAny() ?: return false
return if (checkDeep) DescriptorUtils.isSubclass(thisDescriptor, baseDescriptor) else DescriptorUtils.isDirectSubclass(thisDescriptor, baseDescriptor)
}
}
@@ -20,7 +20,6 @@ import com.intellij.ide.util.InheritedMembersNodeProvider
import com.intellij.ide.util.treeView.smartTree.TreeElement
import com.intellij.psi.NavigatablePsiElement
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -35,7 +34,7 @@ class KotlinInheritedMembersNodeProvider: InheritedMembersNodeProvider<TreeEleme
val project = element.project
val descriptor = element.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? ClassifierDescriptor ?: return listOf()
val descriptor = element.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return listOf()
val children = ArrayList<TreeElement>()