More uses of partial body resolve

This commit is contained in:
Valentin Kipyatkov
2016-10-30 14:55:18 +03:00
parent 68174470c3
commit 6d3dd5d9b7
11 changed files with 22 additions and 17 deletions
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.renderer.render
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.util.supertypesWithAny
@@ -546,7 +547,7 @@ class BasicCompletionSession(
override fun doComplete() {
val classOrObject = position.parents.firstIsInstanceOrNull<KtClassOrObject>() ?: return
val classDescriptor = resolutionFacade.resolveToDescriptor(classOrObject) as ClassDescriptor
val classDescriptor = resolutionFacade.resolveToDescriptor(classOrObject, BodyResolveMode.PARTIAL) as ClassDescriptor
var superClasses = classDescriptor.defaultType.constructor.supertypesWithAny()
.mapNotNull { it.constructor.declarationDescriptor as? ClassDescriptor }
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.idea.imports.importableFqName
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
class KotlinCompletionStatistician : CompletionStatistician() {
override fun serialize(element: LookupElement, location: CompletionLocation): StatisticsInfo? {
@@ -53,7 +54,7 @@ class KotlinCompletionStatistician : CompletionStatistician() {
class KotlinProximityStatistician : ProximityStatistician() {
override fun serialize(element: PsiElement, location: ProximityLocation): StatisticsInfo? {
if (element !is KtDeclaration) return null
val descriptor = element.resolveToDescriptor()
val descriptor = element.resolveToDescriptor(BodyResolveMode.PARTIAL)
return KotlinStatisticsInfo.forDescriptor(descriptor)
}
}