Skip to content

Commit 356fa91

Browse files
KvanTTTSpace Team
authored andcommitted
[FIR] Introduce NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS
^KT-20677 Fixed
1 parent d2d90d2 commit 356fa91

File tree

16 files changed

+45
-11
lines changed

16 files changed

+45
-11
lines changed

analysis/analysis-api-fir/gen/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KaFirDataClassConverters.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,6 +1457,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KaDiagnosticConverterBuilder.buildConvert
14571457
token,
14581458
)
14591459
}
1460+
add(FirErrors.NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS) { firDiagnostic ->
1461+
NoImplicitDefaultConstructorOnExpectAnnotationClassImpl(
1462+
firDiagnostic as KtPsiDiagnostic,
1463+
token,
1464+
)
1465+
}
14601466
add(FirJsErrors.JS_MODULE_PROHIBITED_ON_VAR) { firDiagnostic ->
14611467
JsModuleProhibitedOnVarImpl(
14621468
firDiagnostic as KtPsiDiagnostic,

analysis/analysis-api-fir/gen/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KaFirDiagnostics.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,10 @@ sealed interface KaFirDiagnostic<PSI : PsiElement> : KaDiagnosticWithPsi<PSI> {
10431043
override val diagnosticClass get() = DslMarkerPropagatesToMany::class
10441044
}
10451045

1046+
interface NoImplicitDefaultConstructorOnExpectAnnotationClass : KaFirDiagnostic<KtAnnotationEntry> {
1047+
override val diagnosticClass get() = NoImplicitDefaultConstructorOnExpectAnnotationClass::class
1048+
}
1049+
10461050
interface JsModuleProhibitedOnVar : KaFirDiagnostic<KtElement> {
10471051
override val diagnosticClass get() = JsModuleProhibitedOnVar::class
10481052
}

analysis/analysis-api-fir/gen/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KaFirDiagnosticsImpl.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,6 +1253,11 @@ internal class DslMarkerPropagatesToManyImpl(
12531253
token: KaLifetimeToken,
12541254
) : KaAbstractFirDiagnostic<KtAnnotationEntry>(firDiagnostic, token), KaFirDiagnostic.DslMarkerPropagatesToMany
12551255

1256+
internal class NoImplicitDefaultConstructorOnExpectAnnotationClassImpl(
1257+
firDiagnostic: KtPsiDiagnostic,
1258+
token: KaLifetimeToken,
1259+
) : KaAbstractFirDiagnostic<KtAnnotationEntry>(firDiagnostic, token), KaFirDiagnostic.NoImplicitDefaultConstructorOnExpectAnnotationClass
1260+
12561261
internal class JsModuleProhibitedOnVarImpl(
12571262
firDiagnostic: KtPsiDiagnostic,
12581263
token: KaLifetimeToken,

compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,8 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
485485
val IGNORABILITY_ANNOTATIONS_WITH_CHECKER_DISABLED by error<KtAnnotationEntry>()
486486

487487
val DSL_MARKER_PROPAGATES_TO_MANY by warning<KtAnnotationEntry>()
488+
489+
val NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS by error<KtAnnotationEntry>()
488490
}
489491

490492
val OPT_IN by object : DiagnosticGroup("OptIn") {

compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ object FirErrors : KtDiagnosticsContainer() {
364364
val ANNOTATIONS_ON_BLOCK_LEVEL_EXPRESSION_ON_THE_SAME_LINE: KtDiagnosticFactory0 = KtDiagnosticFactory0("ANNOTATIONS_ON_BLOCK_LEVEL_EXPRESSION_ON_THE_SAME_LINE", WARNING, SourceElementPositioningStrategies.DEFAULT, PsiElement::class, getRendererFactory())
365365
val IGNORABILITY_ANNOTATIONS_WITH_CHECKER_DISABLED: KtDiagnosticFactory0 = KtDiagnosticFactory0("IGNORABILITY_ANNOTATIONS_WITH_CHECKER_DISABLED", ERROR, SourceElementPositioningStrategies.DEFAULT, KtAnnotationEntry::class, getRendererFactory())
366366
val DSL_MARKER_PROPAGATES_TO_MANY: KtDiagnosticFactory0 = KtDiagnosticFactory0("DSL_MARKER_PROPAGATES_TO_MANY", WARNING, SourceElementPositioningStrategies.DEFAULT, KtAnnotationEntry::class, getRendererFactory())
367+
val NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS: KtDiagnosticFactory0 = KtDiagnosticFactory0("NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS", ERROR, SourceElementPositioningStrategies.DEFAULT, KtAnnotationEntry::class, getRendererFactory())
367368

368369
// OptIn
369370
val OPT_IN_USAGE: KtDiagnosticFactory2<ClassId, String> = KtDiagnosticFactory2("OPT_IN_USAGE", WARNING, SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED, PsiElement::class, getRendererFactory())

compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set<String> = setOf(
181181
"NON_INTERNAL_PUBLISHED_API",
182182
"NON_SOURCE_ANNOTATION_ON_INLINED_LAMBDA_EXPRESSION",
183183
"IGNORABILITY_ANNOTATIONS_WITH_CHECKER_DISABLED",
184+
"NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS",
184185
"JS_MODULE_PROHIBITED_ON_VAR",
185186
"JS_MODULE_PROHIBITED_ON_NON_NATIVE",
186187
"NESTED_JS_MODULE_PROHIBITED",

compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_DEPENDENC
773773
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_DEPENDENCY_IN_INFERRED_TYPE_ANNOTATION
774774
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NAME_BASED_DESTRUCTURING_UNDERSCORE_WITHOUT_RENAMING
775775
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NON_FINAL_PROPERTY_WITH_EXPLICIT_BACKING_FIELD
776+
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS
776777
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.OVERRIDING_IGNORABLE_WITH_MUST_USE
777778
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PROPERTY_WITH_EXPLICIT_FIELD_AND_ACCESSORS
778779
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.TYPE_PARAMETER_ON_LHS_OF_DOT
@@ -1424,6 +1425,10 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
14241425
Move the '@DslMarker' annotation to the receiver or context parameter whose scope must be limited.
14251426
""".trimIndent(),
14261427
)
1428+
map.put(
1429+
NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS,
1430+
"""No implicit default constructor on expect annotation class."""
1431+
)
14271432

14281433
// OptIn
14291434
map.put(OPT_IN_USAGE, "{1}", CLASS_ID, STRING)

compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ private fun ConeDiagnostic.toKtDiagnostic(
9393
is ConeFunctionCallExpectedError -> FirErrors.FUNCTION_CALL_EXPECTED.createOn(source, this.name.asString(), this.hasValueParameters, session)
9494
is ConeFunctionExpectedError -> FirErrors.FUNCTION_EXPECTED.createOn(source, this.expression, this.type, session)
9595
is ConeNoConstructorError -> FirErrors.NO_CONSTRUCTOR.createOn(callOrAssignmentSource ?: source, session)
96+
is ConeNoImplicitDefaultConstructorOnExpectAnnotationClass -> FirErrors.NO_IMPLICIT_DEFAULT_CONSTRUCTOR_ON_EXPECT_ANNOTATION_CLASS.createOn(callOrAssignmentSource ?: source, session)
9697
is ConeResolutionToClassifierError -> when (this.candidateSymbol.classKind) {
9798
ClassKind.INTERFACE -> FirErrors.INTERFACE_AS_FUNCTION.createOn(source, this.candidateSymbol, session)
9899
ClassKind.CLASS -> when {

compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirCallResolver.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind
1010
import org.jetbrains.kotlin.fir.FirElement
1111
import org.jetbrains.kotlin.fir.copyAsImplicitInvokeCall
1212
import org.jetbrains.kotlin.fir.declarations.*
13+
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
1314
import org.jetbrains.kotlin.fir.declarations.utils.isInner
1415
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
1516
import org.jetbrains.kotlin.fir.declarations.utils.isReferredViaField
@@ -650,7 +651,11 @@ class FirCallResolver(
650651
explicitReceiver = null
651652
)
652653
} else {
653-
buildReferenceWithErrorCandidate(callInfo, ConeNoConstructorError, reference.source)
654+
buildReferenceWithErrorCandidate(
655+
callInfo,
656+
if (annotationClassSymbol.isExpect) ConeNoImplicitDefaultConstructorOnExpectAnnotationClass else ConeNoConstructorError,
657+
reference.source
658+
)
654659
}
655660
} else {
656661
annotation.replaceArgumentList(annotation.argumentList.transform(transformer, ResolutionMode.ContextDependent))

compiler/fir/tree/src/org/jetbrains/kotlin/fir/diagnostics/ConeSimpleDiagnostic.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ object ConeNoConstructorError : ConeDiagnostic {
9292
override val reason: String get() = "This type does not have a constructor"
9393
}
9494

95+
object ConeNoImplicitDefaultConstructorOnExpectAnnotationClass : ConeDiagnostic {
96+
override val reason: String get() = "No implicit default constructor on expect annotation class"
97+
}
98+
9599
object ConeContractShouldBeFirstStatement : ConeDiagnostic {
96100
override val reason: String get() = "Contract should be the first statement."
97101
}

0 commit comments

Comments
 (0)