[FIR] Report warnings for inconsistent visibilities of accessors
K1 didn't report diagnostics for accessors of intersection overrides, so this change prevents a BC. ^KT-66046 Fixed
This commit is contained in:
committed by
Space Team
parent
7ecbaf7d1e
commit
d3dfbec01a
+25
@@ -2718,6 +2718,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.CANNOT_WEAKEN_ACCESS_PRIVILEGE_WARNING) { firDiagnostic ->
|
||||
CannotWeakenAccessPrivilegeWarningImpl(
|
||||
firDiagnostic.a,
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b),
|
||||
firDiagnostic.c,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.CANNOT_CHANGE_ACCESS_PRIVILEGE) { firDiagnostic ->
|
||||
CannotChangeAccessPrivilegeImpl(
|
||||
firDiagnostic.a,
|
||||
@@ -2727,6 +2736,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.CANNOT_CHANGE_ACCESS_PRIVILEGE_WARNING) { firDiagnostic ->
|
||||
CannotChangeAccessPrivilegeWarningImpl(
|
||||
firDiagnostic.a,
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.b),
|
||||
firDiagnostic.c,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.CANNOT_INFER_VISIBILITY) { firDiagnostic ->
|
||||
CannotInferVisibilityImpl(
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a),
|
||||
@@ -2734,6 +2752,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.CANNOT_INFER_VISIBILITY_WARNING) { firDiagnostic ->
|
||||
CannotInferVisibilityWarningImpl(
|
||||
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a),
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES) { firDiagnostic ->
|
||||
MultipleDefaultsInheritedFromSupertypesImpl(
|
||||
firDiagnostic.a,
|
||||
|
||||
+19
@@ -1925,6 +1925,13 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
val containingClassName: Name
|
||||
}
|
||||
|
||||
interface CannotWeakenAccessPrivilegeWarning : KtFirDiagnostic<KtModifierListOwner> {
|
||||
override val diagnosticClass get() = CannotWeakenAccessPrivilegeWarning::class
|
||||
val overridingVisibility: Visibility
|
||||
val overridden: KtCallableSymbol
|
||||
val containingClassName: Name
|
||||
}
|
||||
|
||||
interface CannotChangeAccessPrivilege : KtFirDiagnostic<KtModifierListOwner> {
|
||||
override val diagnosticClass get() = CannotChangeAccessPrivilege::class
|
||||
val overridingVisibility: Visibility
|
||||
@@ -1932,11 +1939,23 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
val containingClassName: Name
|
||||
}
|
||||
|
||||
interface CannotChangeAccessPrivilegeWarning : KtFirDiagnostic<KtModifierListOwner> {
|
||||
override val diagnosticClass get() = CannotChangeAccessPrivilegeWarning::class
|
||||
val overridingVisibility: Visibility
|
||||
val overridden: KtCallableSymbol
|
||||
val containingClassName: Name
|
||||
}
|
||||
|
||||
interface CannotInferVisibility : KtFirDiagnostic<KtDeclaration> {
|
||||
override val diagnosticClass get() = CannotInferVisibility::class
|
||||
val callable: KtCallableSymbol
|
||||
}
|
||||
|
||||
interface CannotInferVisibilityWarning : KtFirDiagnostic<KtDeclaration> {
|
||||
override val diagnosticClass get() = CannotInferVisibilityWarning::class
|
||||
val callable: KtCallableSymbol
|
||||
}
|
||||
|
||||
interface MultipleDefaultsInheritedFromSupertypes : KtFirDiagnostic<KtElement> {
|
||||
override val diagnosticClass get() = MultipleDefaultsInheritedFromSupertypes::class
|
||||
val name: Name
|
||||
|
||||
+22
@@ -2313,6 +2313,14 @@ internal class CannotWeakenAccessPrivilegeImpl(
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtModifierListOwner>(firDiagnostic, token), KtFirDiagnostic.CannotWeakenAccessPrivilege
|
||||
|
||||
internal class CannotWeakenAccessPrivilegeWarningImpl(
|
||||
override val overridingVisibility: Visibility,
|
||||
override val overridden: KtCallableSymbol,
|
||||
override val containingClassName: Name,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtModifierListOwner>(firDiagnostic, token), KtFirDiagnostic.CannotWeakenAccessPrivilegeWarning
|
||||
|
||||
internal class CannotChangeAccessPrivilegeImpl(
|
||||
override val overridingVisibility: Visibility,
|
||||
override val overridden: KtCallableSymbol,
|
||||
@@ -2321,12 +2329,26 @@ internal class CannotChangeAccessPrivilegeImpl(
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtModifierListOwner>(firDiagnostic, token), KtFirDiagnostic.CannotChangeAccessPrivilege
|
||||
|
||||
internal class CannotChangeAccessPrivilegeWarningImpl(
|
||||
override val overridingVisibility: Visibility,
|
||||
override val overridden: KtCallableSymbol,
|
||||
override val containingClassName: Name,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtModifierListOwner>(firDiagnostic, token), KtFirDiagnostic.CannotChangeAccessPrivilegeWarning
|
||||
|
||||
internal class CannotInferVisibilityImpl(
|
||||
override val callable: KtCallableSymbol,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.CannotInferVisibility
|
||||
|
||||
internal class CannotInferVisibilityWarningImpl(
|
||||
override val callable: KtCallableSymbol,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.CannotInferVisibilityWarning
|
||||
|
||||
internal class MultipleDefaultsInheritedFromSupertypesImpl(
|
||||
override val name: Name,
|
||||
override val valueParameter: KtSymbol,
|
||||
|
||||
+6
@@ -657,6 +657,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
||||
runTest("compiler/testData/diagnostics/tests/intersectedVisibilitiesForNonAbstractPropertyAccessors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("intersectedVisibilitiesPropertyAccessorsAdditionalWarnigns.kt")
|
||||
public void testIntersectedVisibilitiesPropertyAccessorsAdditionalWarnigns() {
|
||||
runTest("compiler/testData/diagnostics/tests/intersectedVisibilitiesPropertyAccessorsAdditionalWarnigns.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("intersectionWithMultipleDefaultsInJava.kt")
|
||||
public void testIntersectionWithMultipleDefaultsInJava() {
|
||||
|
||||
+6
@@ -657,6 +657,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
||||
runTest("compiler/testData/diagnostics/tests/intersectedVisibilitiesForNonAbstractPropertyAccessors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("intersectedVisibilitiesPropertyAccessorsAdditionalWarnigns.kt")
|
||||
public void testIntersectedVisibilitiesPropertyAccessorsAdditionalWarnigns() {
|
||||
runTest("compiler/testData/diagnostics/tests/intersectedVisibilitiesPropertyAccessorsAdditionalWarnigns.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("intersectionWithMultipleDefaultsInJava.kt")
|
||||
public void testIntersectionWithMultipleDefaultsInJava() {
|
||||
|
||||
Reference in New Issue
Block a user