KT-4107 Data objects

This commit is contained in:
Pavel Mikhailovskii
2022-06-28 09:51:57 +02:00
parent 6c31dc90e4
commit c3c09aa95a
75 changed files with 1183 additions and 134 deletions
@@ -29,7 +29,6 @@ open class KtClass : KtClassOrObject {
_stub?.isInterface() ?: (findChildByType<PsiElement>(KtTokens.INTERFACE_KEYWORD) != null)
fun isEnum(): Boolean = hasModifier(KtTokens.ENUM_KEYWORD)
fun isData(): Boolean = hasModifier(KtTokens.DATA_KEYWORD)
fun isSealed(): Boolean = hasModifier(KtTokens.SEALED_KEYWORD)
fun isInner(): Boolean = hasModifier(KtTokens.INNER_KEYWORD)
fun isInline(): Boolean = hasModifier(KtTokens.INLINE_KEYWORD)
@@ -100,6 +100,8 @@ abstract class KtClassOrObject :
override fun isLocal(): Boolean = stub?.isLocal() ?: KtPsiUtil.isLocal(this)
fun isData(): Boolean = hasModifier(KtTokens.DATA_KEYWORD)
override fun getDeclarations(): List<KtDeclaration> = getBody()?.declarations.orEmpty()
override fun getPresentation(): ItemPresentation? = ItemPresentationProviders.getItemPresentation(this)
@@ -132,7 +132,8 @@ val featureDependencies = mapOf(
EXPECT_KEYWORD to listOf(LanguageFeature.MultiPlatformProjects),
ACTUAL_KEYWORD to listOf(LanguageFeature.MultiPlatformProjects),
LATEINIT_KEYWORD to listOf(LanguageFeature.LateinitTopLevelProperties, LanguageFeature.LateinitLocalVariables),
FUN_KEYWORD to listOf(LanguageFeature.FunctionalInterfaceConversion)
FUN_KEYWORD to listOf(LanguageFeature.FunctionalInterfaceConversion),
DATA_KEYWORD to listOf(LanguageFeature.DataObjects)
)
val featureDependenciesTargets = mapOf(
@@ -141,7 +142,8 @@ val featureDependenciesTargets = mapOf(
LanguageFeature.LateinitTopLevelProperties to setOf(KotlinTarget.TOP_LEVEL_PROPERTY),
LanguageFeature.InlineClasses to setOf(KotlinTarget.CLASS_ONLY),
LanguageFeature.JvmInlineValueClasses to setOf(KotlinTarget.CLASS_ONLY),
LanguageFeature.FunctionalInterfaceConversion to setOf(KotlinTarget.INTERFACE)
LanguageFeature.FunctionalInterfaceConversion to setOf(KotlinTarget.INTERFACE),
LanguageFeature.DataObjects to setOf(KotlinTarget.STANDALONE_OBJECT)
)
val defaultVisibilityTargets: EnumSet<KotlinTarget> = EnumSet.of(
@@ -204,7 +206,7 @@ val possibleTargetMap = mapOf(
KotlinTarget.LOCAL_VARIABLE,
KotlinTarget.BACKING_FIELD
),
DATA_KEYWORD to EnumSet.of(KotlinTarget.CLASS_ONLY, KotlinTarget.LOCAL_CLASS),
DATA_KEYWORD to EnumSet.of(KotlinTarget.CLASS_ONLY, KotlinTarget.LOCAL_CLASS, KotlinTarget.STANDALONE_OBJECT),
INLINE_KEYWORD to EnumSet.of(
KotlinTarget.FUNCTION,
KotlinTarget.PROPERTY,