[FIR] Fix JavaClass.modality for annotation classes and enums

- `JavaClass.modality` should return the correct modality instead of
  requiring the caller to handle annotation classes and enums.
This commit is contained in:
Marco Pennekamp
2023-02-27 18:20:02 +01:00
committed by Space Team
parent 484e5afb59
commit 9cc6809ec6
2 changed files with 2 additions and 4 deletions
@@ -245,7 +245,7 @@ abstract class FirJavaFacade(
val visibility = javaClass.visibility
this@buildJavaClass.visibility = visibility
classKind = javaClass.classKind
modality = if (classKind == ClassKind.ANNOTATION_CLASS || classKind == ClassKind.ENUM_CLASS) Modality.FINAL else javaClass.modality
modality = javaClass.modality
this.isTopLevel = classId.outerClassId == null
isStatic = javaClass.isStatic
javaPackage = packageCache.getValue(classSymbol.classId.packageFqName)
@@ -8,9 +8,6 @@ package org.jetbrains.kotlin.fir.java
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
@@ -39,6 +36,7 @@ internal val JavaModifierListOwner.modality: Modality
internal val JavaClass.modality: Modality
get() = when {
isAnnotationType || isEnum -> Modality.FINAL
isSealed -> Modality.SEALED
isAbstract -> Modality.ABSTRACT
isFinal -> Modality.FINAL