diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt index 3abad52b38e..c1adc99b522 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt @@ -16,8 +16,12 @@ package org.jetbrains.uast.kotlin +import com.intellij.openapi.diagnostic.Attachment +import com.intellij.openapi.diagnostic.Logger import com.intellij.psi.PsiMethod import com.intellij.psi.PsiType +import com.intellij.psi.impl.light.LightPsiClassBuilder +import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.psi.KtObjectLiteralExpression import org.jetbrains.kotlin.psi.KtSuperTypeCallEntry @@ -27,7 +31,19 @@ class KotlinUObjectLiteralExpression( override val psi: KtObjectLiteralExpression, override val uastParent: UElement? ) : KotlinAbstractUExpression(), UObjectLiteralExpression, KotlinUElementWithType { - override val declaration by lz { getLanguagePlugin().convert(psi.objectDeclaration.toLightClass()!!, this) } + override val declaration: UClass by lz { + val lightClass: KtLightClass? = psi.objectDeclaration.toLightClass() + if (lightClass != null) { + getLanguagePlugin().convert(lightClass, this) + } + else { + logger.error( + "Failed to create light class for object declaration", + Attachment(psi.containingFile.virtualFile?.path ?: "", psi.containingFile.text)) + + getLanguagePlugin().convert(LightPsiClassBuilder(psi, ""), this) + } + } override fun getExpressionType() = psi.objectDeclaration.toPsiType() @@ -69,5 +85,9 @@ class KotlinUObjectLiteralExpression( override val identifier: String get() = psi.name ?: "" - } + } + + companion object { + val logger by lz { Logger.getInstance(KotlinUObjectLiteralExpression::class.java) } + } } \ No newline at end of file