[Analysis API] add information about KtModule to reported exceptions
This commit is contained in:
committed by
Space Team
parent
c37ee83791
commit
fbcaf3efeb
@@ -7,6 +7,7 @@ dependencies {
|
|||||||
implementation(project(":compiler:psi"))
|
implementation(project(":compiler:psi"))
|
||||||
implementation(kotlinxCollectionsImmutable())
|
implementation(kotlinxCollectionsImmutable())
|
||||||
implementation(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
implementation(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
||||||
|
implementation(project(":analysis:project-structure"))
|
||||||
implementation(intellijCore())
|
implementation(intellijCore())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.analysis.utils.errors
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiInvalidElementAccessException
|
import com.intellij.psi.PsiInvalidElementAccessException
|
||||||
|
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||||
|
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.getElementTextInContext
|
import org.jetbrains.kotlin.analysis.utils.printer.getElementTextInContext
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
|
|
||||||
@@ -18,8 +20,14 @@ public fun ExceptionAttachmentBuilder.withPsiEntry(name: String, psi: PsiElement
|
|||||||
else -> psiElement.text
|
else -> psiElement.text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (psi != null) {
|
||||||
|
withKtModuleEntry("${name}KtModule", psi.getKtModule())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fun ExceptionAttachmentBuilder.withKtModuleEntry(name: String, module: KtModule?) {
|
||||||
|
withEntry(name, module) { ktModule -> ktModule.moduleDescription }
|
||||||
|
}
|
||||||
|
|
||||||
public fun ExceptionAttachmentBuilder.withClassEntry(name: String, element: Any?) {
|
public fun ExceptionAttachmentBuilder.withClassEntry(name: String, element: Any?) {
|
||||||
withEntry(name, element) { it::class.java.name }
|
withEntry(name, element) { it::class.java.name }
|
||||||
|
|||||||
+8
@@ -6,10 +6,14 @@
|
|||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.util
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.util
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||||
|
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||||
import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder
|
import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder
|
||||||
import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment
|
import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment
|
||||||
|
import org.jetbrains.kotlin.analysis.utils.errors.withKtModuleEntry
|
||||||
import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry
|
import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElementWithResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.renderer.ConeTypeRendererForDebugging
|
import org.jetbrains.kotlin.fir.renderer.ConeTypeRendererForDebugging
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithAttributes
|
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithAttributes
|
||||||
@@ -27,9 +31,13 @@ fun ExceptionAttachmentBuilder.withFirEntry(name: String, fir: FirElement) {
|
|||||||
).renderElementAsString(it)
|
).renderElementAsString(it)
|
||||||
}
|
}
|
||||||
withEntry("${name}FirSourceElementKind", fir.source?.kind?.let { it::class.simpleName })
|
withEntry("${name}FirSourceElementKind", fir.source?.kind?.let { it::class.simpleName })
|
||||||
|
if (fir is FirElementWithResolvePhase) {
|
||||||
|
withKtModuleEntry("${name}KtModule", fir.llFirModuleData.ktModule)
|
||||||
|
}
|
||||||
withPsiEntry("${name}Psi", fir.psi)
|
withPsiEntry("${name}Psi", fir.psi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun ExceptionAttachmentBuilder.withFirSymbolEntry(name: String, symbol: FirBasedSymbol<*>) {
|
fun ExceptionAttachmentBuilder.withFirSymbolEntry(name: String, symbol: FirBasedSymbol<*>) {
|
||||||
withFirEntry("${name}Fir", symbol.fir)
|
withFirEntry("${name}Fir", symbol.fir)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user