Get rid of poorly named NotInferredVisibilitySink
Also make TraceBasedErrorReporter invoke OverrideResolver to report "cannot infer visibility", because there's some additional logic there
This commit is contained in:
+5
-2
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||
|
||||
import kotlin.Function1;
|
||||
import kotlin.Unit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
@@ -56,10 +58,11 @@ public final class DescriptorResolverUtils {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void addToScope(@NotNull CallableMemberDescriptor fakeOverride) {
|
||||
OverridingUtil.resolveUnknownVisibilityForMember(fakeOverride, new OverridingUtil.NotInferredVisibilitySink() {
|
||||
OverridingUtil.resolveUnknownVisibilityForMember(fakeOverride, new Function1<CallableMemberDescriptor, Unit>() {
|
||||
@Override
|
||||
public void cannotInferVisibility(@NotNull CallableMemberDescriptor descriptor) {
|
||||
public Unit invoke(@NotNull CallableMemberDescriptor descriptor) {
|
||||
errorReporter.reportCannotInferVisibility(descriptor);
|
||||
return Unit.VALUE;
|
||||
}
|
||||
});
|
||||
result.add((D) fakeOverride);
|
||||
|
||||
+8
-4
@@ -18,10 +18,10 @@ 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.*;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorFactory;
|
||||
import org.jetbrains.jet.lang.resolve.OverridingUtil;
|
||||
@@ -37,7 +37,10 @@ import org.jetbrains.jet.storage.NotNullLazyValue;
|
||||
import org.jetbrains.jet.storage.StorageManager;
|
||||
import org.jetbrains.jet.utils.Printer;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase {
|
||||
private final ClassKind kind;
|
||||
@@ -222,10 +225,11 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void addToScope(@NotNull CallableMemberDescriptor fakeOverride) {
|
||||
OverridingUtil.resolveUnknownVisibilityForMember(fakeOverride, new OverridingUtil.NotInferredVisibilitySink() {
|
||||
OverridingUtil.resolveUnknownVisibilityForMember(fakeOverride, new Function1<CallableMemberDescriptor, Unit>() {
|
||||
@Override
|
||||
public void cannotInferVisibility(@NotNull CallableMemberDescriptor descriptor) {
|
||||
public Unit invoke(@NotNull CallableMemberDescriptor descriptor) {
|
||||
// Do nothing
|
||||
return Unit.VALUE;
|
||||
}
|
||||
});
|
||||
result.add((D) fakeOverride);
|
||||
|
||||
@@ -19,6 +19,8 @@ package org.jetbrains.jet.lang.resolve;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import kotlin.Function1;
|
||||
import kotlin.Unit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
@@ -365,11 +367,11 @@ public class OverridingUtil {
|
||||
|
||||
public static void resolveUnknownVisibilityForMember(
|
||||
@NotNull CallableMemberDescriptor memberDescriptor,
|
||||
@NotNull NotInferredVisibilitySink sink
|
||||
@NotNull Function1<CallableMemberDescriptor, Unit> cannotInferVisibility
|
||||
) {
|
||||
for (CallableMemberDescriptor descriptor : memberDescriptor.getOverriddenDescriptors()) {
|
||||
if (descriptor.getVisibility() == Visibilities.INHERITED) {
|
||||
resolveUnknownVisibilityForMember(descriptor, sink);
|
||||
resolveUnknownVisibilityForMember(descriptor, cannotInferVisibility);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,11 +379,11 @@ public class OverridingUtil {
|
||||
return;
|
||||
}
|
||||
|
||||
Visibility visibilityToInherit = computeVisibilityToInherit(memberDescriptor, sink);
|
||||
Visibility visibilityToInherit = computeVisibilityToInherit(memberDescriptor, cannotInferVisibility);
|
||||
if (memberDescriptor instanceof PropertyDescriptorImpl) {
|
||||
((PropertyDescriptorImpl) memberDescriptor).setVisibility(visibilityToInherit);
|
||||
for (PropertyAccessorDescriptor accessor : ((PropertyDescriptor) memberDescriptor).getAccessors()) {
|
||||
resolveUnknownVisibilityForMember(accessor, sink);
|
||||
resolveUnknownVisibilityForMember(accessor, cannotInferVisibility);
|
||||
}
|
||||
}
|
||||
else if (memberDescriptor instanceof FunctionDescriptorImpl) {
|
||||
@@ -396,11 +398,11 @@ public class OverridingUtil {
|
||||
@NotNull
|
||||
private static Visibility computeVisibilityToInherit(
|
||||
@NotNull CallableMemberDescriptor memberDescriptor,
|
||||
@NotNull NotInferredVisibilitySink sink
|
||||
@NotNull Function1<CallableMemberDescriptor, Unit> cannotInferVisibility
|
||||
) {
|
||||
Visibility maxVisibility = findMaxVisibility(memberDescriptor.getOverriddenDescriptors());
|
||||
if (maxVisibility == null) {
|
||||
sink.cannotInferVisibility(memberDescriptor);
|
||||
cannotInferVisibility.invoke(memberDescriptor);
|
||||
return Visibilities.PUBLIC;
|
||||
}
|
||||
if (memberDescriptor.getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||
@@ -450,10 +452,6 @@ public class OverridingUtil {
|
||||
void conflict(@NotNull CallableMemberDescriptor fromSuper, @NotNull CallableMemberDescriptor fromCurrent);
|
||||
}
|
||||
|
||||
public interface NotInferredVisibilitySink {
|
||||
void cannotInferVisibility(@NotNull CallableMemberDescriptor descriptor);
|
||||
}
|
||||
|
||||
public static class OverrideCompatibilityInfo {
|
||||
|
||||
public enum Result {
|
||||
|
||||
Reference in New Issue
Block a user