From 2c81362ce17812f876ada785e3fb5adac1052d92 Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Tue, 5 Dec 2017 19:23:36 +0300 Subject: [PATCH] Uast: `uastParent` made final in `KotlinAbstractUElement` --- .../jetbrains/uast/kotlin/KotlinAbstractUElement.kt | 2 +- .../uast/kotlin/declarations/KotlinUClass.kt | 4 ++-- .../uast/kotlin/declarations/KotlinUVariable.kt | 12 ++++++------ .../expressions/KotlinUDeclarationsExpression.kt | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) 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 d20c28e475c..397bde72333 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt @@ -33,7 +33,7 @@ import org.jetbrains.uast.kotlin.psi.UastKotlinPsiVariable abstract class KotlinAbstractUElement(private val givenParent: UElement?) : UElement, JvmDeclarationUElement { - override val uastParent: UElement? by lz { + final override val uastParent: UElement? by lz { givenParent ?: convertParent() } diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt index 1b1e67bb4a5..a1214b60c89 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt @@ -262,8 +262,8 @@ class KotlinScriptUClass( class KotlinScriptConstructorUMethod( script: KtScript, override val psi: KtLightMethod, - override val uastParent: UElement? - ) : KotlinUMethod(psi, uastParent) { + givenParent: UElement? + ) : KotlinUMethod(psi, givenParent) { override val uastBody: UExpression? by lz { val initializers = script.declarations.filterIsInstance() KotlinUBlockExpression.create(initializers, this) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt index 9fcc8337dba..e9e2ea3b840 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt @@ -337,7 +337,7 @@ open class KotlinUAnnotatedLocalVariable( override val annotations: List by lz { computeAnnotations(this) } } -open class KotlinUEnumConstant( +class KotlinUEnumConstant( psi: PsiEnumConstant, override val sourcePsi: KtElement?, givenParent: UElement? @@ -349,6 +349,10 @@ open class KotlinUEnumConstant( } } + override fun getInitializer(): PsiExpression? = super.getInitializer() + + override fun getOriginalElement(): PsiElement? = super.getOriginalElement() + override val javaPsi = unwrap(psi) override val psi = javaPsi @@ -404,15 +408,11 @@ open class KotlinUEnumConstant( private class KotlinEnumConstantClassReference( override val psi: PsiEnumConstant, override val sourcePsi: KtElement?, - private val givenParent: UElement? + givenParent: UElement? ) : KotlinAbstractUExpression(givenParent), USimpleNameReferenceExpression { override val javaPsi: PsiElement? get() = psi - override val uastParent: UElement? by lz { - givenParent ?: KotlinUastLanguagePlugin().convertElementWithParent(psi.parent ?: psi.containingFile, null) - } - override fun resolve() = psi.containingClass override val resolvedName: String? get() = psi.containingClass?.name 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 af143b057e6..05081627cea 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 @@ -28,8 +28,8 @@ open class KotlinUDeclarationsExpression( override val sourcePsi: PsiElement? get() = psiAnchor - override val uastParent: UElement? - get() = if (psiAnchor != null) doConvertParent(this, psiAnchor.parent) else super.uastParent + override fun convertParent(): UElement? = + psiAnchor?.let { doConvertParent(this, it.parent) } ?: super.convertParent() constructor(uastParent: UElement?) : this(null, uastParent)