From 3258ebae398fa889934bb53e344af37f1956db8b Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 22 Mar 2016 16:41:11 +0300 Subject: [PATCH] Java Uast: Support try-with-resources --- .../jetbrains/uast/controlStructures/UTryExpression.kt | 1 + .../org/jetbrains/uast/java/JavaUastLanguagePlugin.kt | 1 + .../uast/java/controlStructures/JavaUTryExpression.kt | 10 ++++++---- .../kotlin/uast/expressions/KotlinUTryExpression.kt | 2 ++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/uast-common/src/org/jetbrains/uast/controlStructures/UTryExpression.kt b/plugins/uast-common/src/org/jetbrains/uast/controlStructures/UTryExpression.kt index b28e01e0feb..b691f7e133c 100644 --- a/plugins/uast-common/src/org/jetbrains/uast/controlStructures/UTryExpression.kt +++ b/plugins/uast-common/src/org/jetbrains/uast/controlStructures/UTryExpression.kt @@ -16,6 +16,7 @@ package org.jetbrains.uast interface UTryExpression : UExpression { + val resources: List? val tryClause: UExpression val catchClauses: List val finallyClause: UExpression? diff --git a/plugins/uast-java/src/org/jetbrains/uast/java/JavaUastLanguagePlugin.kt b/plugins/uast-java/src/org/jetbrains/uast/java/JavaUastLanguagePlugin.kt index 69f8de40ba2..4dcf58aa0b9 100644 --- a/plugins/uast-java/src/org/jetbrains/uast/java/JavaUastLanguagePlugin.kt +++ b/plugins/uast-java/src/org/jetbrains/uast/java/JavaUastLanguagePlugin.kt @@ -56,6 +56,7 @@ internal object JavaConverter : UastConverter { is PsiVariable -> convert(element, parent) is PsiClassInitializer -> convert(element, parent) is PsiAnnotation -> convert(element, parent) + is PsiResourceExpression -> convert(element.expression, parent) is PsiExpression -> convert(element, parent) is PsiStatement -> convert(element, parent) is PsiIdentifier -> JavaUSimpleReferenceExpression(element, element.text, parent) diff --git a/plugins/uast-java/src/org/jetbrains/uast/java/controlStructures/JavaUTryExpression.kt b/plugins/uast-java/src/org/jetbrains/uast/java/controlStructures/JavaUTryExpression.kt index ca04decfd78..ddf358fc34c 100644 --- a/plugins/uast-java/src/org/jetbrains/uast/java/controlStructures/JavaUTryExpression.kt +++ b/plugins/uast-java/src/org/jetbrains/uast/java/controlStructures/JavaUTryExpression.kt @@ -17,10 +17,7 @@ package org.jetbrains.uast.java import com.intellij.psi.PsiCatchSection import com.intellij.psi.PsiTryStatement -import org.jetbrains.uast.NoEvaluate -import org.jetbrains.uast.UCatchClause -import org.jetbrains.uast.UElement -import org.jetbrains.uast.UTryExpression +import org.jetbrains.uast.* import org.jetbrains.uast.psi.PsiElementBacked class JavaUTryExpression( @@ -30,6 +27,11 @@ class JavaUTryExpression( override val tryClause by lz { JavaConverter.convertOrEmpty(psi.tryBlock, this) } override val catchClauses by lz { psi.catchSections.map { JavaUCatchClause(it, this) } } override val finallyClause by lz { psi.finallyBlock?.let { JavaConverter.convert(it, this) } } + override val resources by lz { + val vars = psi.resourceList ?: return@lz null + val resources = vars.map { JavaConverter.convert(it, this) ?: UDeclarationNotResolved } + if (resources.isEmpty()) null else resources + } } class JavaUCatchClause( diff --git a/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUTryExpression.kt b/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUTryExpression.kt index be31abce6e6..b046d1c4cd3 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUTryExpression.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUTryExpression.kt @@ -29,4 +29,6 @@ class KotlinUTryExpression( override val tryClause by lz { KotlinConverter.convert(psi.tryBlock, this) } override val catchClauses by lz { psi.catchClauses.map { KotlinUCatchClause(it, this) } } override val finallyClause by lz { psi.finallyBlock?.finalExpression?.let { KotlinConverter.convert(it, this) } } + override val resources: List? + get() = null } \ No newline at end of file