diff --git a/tools/intellij-plugin/src/resolve/resolveIdea.kt b/tools/intellij-plugin/src/resolve/resolveIdea.kt index f16c33468..b1df5bb09 100644 --- a/tools/intellij-plugin/src/resolve/resolveIdea.kt +++ b/tools/intellij-plugin/src/resolve/resolveIdea.kt @@ -41,6 +41,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeProjection import org.jetbrains.kotlin.types.typeUtil.supertypes +import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance @@ -136,7 +137,13 @@ fun getElementForLineMark(callElement: PsiElement): PsiElement = } val KtAnnotationEntry.annotationClass: KtClass? - get() = calleeExpression?.constructorReferenceExpression?.resolve()?.findParent() + get() = calleeExpression?.constructorReferenceExpression?.run { + try { + resolve() + } catch (e: KotlinExceptionWithAttachments) { + null // type inference with `by lazy {}` is unstable for now. I just ignore exceptions encountering with such issue. + } + }?.findParent() fun KtAnnotated.hasAnnotation(fqName: FqName): Boolean = this.annotationEntries.any { it.annotationClass?.getKotlinFqName() == fqName }