[FIR] Expect classes can never have in implicit constructor. enums included
Motivation: If I don't fix it then I will get a false positive ACTUAL_MISSING in DiagnosticCompilerTestFE10TestdataTestGenerated.Tests.Multiplatform.Enum.testSimpleEnum after I fix KT-59887 The commit also fixes false positive diagnostic in annotationArgTypeAliasWithArray.fir.kt test Review: https://jetbrains.team/p/kt/reviews/13244
This commit is contained in:
+3
-7
@@ -12,10 +12,7 @@ import org.jetbrains.kotlin.*
|
||||
import org.jetbrains.kotlin.ElementTypeUtils.isExpression
|
||||
import org.jetbrains.kotlin.KtNodeTypes.*
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.*
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
@@ -893,11 +890,10 @@ class LightTreeRawFirDeclarationBuilder(
|
||||
isImplicitlyActual: Boolean = false,
|
||||
isKotlinAny: Boolean = false,
|
||||
): PrimaryConstructor? {
|
||||
fun ClassKind.isEnumRelated(): Boolean = this == ClassKind.ENUM_CLASS || this == ClassKind.ENUM_ENTRY
|
||||
val shouldGenerateImplicitConstructor =
|
||||
(classWrapper.isEnumEntry() || !classWrapper.hasSecondaryConstructor) &&
|
||||
!classWrapper.isInterface() &&
|
||||
(!containingClassIsExpectClass || classWrapper.classBuilder.classKind.isEnumRelated())
|
||||
!classWrapper.isInterface() &&
|
||||
(!containingClassIsExpectClass || classWrapper.classBuilder.classKind == ClassKind.ENUM_ENTRY)
|
||||
val isErrorConstructor = primaryConstructor == null && !shouldGenerateImplicitConstructor
|
||||
if (isErrorConstructor && classWrapper.delegatedSuperCalls.isEmpty()) {
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user