Correctly get qualified name for properties without backing field

#KT-19903
This commit is contained in:
Dmitry Jemerov
2017-08-31 19:28:44 +02:00
parent cc6bfcfc7c
commit b0fb3370e3
@@ -21,7 +21,6 @@ import com.intellij.ide.actions.QualifiedNameProvider
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtNamedFunction
@@ -33,11 +32,16 @@ class KotlinQualifiedNameProvider: QualifiedNameProvider {
override fun getQualifiedName(element: PsiElement?) = when(element) {
is KtClassOrObject -> element.fqName?.asString()
is KtNamedFunction -> getJavaQualifiedName(LightClassUtil.getLightClassMethod(element))
is KtProperty -> getJavaQualifiedName(LightClassUtil.getLightClassPropertyMethods(element).getter)
is KtProperty -> {
val lightClassPropertyMethods = LightClassUtil.getLightClassPropertyMethods(element)
val lightElement: PsiElement? = lightClassPropertyMethods.getter ?: lightClassPropertyMethods.backingField
getJavaQualifiedName(lightElement)
}
else -> null
}
private fun getJavaQualifiedName(method: PsiMethod?) = method?.let { JavaQualifiedNameProvider().getQualifiedName(method) }
private fun getJavaQualifiedName(element: PsiElement?) = element?.let { JavaQualifiedNameProvider().getQualifiedName(element) }
override fun qualifiedNameToElement(fqn: String?, project: Project?) = null