From 3bd4cb274d27a5f502e0dc39710cae4708c5dcf6 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Fri, 18 Jun 2021 01:33:36 -0700 Subject: [PATCH] FIR/UAST: commonize invalid UClass --- .../declarations/KotlinInvalidUClass.kt | 44 +++++++++++++++++++ .../kotlin/declarations/FirKotlinUClass.kt | 2 - .../uast/kotlin/declarations/KotlinUClass.kt | 32 -------------- 3 files changed, 44 insertions(+), 34 deletions(-) create mode 100644 plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt diff --git a/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt b/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt new file mode 100644 index 00000000000..99f96f6b1f9 --- /dev/null +++ b/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt @@ -0,0 +1,44 @@ +/* + * 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.PsiClass +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFile +import com.intellij.psi.impl.light.LightPsiClassBuilder +import org.jetbrains.kotlin.asJava.classes.KtLightClass +import org.jetbrains.uast.* + +/** + * implementation of [UClass] for invalid code, when it is impossible to create a [KtLightClass] + */ +class KotlinInvalidUClass( + override val psi: PsiClass, + givenParent: UElement? +) : AbstractKotlinUClass(givenParent), PsiClass by psi { + + constructor(name: String, context: PsiElement, givenParent: UElement?) : this(LightPsiClassBuilder(context, name), givenParent) + + override fun getContainingFile(): PsiFile? = uastParent?.getContainingUFile()?.sourcePsi + + override val sourcePsi: PsiElement? get() = null + + override val uastAnchor: UIdentifier? get() = null + + override val javaPsi: PsiClass get() = psi + + override fun getFields(): Array = emptyArray() + + override fun getInitializers(): Array = emptyArray() + + override fun getInnerClasses(): Array = emptyArray() + + override fun getMethods(): Array = emptyArray() + + override fun getSuperClass(): UClass? = null + + override fun getOriginalElement(): PsiElement? = null +} 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 8776dced8fa..f1dfc40a65a 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 @@ -37,5 +37,3 @@ class FirKotlinUClass( // TODO: FirKotlinUAnonymousClass or FirKotlinUAnonymousObject ? // TODO: FirKotlinScriptUClass - -// TODO: FirKotlinInvalidUClass 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 5ed1ee7caf9..79e82714a41 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 @@ -17,7 +17,6 @@ package org.jetbrains.uast.kotlin import com.intellij.psi.* -import com.intellij.psi.impl.light.LightPsiClassBuilder import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClassForScript import org.jetbrains.kotlin.asJava.elements.KtLightMethod @@ -124,34 +123,3 @@ class KotlinScriptUClass( override val javaPsi = psi } } - -/** - * implementation of [UClass] for invalid code, when it is impossible to create a [KtLightClass] - */ -class KotlinInvalidUClass( - override val psi: PsiClass, - givenParent: UElement? -) : AbstractKotlinUClass(givenParent), PsiClass by psi { - - constructor(name: String, context: PsiElement, givenParent: UElement?) : this(LightPsiClassBuilder(context, name), givenParent) - - override fun getContainingFile(): PsiFile? = uastParent?.getContainingUFile()?.sourcePsi as? PsiFile - - override val sourcePsi: PsiElement? get() = null - - override val uastAnchor: UIdentifier? get() = null - - override val javaPsi: PsiClass get() = psi - - override fun getFields(): Array = emptyArray() - - override fun getInitializers(): Array = emptyArray() - - override fun getInnerClasses(): Array = emptyArray() - - override fun getMethods(): Array = emptyArray() - - override fun getSuperClass(): UClass? = null - - override fun getOriginalElement(): PsiElement? = null -}