KT-56200 Don't leak user code in reference resolve exception

This commit is contained in:
Bart van Helvert
2023-01-25 20:32:43 +01:00
committed by teamcity
parent de965d39be
commit f7ec5885f5
@@ -12,8 +12,11 @@ import com.intellij.psi.impl.source.resolve.ResolveCache
import org.jetbrains.kotlin.analysis.api.KtAllowAnalysisOnEdt
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.lifetime.allowAnalysisOnEdt
import org.jetbrains.kotlin.analysis.utils.printer.getElementTextInContext
import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment
import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry
import org.jetbrains.kotlin.diagnostics.PsiDiagnosticUtils
import org.jetbrains.kotlin.util.shouldIjPlatformExceptionBeRethrown
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element)
@@ -38,4 +41,8 @@ object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
class KtReferenceResolveException(
reference: KtReference,
cause: Throwable
) : RuntimeException("Reference is:\n${reference.element.getElementTextInContext()}", cause)
) : KotlinExceptionWithAttachments("Unable to resolve reference at: ${PsiDiagnosticUtils.atLocation(reference.element)}", cause) {
init {
withPsiAttachment("element.kt", reference.element)
}
}