KT-56200 Don't leak user code in reference resolve exception
This commit is contained in:
committed by
teamcity
parent
de965d39be
commit
f7ec5885f5
+9
-2
@@ -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.KtAllowAnalysisOnEdt
|
||||||
import org.jetbrains.kotlin.analysis.api.analyze
|
import org.jetbrains.kotlin.analysis.api.analyze
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.allowAnalysisOnEdt
|
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.util.shouldIjPlatformExceptionBeRethrown
|
||||||
|
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
|
||||||
|
|
||||||
object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
|
object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
|
||||||
class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element)
|
class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element)
|
||||||
@@ -38,4 +41,8 @@ object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
|
|||||||
class KtReferenceResolveException(
|
class KtReferenceResolveException(
|
||||||
reference: KtReference,
|
reference: KtReference,
|
||||||
cause: Throwable
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user