Java-compatible "Copy Reference" action for Kotlin
#KT-13140 Fixed
This commit is contained in:
@@ -16,34 +16,29 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.actions
|
package org.jetbrains.kotlin.idea.actions
|
||||||
|
|
||||||
|
import com.intellij.ide.actions.JavaQualifiedNameProvider
|
||||||
import com.intellij.ide.actions.QualifiedNameProvider
|
import com.intellij.ide.actions.QualifiedNameProvider
|
||||||
import com.intellij.psi.PsiElement
|
|
||||||
import com.intellij.openapi.project.Project
|
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import org.jetbrains.kotlin.psi.KtProperty
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import com.intellij.psi.PsiMethod
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
import org.jetbrains.kotlin.asJava.LightClassUtil
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
|
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||||
|
import org.jetbrains.kotlin.psi.KtProperty
|
||||||
|
|
||||||
class KotlinQualifiedNameProvider: QualifiedNameProvider {
|
class KotlinQualifiedNameProvider: QualifiedNameProvider {
|
||||||
override fun adjustElementToCopy(element: PsiElement?) = null
|
override fun adjustElementToCopy(element: PsiElement?) = null
|
||||||
|
|
||||||
override fun getQualifiedName(element: PsiElement?): String? {
|
override fun getQualifiedName(element: PsiElement?) = when(element) {
|
||||||
when (element) {
|
is KtClassOrObject -> element.fqName?.asString()
|
||||||
is KtClassOrObject -> return element.fqName?.asString()
|
is KtNamedFunction -> getJavaQualifiedName(LightClassUtil.getLightClassMethod(element))
|
||||||
is KtNamedFunction, is KtProperty -> {
|
is KtProperty -> getJavaQualifiedName(LightClassUtil.getLightClassPropertyMethods(element).getter)
|
||||||
val descriptor = (element as KtDeclaration).resolveToDescriptor()
|
else -> null
|
||||||
val fqNameUnsafe = DescriptorUtils.getFqName(descriptor)
|
|
||||||
if (fqNameUnsafe.isSafe) {
|
|
||||||
return fqNameUnsafe.asString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getJavaQualifiedName(method: PsiMethod?) = method?.let { JavaQualifiedNameProvider().getQualifiedName(method) }
|
||||||
|
|
||||||
override fun qualifiedNameToElement(fqn: String?, project: Project?) = null
|
override fun qualifiedNameToElement(fqn: String?, project: Project?) = null
|
||||||
|
|
||||||
override fun insertQualifiedName(fqn: String?, element: PsiElement?, editor: Editor?, project: Project?) {
|
override fun insertQualifiedName(fqn: String?, element: PsiElement?, editor: Editor?, project: Project?) {
|
||||||
|
|||||||
Reference in New Issue
Block a user