diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirAnnotation.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirAnnotation.kt index daa58875c44..69d4a6f3462 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirAnnotation.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirAnnotation.kt @@ -5,12 +5,10 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.constants.ConstantValue -interface CirAnnotation { - val fqName: FqName +interface CirAnnotation : CirHasFqName { val constantValueArguments: Map> val annotationValueArguments: Map } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt index e8d5384157c..7c46f0b168d 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClass.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.name.FqName -interface CirClass : CirClassifier, CirDeclarationWithModality { +interface CirClass : CirClassifier, CirHasModality { val kind: ClassKind var companion: FqName? // null means no companion object val isCompanion: Boolean diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassConstructor.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassConstructor.kt index 291a9a175db..d4ec55b248f 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassConstructor.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassConstructor.kt @@ -8,9 +8,10 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor interface CirClassConstructor : - CirAnnotatedDeclaration, - CirDeclarationWithTypeParameters, - CirDeclarationWithVisibility, + CirDeclaration, + CirHasAnnotations, + CirHasTypeParameters, + CirHasVisibility, CirMaybeCallableMemberOfClass, CirCallableMemberWithParameters { diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassifier.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassifier.kt index 624daabb3a6..fdef19f1435 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassifier.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirClassifier.kt @@ -6,7 +6,8 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir interface CirClassifier : - CirAnnotatedDeclaration, - CirNamedDeclaration, - CirDeclarationWithTypeParameters, - CirDeclarationWithVisibility + CirDeclaration, + CirHasAnnotations, + CirHasName, + CirHasTypeParameters, + CirHasVisibility diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirContainingClassDetails.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirContainingClassDetails.kt index f3057efbd98..c642b9fe96b 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirContainingClassDetails.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirContainingClassDetails.kt @@ -11,9 +11,9 @@ import org.jetbrains.kotlin.descriptors.Modality // TODO: inline? data class CirContainingClassDetails( val kind: ClassKind, - val modality: Modality, + override val modality: Modality, val isData: Boolean -) { +) : CirHasModality { companion object { val DOES_NOT_MATTER = CirContainingClassDetails( kind = ClassKind.CLASS, diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirDeclaration.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirDeclaration.kt index c491a12db25..039a01eb892 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirDeclaration.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirDeclaration.kt @@ -23,30 +23,31 @@ import org.jetbrains.kotlin.name.Name */ interface CirDeclaration -interface CirAnnotatedDeclaration : CirDeclaration { +interface CirHasAnnotations { val annotations: List } -interface CirNamedDeclaration : CirDeclaration { +interface CirHasName { val name: Name } -// TODO: merge with [CirDeclarationWithVisibility] +interface CirHasFqName { + val fqName: FqName +} + interface CirHasVisibility { val visibility: Visibility } -interface CirDeclarationWithVisibility : CirDeclaration, CirHasVisibility - -interface CirDeclarationWithModality : CirDeclaration { +interface CirHasModality { val modality: Modality } -interface CirMaybeCallableMemberOfClass : CirDeclaration { +interface CirMaybeCallableMemberOfClass { val containingClassDetails: CirContainingClassDetails? // null assumes no containing class } -interface CirDeclarationWithTypeParameters : CirDeclaration { +interface CirHasTypeParameters { val typeParameters: List } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirExtensionReceiver.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirExtensionReceiver.kt index 932f8e7f208..1decdcac4a6 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirExtensionReceiver.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirExtensionReceiver.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -interface CirExtensionReceiver { - val annotations: List +interface CirExtensionReceiver : CirHasAnnotations { val type: CirType } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirFunctionOrProperty.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirFunctionOrProperty.kt index 1b6c764d27e..1efcaa47e5a 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirFunctionOrProperty.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirFunctionOrProperty.kt @@ -11,11 +11,12 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities interface CirFunctionOrProperty : - CirAnnotatedDeclaration, - CirNamedDeclaration, - CirDeclarationWithTypeParameters, - CirDeclarationWithVisibility, - CirDeclarationWithModality, + CirDeclaration, + CirHasAnnotations, + CirHasName, + CirHasTypeParameters, + CirHasVisibility, + CirHasModality, CirMaybeCallableMemberOfClass { val isExternal: Boolean diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirModule.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirModule.kt index 2ed3f1596d4..8a04f1133c5 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirModule.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirModule.kt @@ -5,4 +5,4 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -interface CirModule : CirNamedDeclaration +interface CirModule : CirDeclaration, CirHasName diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPackage.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPackage.kt index 6be2f17f77c..54586c10a27 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPackage.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPackage.kt @@ -5,8 +5,4 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -import org.jetbrains.kotlin.name.FqName - -interface CirPackage : CirDeclaration { - val fqName: FqName -} +interface CirPackage : CirDeclaration, CirHasFqName diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertyAccessor.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertyAccessor.kt index f272ff46164..2134710f5ad 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertyAccessor.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertyAccessor.kt @@ -5,8 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -interface CirPropertyAccessor { - val annotations: List +interface CirPropertyAccessor : CirHasAnnotations { val isDefault: Boolean val isExternal: Boolean val isInline: Boolean diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertySetter.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertySetter.kt index 5ded1fc2e6a..8f28912ee73 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertySetter.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirPropertySetter.kt @@ -5,6 +5,6 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -interface CirPropertySetter : CirPropertyAccessor, CirDeclarationWithVisibility { +interface CirPropertySetter : CirDeclaration, CirPropertyAccessor, CirHasVisibility { val parameterAnnotations: List } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirType.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirType.kt index e4133295453..c6af9a94e3c 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirType.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirType.kt @@ -5,11 +5,9 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.commonizer.cir.CirSimpleTypeKind.CLASS import org.jetbrains.kotlin.descriptors.commonizer.cir.CirSimpleTypeKind.TYPE_ALIAS import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeFactory -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.types.AbbreviatedType import org.jetbrains.kotlin.types.Variance @@ -28,9 +26,8 @@ sealed class CirType { * * Note: Annotations at simple types are not preserved. After commonization all annotations assigned to types will be lost. */ -abstract class CirSimpleType : CirType(), CirHasVisibility { +abstract class CirSimpleType : CirType(), CirHasVisibility, CirHasFqName { abstract val kind: CirSimpleTypeKind - abstract val fqName: FqName abstract val arguments: List abstract val isMarkedNullable: Boolean abstract val isDefinitelyNotNullType: Boolean diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeParameter.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeParameter.kt index 5b7ea15197f..9242c40e91e 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeParameter.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeParameter.kt @@ -5,12 +5,9 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.Variance -interface CirTypeParameter { - val annotations: List - val name: Name +interface CirTypeParameter : CirHasAnnotations, CirHasName { val isReified: Boolean val variance: Variance val upperBounds: List diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirValueParameter.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirValueParameter.kt index 7c73eb536c5..7c410874d65 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirValueParameter.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirValueParameter.kt @@ -5,11 +5,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir -import org.jetbrains.kotlin.name.Name - -interface CirValueParameter { - val annotations: List - val name: Name +interface CirValueParameter : CirHasAnnotations, CirHasName { val returnType: CirType val varargElementType: CirType? val declaresDefaultValue: Boolean