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.idea.caches.project.IdeaModuleInfo
import org.jetbrains.kotlin.idea.util.getElementTextInContext
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtDeclaration
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.locks.Lock
@@ -63,8 +64,10 @@ internal val FirDeclaration.ktDeclaration: KtDeclaration
get() {
val psi = psi
?: error("PSI element was not found for${render()}")
return psi as? KtDeclaration
?: error(
return when (psi) {
is KtDeclaration -> psi
is KtObjectLiteralExpression -> psi.objectDeclaration
else -> error(
"""
FirDeclaration.psi (${this::class.simpleName}) should be KtDeclaration but was ${psi::class.simpleName}
${(psi as? KtElement)?.getElementTextInContext() ?: psi.text}
@@ -72,6 +75,7 @@ internal val FirDeclaration.ktDeclaration: KtDeclaration
${render()}
""".trimIndent()
)
}
}
internal val FirDeclaration.containingKtFileIfAny: KtFile?