KMP: Put "prohbit expect/actual different annotations" under the flag
^KT-61668 Fixed Review: https://jetbrains.team/p/kt/reviews/12062/timeline
This commit is contained in:
+9
-7
@@ -78,7 +78,7 @@ class ExpectedActualDeclarationChecker(
|
||||
declaration,
|
||||
descriptor,
|
||||
checkActualModifier,
|
||||
context.trace,
|
||||
context,
|
||||
moduleVisibilityFilter = { it in allDependsOnModules }
|
||||
)
|
||||
}
|
||||
@@ -294,9 +294,10 @@ class ExpectedActualDeclarationChecker(
|
||||
reportOn: KtNamedDeclaration,
|
||||
descriptor: MemberDescriptor,
|
||||
checkActualModifier: Boolean,
|
||||
trace: BindingTrace,
|
||||
context: DeclarationCheckerContext,
|
||||
moduleVisibilityFilter: ModuleFilter
|
||||
) {
|
||||
val trace = context.trace
|
||||
val compatibility = ExpectedActualResolver
|
||||
.findExpectedForActual(descriptor, moduleVisibilityFilter, shouldCheckAbsenceOfDefaultParamsInActual = true)
|
||||
?: return
|
||||
@@ -381,7 +382,7 @@ class ExpectedActualDeclarationChecker(
|
||||
val expectSingleCandidate = (compatibility[Compatible] ?: compatibility.values.singleOrNull())?.singleOrNull()
|
||||
if (expectSingleCandidate != null) {
|
||||
checkIfExpectHasDefaultArgumentsAndActualizedWithTypealias(expectSingleCandidate, reportOn, trace)
|
||||
checkAnnotationsMatch(expectSingleCandidate, descriptor, reportOn, trace)
|
||||
checkAnnotationsMatch(expectSingleCandidate, descriptor, reportOn, context)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -488,12 +489,13 @@ class ExpectedActualDeclarationChecker(
|
||||
expectDescriptor: MemberDescriptor,
|
||||
actualDescriptor: MemberDescriptor,
|
||||
reportOn: KtNamedDeclaration,
|
||||
trace: BindingTrace
|
||||
context: DeclarationCheckerContext
|
||||
) {
|
||||
val context = ClassicExpectActualMatchingContext(actualDescriptor.module)
|
||||
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.MultiplatformRestrictions)) return
|
||||
val matchingContext = ClassicExpectActualMatchingContext(actualDescriptor.module)
|
||||
val incompatibility =
|
||||
AbstractExpectActualAnnotationMatchChecker.areAnnotationsCompatible(expectDescriptor, actualDescriptor, context) ?: return
|
||||
trace.report(
|
||||
AbstractExpectActualAnnotationMatchChecker.areAnnotationsCompatible(expectDescriptor, actualDescriptor, matchingContext) ?: return
|
||||
context.trace.report(
|
||||
Errors.ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT.on(
|
||||
reportOn,
|
||||
incompatibility.expectSymbol as DeclarationDescriptor,
|
||||
|
||||
Reference in New Issue
Block a user