FIR IDE: fix collecting diagnostics for anonymous object declaration

This commit is contained in:
Ilya Kirillov
2020-11-13 10:45:55 +03:00
parent 7061608567
commit 7a86ca632d
@@ -14,9 +14,10 @@ import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
import org.jetbrains.kotlin.idea.util.getElementTextInContext import org.jetbrains.kotlin.idea.util.getElementTextInContext
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtObjectLiteralExpression
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import java.util.concurrent.locks.Lock import java.util.concurrent.locks.Lock
@@ -63,8 +64,10 @@ internal val FirDeclaration.ktDeclaration: KtDeclaration
get() { get() {
val psi = psi val psi = psi
?: error("PSI element was not found for${render()}") ?: error("PSI element was not found for${render()}")
return psi as? KtDeclaration return when (psi) {
?: error( is KtDeclaration -> psi
is KtObjectLiteralExpression -> psi.objectDeclaration
else -> error(
""" """
FirDeclaration.psi (${this::class.simpleName}) should be KtDeclaration but was ${psi::class.simpleName} FirDeclaration.psi (${this::class.simpleName}) should be KtDeclaration but was ${psi::class.simpleName}
${(psi as? KtElement)?.getElementTextInContext() ?: psi.text} ${(psi as? KtElement)?.getElementTextInContext() ?: psi.text}
@@ -72,6 +75,7 @@ internal val FirDeclaration.ktDeclaration: KtDeclaration
${render()} ${render()}
""".trimIndent() """.trimIndent()
) )
}
} }
internal val FirDeclaration.containingKtFileIfAny: KtFile? internal val FirDeclaration.containingKtFileIfAny: KtFile?