[FE 1.0] 1/2 Don't report a warning when new supertypes are added to open expect actualization
^KT-62655 Fixed
This commit is contained in:
@@ -863,10 +863,6 @@ public interface Errors {
|
||||
DiagnosticFactory1<KtCallableDeclaration, K1ExpectActualMemberDiff<CallableMemberDescriptor, ClassDescriptor>>
|
||||
TYPE_PARAMETER_NAMES_CHANGED_IN_NON_FINAL_EXPECT_CLASSIFIER_ACTUALIZATION_WARNING = DiagnosticFactory1.create(WARNING, TYPE_PARAMETERS_OR_DECLARATION_SIGNATURE);
|
||||
|
||||
DiagnosticFactory3<KtClassLikeDeclaration, ClassifierDescriptorWithTypeParameters, List<Name>, ClassDescriptor>
|
||||
ACTUAL_CLASSIFIER_MUST_HAVE_THE_SAME_SUPERTYPES_AS_NON_FINAL_EXPECT_CLASSIFIER_WARNING =
|
||||
DiagnosticFactory3.create(WARNING, DECLARATION_NAME);
|
||||
|
||||
DiagnosticFactory0<KtClassLikeDeclaration> EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING = DiagnosticFactory0.create(WARNING, EXPECT_ACTUAL_MODIFIER);
|
||||
|
||||
DiagnosticFactory0<PsiElement> OPTIONAL_EXPECTATION_NOT_ON_EXPECTED = DiagnosticFactory0.create(ERROR);
|
||||
|
||||
-10
@@ -437,16 +437,6 @@ public class DefaultErrorMessages {
|
||||
"{0}. This warning will become an error in future releases. Also see https://youtrack.jetbrains.com/issue/KT-22841 for more details",
|
||||
ExpectActualScopeDiffRenderer.INSTANCE);
|
||||
|
||||
MAP.put(ACTUAL_CLASSIFIER_MUST_HAVE_THE_SAME_SUPERTYPES_AS_NON_FINAL_EXPECT_CLASSIFIER_WARNING,
|
||||
"{0}: actual class and its non-final expect class must declare exactly the same supertypes. " +
|
||||
"Actual class declares the following supertypes that are not presented in expect class: {1}.\n" +
|
||||
"This error happens because the expect class ''{2}'' is non-final. " +
|
||||
"This warning will become an error in future releases.\n" +
|
||||
"Also see https://youtrack.jetbrains.com/issue/KT-22841 for more details",
|
||||
CAPITALIZED_DECLARATION_NAME_WITH_KIND_AND_PLATFORM,
|
||||
new ListRenderer<>(TO_STRING, (elem) -> "'" + elem + "'"),
|
||||
NAME);
|
||||
|
||||
MAP.put(EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING,
|
||||
"'expect'/'actual' classes (including interfaces, objects, annotations, enums, and 'actual' typealiases) are in Beta. " +
|
||||
"You can use -Xexpect-actual-classes flag to suppress this warning. " +
|
||||
|
||||
-23
@@ -34,33 +34,10 @@ object ActualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker :
|
||||
@Suppress("USELESS_CAST") // K2 warning suppression, TODO: KT-62472
|
||||
descriptor as ClassifierDescriptorWithTypeParameters
|
||||
|
||||
checkSupertypes(expect, actual, context, declaration, descriptor)
|
||||
checkExpectActualScopeDiff(expect, actual, context, declaration, descriptor)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkSupertypes(
|
||||
expect: ClassDescriptor,
|
||||
actual: ClassDescriptor,
|
||||
context: DeclarationCheckerContext,
|
||||
declaration: KtClassLikeDeclaration,
|
||||
descriptor: ClassifierDescriptorWithTypeParameters,
|
||||
) {
|
||||
val addedSupertypes = (actual.getSuperInterfaces() + listOfNotNull(actual.getSuperClassNotAny())).map(ClassDescriptor::fqNameSafe) -
|
||||
(expect.getSuperInterfaces() + listOfNotNull(expect.getSuperClassNotAny())).map(ClassDescriptor::fqNameSafe).toSet()
|
||||
|
||||
if (addedSupertypes.isNotEmpty()) {
|
||||
context.trace.report(
|
||||
Errors.ACTUAL_CLASSIFIER_MUST_HAVE_THE_SAME_SUPERTYPES_AS_NON_FINAL_EXPECT_CLASSIFIER_WARNING.on(
|
||||
declaration,
|
||||
descriptor,
|
||||
addedSupertypes.map(FqName::shortName),
|
||||
expect,
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkExpectActualScopeDiff(
|
||||
expect: ClassDescriptor,
|
||||
actual: ClassDescriptor,
|
||||
|
||||
Reference in New Issue
Block a user