FIR IDE: add more info to error messages
This commit is contained in:
+2
-1
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.util.replaceFirst
|
||||
@@ -29,7 +30,7 @@ internal object FileStructureUtil {
|
||||
firFile.declarations as MutableList<FirDeclaration>
|
||||
} else {
|
||||
val classLikeLookupTag = from.containingClass()
|
||||
?: error("Class name should not be null for non-top-level & non-local declarations")
|
||||
?: error("Class name should not be null for non-top-level & non-local declarations, but was null for\n${from.render()}")
|
||||
val containingClass = classLikeLookupTag.toSymbol(firFile.session)?.fir as FirRegularClass
|
||||
containingClass.declarations as MutableList<FirDeclaration>
|
||||
}
|
||||
|
||||
+1
-1
@@ -101,7 +101,7 @@ private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider(
|
||||
containerClassFir.declarations.first { it.psi === this }
|
||||
}
|
||||
this is KtTypeAlias -> findFir(firSymbolProvider)
|
||||
else -> error("Invalid container $this::class")
|
||||
else -> error("Invalid container ${this::class}\n${getElementTextInContext()}")
|
||||
}
|
||||
return candidate?.takeIf { it.realPsi == this }
|
||||
}
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ internal class KtFirCallResolver(
|
||||
is FirSimpleNamedReference ->
|
||||
error(
|
||||
"""
|
||||
Looks like FirFunctionCall was not resolved to BODY_RESOLVE phase,
|
||||
Looks like ${this::class.simpleName} && it calle reference ${calleeReference::class.simpleName} were not resolved to BODY_RESOLVE phase,
|
||||
consider resolving it containing declaration before starting resolve calls
|
||||
${this.render()}
|
||||
${(this.psi as? KtElement)?.getElementTextInContext()}
|
||||
|
||||
+5
-4
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.originalIfFakeOverride
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
||||
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.FirRefWithValidityCheck
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||
@@ -35,11 +36,11 @@ private tailrec fun FirDeclaration.ktSymbolOrigin(): KtSymbolOrigin = when (orig
|
||||
FirDeclarationOrigin.SamConstructor -> KtSymbolOrigin.SAM_CONSTRUCTOR
|
||||
FirDeclarationOrigin.Enhancement -> KtSymbolOrigin.JAVA
|
||||
else -> {
|
||||
val overridden =
|
||||
(this as? FirCallableDeclaration<*>)?.originalIfFakeOverride() ?: throw InvalidFirDeclarationOriginForSymbol(origin)
|
||||
val overridden = (this as? FirCallableDeclaration<*>)?.originalIfFakeOverride()
|
||||
?: throw InvalidFirDeclarationOriginForSymbol(this)
|
||||
overridden.ktSymbolOrigin()
|
||||
}
|
||||
}
|
||||
|
||||
class InvalidFirDeclarationOriginForSymbol(origin: FirDeclarationOrigin) :
|
||||
IllegalStateException("Invalid FirDeclarationOrigin $origin")
|
||||
class InvalidFirDeclarationOriginForSymbol(declaration: FirDeclaration) :
|
||||
IllegalStateException("Invalid FirDeclarationOrigin ${declaration.origin::class.simpleName} for ${declaration.render()}" )
|
||||
|
||||
Reference in New Issue
Block a user