Java Uast: Support try-with-resources
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
package org.jetbrains.uast
|
package org.jetbrains.uast
|
||||||
|
|
||||||
interface UTryExpression : UExpression {
|
interface UTryExpression : UExpression {
|
||||||
|
val resources: List<UElement>?
|
||||||
val tryClause: UExpression
|
val tryClause: UExpression
|
||||||
val catchClauses: List<UCatchClause>
|
val catchClauses: List<UCatchClause>
|
||||||
val finallyClause: UExpression?
|
val finallyClause: UExpression?
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ internal object JavaConverter : UastConverter {
|
|||||||
is PsiVariable -> convert(element, parent)
|
is PsiVariable -> convert(element, parent)
|
||||||
is PsiClassInitializer -> convert(element, parent)
|
is PsiClassInitializer -> convert(element, parent)
|
||||||
is PsiAnnotation -> convert(element, parent)
|
is PsiAnnotation -> convert(element, parent)
|
||||||
|
is PsiResourceExpression -> convert(element.expression, parent)
|
||||||
is PsiExpression -> convert(element, parent)
|
is PsiExpression -> convert(element, parent)
|
||||||
is PsiStatement -> convert(element, parent)
|
is PsiStatement -> convert(element, parent)
|
||||||
is PsiIdentifier -> JavaUSimpleReferenceExpression(element, element.text, parent)
|
is PsiIdentifier -> JavaUSimpleReferenceExpression(element, element.text, parent)
|
||||||
|
|||||||
+6
-4
@@ -17,10 +17,7 @@ package org.jetbrains.uast.java
|
|||||||
|
|
||||||
import com.intellij.psi.PsiCatchSection
|
import com.intellij.psi.PsiCatchSection
|
||||||
import com.intellij.psi.PsiTryStatement
|
import com.intellij.psi.PsiTryStatement
|
||||||
import org.jetbrains.uast.NoEvaluate
|
import org.jetbrains.uast.*
|
||||||
import org.jetbrains.uast.UCatchClause
|
|
||||||
import org.jetbrains.uast.UElement
|
|
||||||
import org.jetbrains.uast.UTryExpression
|
|
||||||
import org.jetbrains.uast.psi.PsiElementBacked
|
import org.jetbrains.uast.psi.PsiElementBacked
|
||||||
|
|
||||||
class JavaUTryExpression(
|
class JavaUTryExpression(
|
||||||
@@ -30,6 +27,11 @@ class JavaUTryExpression(
|
|||||||
override val tryClause by lz { JavaConverter.convertOrEmpty(psi.tryBlock, this) }
|
override val tryClause by lz { JavaConverter.convertOrEmpty(psi.tryBlock, this) }
|
||||||
override val catchClauses by lz { psi.catchSections.map { JavaUCatchClause(it, 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 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(
|
class JavaUCatchClause(
|
||||||
|
|||||||
@@ -29,4 +29,6 @@ class KotlinUTryExpression(
|
|||||||
override val tryClause by lz { KotlinConverter.convert(psi.tryBlock, this) }
|
override val tryClause by lz { KotlinConverter.convert(psi.tryBlock, this) }
|
||||||
override val catchClauses by lz { psi.catchClauses.map { KotlinUCatchClause(it, 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 finallyClause by lz { psi.finallyBlock?.finalExpression?.let { KotlinConverter.convert(it, this) } }
|
||||||
|
override val resources: List<UElement>?
|
||||||
|
get() = null
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user