I'm writing an Intellij plugin in Kotlin for Java and Kotlin files. The following code works for Java files:
val node: ASTNode
....
val referencedFieldElement = node.psi.reference!!.resolve()
But it doesn't work for Kotlin files because there is no resolve() method call and node.psi.reference returns null.
How do you resolve a Kotlin reference ?
Also I have a PsiElement
Kotlin reference. How can I resolve it's value ?
Here is some code:
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
}
}
node.psi.reference!!.resolve()
works for Java file but for Kotlin files node.psi.reference
returns null.
A potential answer to this question can be found here https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000795610-What-s-the-methed-call-to-Resolve-a-Kotlin-reference