From 0949f55921745270d87e84e5d0e0c290892ec5db Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Thu, 15 Dec 2016 16:51:41 +0100 Subject: [PATCH] Uast update due to new diagnostic for delegation by --- .../uast/java/declarations/JavaUClass.kt | 13 +++++- .../declarations/JavaUClassInitializer.kt | 10 +++++ .../uast/java/declarations/JavaUMethod.kt | 14 ++++-- .../uast/java/declarations/JavaUVariable.kt | 42 +++++++++++++++++- .../uast/kotlin/declarations/KotlinUClass.kt | 9 ++++ .../uast/kotlin/declarations/KotlinUMethod.kt | 7 +++ .../kotlin/declarations/KotlinUVariable.kt | 43 +++++++++++++++++++ 7 files changed, 131 insertions(+), 7 deletions(-) diff --git a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt index 4b996012d30..76b4b5d7857 100644 --- a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt +++ b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt @@ -18,6 +18,7 @@ package org.jetbrains.uast.java import com.intellij.psi.PsiAnonymousClass import com.intellij.psi.PsiClass +import com.intellij.psi.PsiElement import org.jetbrains.uast.* import org.jetbrains.uast.java.internal.JavaUElementWithComments @@ -57,8 +58,12 @@ abstract class AbstractJavaUClass : UClass, JavaUElementWithComments { override fun hashCode() = psi.hashCode() } -class JavaUClass private constructor(psi: PsiClass, override val containingElement: UElement?) : AbstractJavaUClass(), PsiClass by psi { - override val psi = unwrap(psi) +class JavaUClass private constructor(psiClass: PsiClass, override val containingElement: UElement?) : AbstractJavaUClass(), PsiClass by psiClass { + override val psi = unwrap(psiClass) + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } companion object { fun create(psi: PsiClass, containingElement: UElement?): UClass { @@ -75,4 +80,8 @@ class JavaUAnonymousClass( override val containingElement: UElement? ) : AbstractJavaUClass(), UAnonymousClass, PsiAnonymousClass by psi { override val psi: PsiAnonymousClass = unwrap(psi) + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } } \ No newline at end of file diff --git a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClassInitializer.kt b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClassInitializer.kt index 451d7841be8..04a42fa6133 100644 --- a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClassInitializer.kt +++ b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClassInitializer.kt @@ -17,6 +17,8 @@ package org.jetbrains.uast.java import com.intellij.psi.PsiClassInitializer +import com.intellij.psi.PsiCodeBlock +import com.intellij.psi.PsiElement import org.jetbrains.uast.* import org.jetbrains.uast.java.internal.JavaUElementWithComments @@ -26,6 +28,14 @@ class JavaUClassInitializer( ) : UClassInitializer, JavaUElementWithComments, PsiClassInitializer by psi { override val psi = unwrap(psi) + override fun getBody(): PsiCodeBlock { + return super.getBody() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + override val uastAnchor: UElement? get() = null diff --git a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUMethod.kt b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUMethod.kt index 6222119d140..b9cfeb9450e 100644 --- a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUMethod.kt +++ b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUMethod.kt @@ -16,9 +16,7 @@ package org.jetbrains.uast.java -import com.intellij.psi.PsiAnnotationMethod -import com.intellij.psi.PsiMethod -import com.intellij.psi.PsiNameIdentifierOwner +import com.intellij.psi.* import org.jetbrains.uast.* import org.jetbrains.uast.java.internal.JavaUElementWithComments @@ -27,7 +25,15 @@ open class JavaUMethod( override val containingElement: UElement? ) : UMethod, JavaUElementWithComments, PsiMethod by psi { override val psi = unwrap(psi) - + + override fun getBody(): PsiCodeBlock? { + return super.getBody() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + override val uastBody by lz { val body = psi.body ?: return@lz null getLanguagePlugin().convertElement(body, this) as? UExpression diff --git a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUVariable.kt b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUVariable.kt index 1e3e2c02b5f..f2722adedcc 100644 --- a/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUVariable.kt +++ b/plugins/uast-java/src/org/jetbrains/uast/java/declarations/JavaUVariable.kt @@ -44,7 +44,15 @@ open class JavaUVariable( override val containingElement: UElement? ) : AbstractJavaUVariable(), UVariable, PsiVariable by psi { override val psi = unwrap(psi) - + + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + companion object { fun create(psi: PsiVariable, containingElement: UElement?): UVariable { return when (psi) { @@ -63,6 +71,14 @@ open class JavaUParameter( override val containingElement: UElement? ) : AbstractJavaUVariable(), UParameter, PsiParameter by psi { override val psi = unwrap(psi) + + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } } open class JavaUField( @@ -70,6 +86,14 @@ open class JavaUField( override val containingElement: UElement? ) : AbstractJavaUVariable(), UField, PsiField by psi { override val psi = unwrap(psi) + + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } } open class JavaULocalVariable( @@ -77,6 +101,14 @@ open class JavaULocalVariable( override val containingElement: UElement? ) : AbstractJavaUVariable(), ULocalVariable, PsiLocalVariable by psi { override val psi = unwrap(psi) + + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } } open class JavaUEnumConstant( @@ -85,6 +117,14 @@ open class JavaUEnumConstant( ) : AbstractJavaUVariable(), UEnumConstant, PsiEnumConstant by psi { override val psi = unwrap(psi) + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + override val kind: UastCallKind get() = UastCallKind.CONSTRUCTOR_CALL override val receiver: UExpression? 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 6e090e8cb8e..560ec1c993d 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 @@ -18,6 +18,7 @@ package org.jetbrains.uast.kotlin import com.intellij.psi.PsiAnonymousClass import com.intellij.psi.PsiClass +import com.intellij.psi.PsiElement import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.toLightMethods @@ -33,6 +34,10 @@ class KotlinUClass private constructor( val ktClass = psi.kotlinOrigin override val psi = unwrap(psi) + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + override val uastAnchor: UElement get() = UIdentifier(psi.nameIdentifier, this) @@ -86,6 +91,10 @@ class KotlinUAnonymousClass( ) : AbstractJavaUClass(), UAnonymousClass, PsiAnonymousClass by psi { override val psi: PsiAnonymousClass = unwrap(psi) + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + override val uastAnchor: UElement? get() { val ktClassOrObject = (psi.originalElement as? KtLightClass)?.kotlinOrigin as? KtObjectDeclaration ?: return null diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt index 8b954ec8da9..eb4c2782456 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt @@ -16,6 +16,8 @@ package org.jetbrains.uast.kotlin.declarations +import com.intellij.psi.PsiCodeBlock +import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethod import com.intellij.psi.PsiNameIdentifierOwner import org.jetbrains.kotlin.asJava.elements.KtLightElement @@ -38,6 +40,7 @@ open class KotlinUMethod( override val containingElement: UElement? ) : UMethod, JavaUElementWithComments, PsiMethod by psi { override val psi: KtLightMethod = unwrap(psi) + private val kotlinOrigin = (psi.originalElement as KtLightElement<*, *>).kotlinOrigin override val annotations by lz { psi.annotations.map { JavaUAnnotation(it, this) } } @@ -58,6 +61,10 @@ open class KotlinUMethod( override val isOverride: Boolean get() = (kotlinOrigin as? KtCallableDeclaration)?.hasModifier(KtTokens.OVERRIDE_KEYWORD) ?: false + override fun getBody(): PsiCodeBlock? = super.getBody() + + override fun getOriginalElement(): PsiElement? = super.getOriginalElement() + companion object { fun create(psi: KtLightMethod, containingElement: UElement?) = when (psi) { is KtLightMethodImpl.KtLightAnnotationMethod -> KotlinUAnnotationMethod(psi, containingElement) 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 24066575bb8..b598acc0b72 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 @@ -58,6 +58,14 @@ class KotlinUVariable( ) : AbstractKotlinUVariable(), UVariable, PsiVariable by psi { override val psi = unwrap(psi) + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + override val annotations by lz { psi.annotations.map { JavaUAnnotation(it, this) } } override val typeReference by lz { getLanguagePlugin().convertOpt(psi.typeElement, this) } @@ -79,6 +87,15 @@ open class KotlinUParameter( override val containingElement: UElement? ) : AbstractKotlinUVariable(), UParameter, PsiParameter by psi { override val psi = unwrap(psi) + + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + } open class KotlinUField( @@ -86,6 +103,15 @@ open class KotlinUField( override val containingElement: UElement? ) : AbstractKotlinUVariable(), UField, PsiField by psi { override val psi = unwrap(psi) + + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + } open class KotlinULocalVariable( @@ -93,6 +119,15 @@ open class KotlinULocalVariable( override val containingElement: UElement? ) : AbstractKotlinUVariable(), ULocalVariable, PsiLocalVariable by psi { override val psi = unwrap(psi) + + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + } open class KotlinUEnumConstant( @@ -101,6 +136,14 @@ open class KotlinUEnumConstant( ) : AbstractKotlinUVariable(), UEnumConstant, PsiEnumConstant by psi { override val psi = unwrap(psi) + override fun getInitializer(): PsiExpression? { + return super.getInitializer() + } + + override fun getOriginalElement(): PsiElement? { + return super.getOriginalElement() + } + override val kind: UastCallKind get() = UastCallKind.CONSTRUCTOR_CALL override val receiver: UExpression?