From 5c71015b09ccb28cd419f113a7e2147e6f32cf2a Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 4 Jan 2024 15:44:45 +0100 Subject: [PATCH] [LC] implement isRecord for classes Java world should better understand our classes with JvmRecord annotation ^KT-62357 --- .../light/classes/KtLightClassForDecompiledDeclaration.kt | 3 ++- .../symbol/classes/SymbolLightClassForClassOrObject.kt | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt index 25108b0de56..0be17a1a65e 100644 --- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt +++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 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. */ @@ -104,6 +104,7 @@ open class KtLightClassForDecompiledDeclaration( ) override fun isEnum(): Boolean = clsDelegate.isEnum + override fun isRecord(): Boolean = clsDelegate.isRecord override fun getExtendsListTypes(): Array = PsiClassImplUtil.getExtendsListTypes(this) override fun getTypeParameterList(): PsiTypeParameterList? = clsDelegate.typeParameterList override fun isAnnotationType(): Boolean = clsDelegate.isAnnotationType diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt index 23e67d58ddf..cb3ac2236ea 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 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. */ @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightSimpleMethod import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList import org.jetbrains.kotlin.load.java.JvmAbi +import org.jetbrains.kotlin.name.JvmStandardClassIds import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.DataClassResolver import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind @@ -295,6 +296,10 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC } } + override fun isRecord(): Boolean { + return _modifierList.hasAnnotation(JvmStandardClassIds.Annotations.JvmRecord.asFqNameString()) + } + override fun copy(): SymbolLightClassForClassOrObject = SymbolLightClassForClassOrObject(classOrObjectDeclaration, classOrObjectSymbolPointer, ktModule, manager) }