diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java index 73ee778437e..4932e020ec2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java @@ -277,18 +277,6 @@ public class OverrideResolver { } } - @Override - public void cannotOverrideInvisibleMember(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor invisibleOverridden) { - assert overriding.getKind() == DELEGATION : "Delegate expected, got " + overriding + " of kind " + overriding.getKind(); - assert overriding.getKind() != DELEGATION : "Delegated member can't override an invisible member; " + invisibleOverridden; - } - - @Override - public void nothingToOverride(@NotNull CallableMemberDescriptor overriding) { - assert overriding.getKind() == DELEGATION : "Delegate expected, got " + overriding + " of kind " + overriding.getKind(); - assert overriding.getKind() != DELEGATION : "Delegated member can't override nothing; " + overriding; - } - void doReportErrors() { if (!classCanHaveAbstractMembers(classDescriptor)) { if (!abstractInBaseClassNoImpl.isEmpty()) { @@ -576,8 +564,11 @@ public class OverrideResolver { void returnTypeMismatchOnOverride(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor overridden); void propertyTypeMismatchOnOverride(@NotNull PropertyDescriptor overriding, @NotNull PropertyDescriptor overridden); void varOverriddenByVal(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor overridden); - void cannotOverrideInvisibleMember(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor invisibleOverridden); + } + + private interface CheckOverrideReportForDeclaredMemberStrategy extends CheckOverrideReportStrategy { void nothingToOverride(@NotNull CallableMemberDescriptor overriding); + void cannotOverrideInvisibleMember(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor invisibleOverridden); } private void checkOverrideForMember(@NotNull final CallableMemberDescriptor declared) { @@ -602,7 +593,7 @@ public class OverrideResolver { Collection overriddenDescriptors = declared.getOverriddenDescriptors(); if (hasOverrideNode) { - checkOverridesForMemberMarkedOverride(declared, true, new CheckOverrideReportStrategy() { + checkOverridesForMemberMarkedOverride(declared, new CheckOverrideReportForDeclaredMemberStrategy() { private boolean finalOverriddenError = false; private boolean typeMismatchError = false; private boolean kindMismatchError = false; @@ -688,14 +679,13 @@ public class OverrideResolver { private static void checkOverridesForMemberMarkedOverride( @NotNull CallableMemberDescriptor declared, - boolean checkIfOverridesNothing, - @NotNull CheckOverrideReportStrategy reportError + @NotNull CheckOverrideReportForDeclaredMemberStrategy reportError ) { Collection overriddenDescriptors = declared.getOverriddenDescriptors(); checkOverridesForMember(declared, overriddenDescriptors, reportError); - if (checkIfOverridesNothing && overriddenDescriptors.isEmpty()) { + if (overriddenDescriptors.isEmpty()) { DeclarationDescriptor containingDeclaration = declared.getContainingDeclaration(); assert containingDeclaration instanceof ClassDescriptor : "Overrides may only be resolved in a class, but " + declared + " comes from " + containingDeclaration; ClassDescriptor declaringClass = (ClassDescriptor) containingDeclaration; @@ -799,7 +789,7 @@ public class OverrideResolver { private void checkOverrideForComponentFunction(@NotNull final CallableMemberDescriptor componentFunction) { final PsiElement dataModifier = findDataModifierForDataClass(componentFunction.getContainingDeclaration()); - checkOverridesForMemberMarkedOverride(componentFunction, false, new CheckOverrideReportStrategy() { + checkOverridesForMember(componentFunction, componentFunction.getOverriddenDescriptors(), new CheckOverrideReportStrategy() { private boolean overrideConflict = false; @Override @@ -827,16 +817,6 @@ public class OverrideResolver { public void varOverriddenByVal(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor overridden) { throw new IllegalStateException("Component functions are not properties"); } - - @Override - public void cannotOverrideInvisibleMember(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor invisibleOverridden) { - throw new IllegalStateException("CANNOT_OVERRIDE_INVISIBLE_MEMBER should be reported on the corresponding property"); - } - - @Override - public void nothingToOverride(@NotNull CallableMemberDescriptor overriding) { - throw new IllegalStateException("Component functions are OK to override nothing"); - } }); }