Intellij Idea插件:解析Kotlin参考的方法是什么

vov*_*ost 7 intellij-plugin kotlin

我正在Kotlin为Java和Kotlin文件编写一个Intellij插件.以下代码适用于Java文件:

val node: ASTNode
....
val referencedFieldElement = node.psi.reference!!.resolve()
Run Code Online (Sandbox Code Playgroud)

但它不适用于Kotlin文件,因为没有resolve()方法调用,node.psi.reference返回null.

你如何解决Kotlin参考?

我也有一个PsiElementKotlin参考.我怎样才能解决它的价值?

这是一些代码:

class KotlinFoldingBuilder : FoldingBuilderEx() {

    override fun buildFoldRegions(root: PsiElement, document: Document, quick: Boolean): Array<FoldingDescriptor> {
        ....
    }

    override fun getPlaceholderText(node: ASTNode): String? {
        val referencedFieldElement = node.psi.reference!!.resolve()
        return referencedFieldElement
    }

    override fun isCollapsedByDefault(node: ASTNode): Boolean {
        return true
    }
}
Run Code Online (Sandbox Code Playgroud)

node.psi.reference!!.resolve()适用于Java文件,但对于Kotlin文件,则node.psi.reference返回null.