Don't report "cannot infer visibility" on property accessors
If the diagnostic is already reported on the corresponding property, no need to report it again for accessors
This commit is contained in:
+1
-8
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.descriptors.impl;
|
||||
|
||||
import kotlin.Function0;
|
||||
import kotlin.Function1;
|
||||
import kotlin.Unit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
@@ -225,13 +224,7 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void addToScope(@NotNull CallableMemberDescriptor fakeOverride) {
|
||||
OverridingUtil.resolveUnknownVisibilityForMember(fakeOverride, new Function1<CallableMemberDescriptor, Unit>() {
|
||||
@Override
|
||||
public Unit invoke(@NotNull CallableMemberDescriptor descriptor) {
|
||||
// Do nothing
|
||||
return Unit.VALUE;
|
||||
}
|
||||
});
|
||||
OverridingUtil.resolveUnknownVisibilityForMember(fakeOverride, null);
|
||||
result.add((D) fakeOverride);
|
||||
}
|
||||
|
||||
|
||||
@@ -367,7 +367,7 @@ public class OverridingUtil {
|
||||
|
||||
public static void resolveUnknownVisibilityForMember(
|
||||
@NotNull CallableMemberDescriptor memberDescriptor,
|
||||
@NotNull Function1<CallableMemberDescriptor, Unit> cannotInferVisibility
|
||||
@Nullable Function1<CallableMemberDescriptor, Unit> cannotInferVisibility
|
||||
) {
|
||||
for (CallableMemberDescriptor descriptor : memberDescriptor.getOverriddenDescriptors()) {
|
||||
if (descriptor.getVisibility() == Visibilities.INHERITED) {
|
||||
@@ -379,11 +379,13 @@ public class OverridingUtil {
|
||||
return;
|
||||
}
|
||||
|
||||
Visibility visibilityToInherit = computeVisibilityToInherit(memberDescriptor, cannotInferVisibility);
|
||||
Visibility maxVisibility = computeVisibilityToInherit(memberDescriptor, cannotInferVisibility);
|
||||
Visibility visibilityToInherit = maxVisibility == null ? Visibilities.PUBLIC : maxVisibility;
|
||||
if (memberDescriptor instanceof PropertyDescriptorImpl) {
|
||||
((PropertyDescriptorImpl) memberDescriptor).setVisibility(visibilityToInherit);
|
||||
for (PropertyAccessorDescriptor accessor : ((PropertyDescriptor) memberDescriptor).getAccessors()) {
|
||||
resolveUnknownVisibilityForMember(accessor, cannotInferVisibility);
|
||||
// If we couldn't infer visibility for property, the diagnostic is already reported, no need to report it again on accessors
|
||||
resolveUnknownVisibilityForMember(accessor, maxVisibility == null ? null : cannotInferVisibility);
|
||||
}
|
||||
}
|
||||
else if (memberDescriptor instanceof FunctionDescriptorImpl) {
|
||||
@@ -395,15 +397,17 @@ public class OverridingUtil {
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Nullable
|
||||
private static Visibility computeVisibilityToInherit(
|
||||
@NotNull CallableMemberDescriptor memberDescriptor,
|
||||
@NotNull Function1<CallableMemberDescriptor, Unit> cannotInferVisibility
|
||||
@Nullable Function1<CallableMemberDescriptor, Unit> cannotInferVisibility
|
||||
) {
|
||||
Visibility maxVisibility = findMaxVisibility(memberDescriptor.getOverriddenDescriptors());
|
||||
if (maxVisibility == null) {
|
||||
cannotInferVisibility.invoke(memberDescriptor);
|
||||
return Visibilities.PUBLIC;
|
||||
if (cannotInferVisibility != null) {
|
||||
cannotInferVisibility.invoke(memberDescriptor);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
if (memberDescriptor.getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||
return maxVisibility;
|
||||
|
||||
Reference in New Issue
Block a user