diff --git a/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt b/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt new file mode 100644 index 00000000000..8f70b8ac5dc --- /dev/null +++ b/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.uast.kotlin + +import com.intellij.psi.PsiAnonymousClass +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFile +import org.jetbrains.kotlin.asJava.classes.KtLightClass +import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtObjectDeclaration +import org.jetbrains.uast.* + +class KotlinUAnonymousClass( + psi: PsiAnonymousClass, + givenParent: UElement? +) : AbstractKotlinUClass(givenParent), UAnonymousClass, PsiAnonymousClass by psi { + + override val psi: PsiAnonymousClass = unwrap(psi) + + override val javaPsi: PsiAnonymousClass = psi + + override val sourcePsi: KtClassOrObject? = ktClass + + override fun getOriginalElement(): PsiElement? = super.getOriginalElement() + + override fun getSuperClass(): UClass? = super.getSuperClass() + override fun getFields(): Array = super.getFields() + override fun getMethods(): Array = super.getMethods() + override fun getInitializers(): Array = super.getInitializers() + override fun getInnerClasses(): Array = super.getInnerClasses() + + override fun getContainingFile(): PsiFile = unwrapFakeFileForLightClass(psi.containingFile) + + override val uastAnchor by lazy { + val ktClassOrObject = (psi.originalElement as? KtLightClass)?.kotlinOrigin as? KtObjectDeclaration ?: return@lazy null + KotlinUIdentifier(ktClassOrObject.getObjectKeyword(), this) + } +} diff --git a/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/declarations/FirKotlinUClass.kt b/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/declarations/FirKotlinUClass.kt index f1dfc40a65a..b51e80c878f 100644 --- a/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/declarations/FirKotlinUClass.kt +++ b/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/declarations/FirKotlinUClass.kt @@ -5,6 +5,7 @@ package org.jetbrains.uast.kotlin +import com.intellij.psi.PsiAnonymousClass import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.psi.KtClassOrObject @@ -25,7 +26,7 @@ class FirKotlinUClass( companion object { fun create(psi: KtLightClass, givenParent: UElement?): UClass { return when (psi) { - // TODO: PsiAnonymousClass + is PsiAnonymousClass -> KotlinUAnonymousClass(psi, givenParent) // TODO: Script else -> FirKotlinUClass(psi, givenParent) @@ -34,6 +35,4 @@ class FirKotlinUClass( } } -// TODO: FirKotlinUAnonymousClass or FirKotlinUAnonymousObject ? - // TODO: FirKotlinScriptUClass 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 79e82714a41..831c192dbd9 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 @@ -42,35 +42,6 @@ class KotlinUClass( else -> KotlinUClass(psi, containingElement) } } - -} - -class KotlinUAnonymousClass( - psi: PsiAnonymousClass, - givenParent: UElement? -) : AbstractKotlinUClass(givenParent), UAnonymousClass, PsiAnonymousClass by psi { - - override val psi: PsiAnonymousClass = unwrap(psi) - - override val javaPsi: PsiAnonymousClass = psi - - override val sourcePsi: KtClassOrObject? = ktClass - - override fun getOriginalElement(): PsiElement? = super.getOriginalElement() - - override fun getSuperClass(): UClass? = super.getSuperClass() - override fun getFields(): Array = super.getFields() - override fun getMethods(): Array = super.getMethods() - override fun getInitializers(): Array = super.getInitializers() - override fun getInnerClasses(): Array = super.getInnerClasses() - - override fun getContainingFile(): PsiFile = unwrapFakeFileForLightClass(psi.containingFile) - - override val uastAnchor by lazy { - val ktClassOrObject = (psi.originalElement as? KtLightClass)?.kotlinOrigin as? KtObjectDeclaration ?: return@lazy null - KotlinUIdentifier(ktClassOrObject.getObjectKeyword(), this) - } - } class KotlinScriptUClass(