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 62933827ec6..b221b8b913c 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt @@ -91,6 +91,11 @@ fun doConvertParent(element: UElement, parent: PsiElement?): UElement? { return result.body } + if (result is KotlinUDestructuringDeclarationExpression && + element.psi == (parent as KtDestructuringDeclaration).initializer) { + return result.tempVarAssignment + } + return result } diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt index a7c5d92e4ed..bd4a20daab9 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt @@ -356,7 +356,7 @@ internal object KotlinConverter { } } is KtDestructuringDeclaration -> expr { - val declarationsExpression = KotlinUDeclarationsExpression(givenParent) + val declarationsExpression = KotlinUDestructuringDeclarationExpression(givenParent, expression) declarationsExpression.apply { val tempAssignment = KotlinULocalVariable(UastKotlinPsiVariable.create(expression, declarationsExpression), declarationsExpression) val destructuringAssignments = expression.entries.mapIndexed { i, entry -> diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt index 6696d9c68e8..eb934ef0d54 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt @@ -19,7 +19,7 @@ import com.intellij.psi.PsiElement import org.jetbrains.uast.kotlin.KotlinAbstractUExpression import org.jetbrains.uast.kotlin.doConvertParent -class KotlinUDeclarationsExpression( +open class KotlinUDeclarationsExpression( override val psi: PsiElement?, givenParent: UElement?, val psiAnchor: PsiElement? = null @@ -32,4 +32,12 @@ class KotlinUDeclarationsExpression( override lateinit var declarations: List internal set -} \ No newline at end of file +} + +class KotlinUDestructuringDeclarationExpression( + givenParent: UElement?, + psiAnchor: PsiElement +) : KotlinUDeclarationsExpression(null, givenParent, psiAnchor) { + + val tempVarAssignment get() = declarations.first() +}