diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt index 83fdd372c27..651b83fbe10 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt @@ -103,7 +103,7 @@ fun doConvertParent(element: UElement, parent: PsiElement?): UElement? { if (parent is KtClassInitializer) { val containingClass = parent.containingClassOrObject if (containingClass != null) { - val containingUClass = KotlinUastLanguagePlugin().convertElementWithParent(containingClass, null) as KotlinUClass? + val containingUClass = KotlinUastLanguagePlugin().convertElementWithParent(containingClass, null) as? KotlinUClass containingUClass?.methods?.filterIsInstance()?.firstOrNull()?.let { return it.uastBody } diff --git a/plugins/uast-kotlin/tests/KotlinDetachedUastTest.kt b/plugins/uast-kotlin/tests/KotlinDetachedUastTest.kt index aaefb4b5fef..08b271a4dd8 100644 --- a/plugins/uast-kotlin/tests/KotlinDetachedUastTest.kt +++ b/plugins/uast-kotlin/tests/KotlinDetachedUastTest.kt @@ -74,6 +74,23 @@ class KotlinDetachedUastTest : KotlinLightCodeInsightFixtureTestCase() { } + fun testLiteralInClassInitializerFromFactory() { + + val detachedClass = KtPsiFactory(project).createClass(""" + class MyAnnotation(){ + init { + "default" + } + } + """) + + val literalInside = detachedClass.findUElementByTextFromPsi("default") + generateSequence(literalInside, { it.uastParent }).count().let { + TestCase.assertTrue("it should have some parents $it actually", it > 1) + } + + } + } fun T?.orFail(msg: String): T = this ?: error(msg) \ No newline at end of file