Extract method + remove unused parameter
This commit is contained in:
@@ -112,7 +112,11 @@ public class OverrideResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<CallableMemberDescriptor> functionsFromSupertypes = getDescriptorsFromSupertypes(classDescriptor);
|
doGenerateOverridesInAClass(classDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doGenerateOverridesInAClass(final MutableClassDescriptor classDescriptor) {
|
||||||
|
List<CallableMemberDescriptor> functionsFromSupertypes = getCallableMembersFromSupertypes(classDescriptor);
|
||||||
|
|
||||||
MultiMap<Name, CallableMemberDescriptor> functionsFromSupertypesByName = groupDescriptorsByName(functionsFromSupertypes);
|
MultiMap<Name, CallableMemberDescriptor> functionsFromSupertypesByName = groupDescriptorsByName(functionsFromSupertypes);
|
||||||
|
|
||||||
@@ -122,11 +126,12 @@ public class OverrideResolver {
|
|||||||
functionNames.addAll(functionsFromSupertypesByName.keySet());
|
functionNames.addAll(functionsFromSupertypesByName.keySet());
|
||||||
functionNames.addAll(functionsFromCurrentByName.keySet());
|
functionNames.addAll(functionsFromCurrentByName.keySet());
|
||||||
|
|
||||||
Set<CallableMemberDescriptor> fakeOverrides = Sets.newHashSet();
|
|
||||||
for (Name functionName : functionNames) {
|
for (Name functionName : functionNames) {
|
||||||
generateOverridesInFunctionGroup(functionName, fakeOverrides,
|
Collection<CallableMemberDescriptor> fromSupertypes = functionsFromSupertypesByName.get(functionName);
|
||||||
functionsFromSupertypesByName.get(functionName),
|
Collection<CallableMemberDescriptor> fromCurrent = functionsFromCurrentByName.get(functionName);
|
||||||
functionsFromCurrentByName.get(functionName),
|
generateOverridesInFunctionGroup(functionName,
|
||||||
|
fromSupertypes,
|
||||||
|
fromCurrent,
|
||||||
classDescriptor,
|
classDescriptor,
|
||||||
new DescriptorSink() {
|
new DescriptorSink() {
|
||||||
@Override
|
@Override
|
||||||
@@ -144,7 +149,8 @@ public class OverrideResolver {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void conflict(@NotNull CallableMemberDescriptor fromSuper, @NotNull CallableMemberDescriptor fromCurrent) {
|
public void conflict(@NotNull CallableMemberDescriptor fromSuper, @NotNull CallableMemberDescriptor fromCurrent) {
|
||||||
JetDeclaration jetProperty = (JetDeclaration) BindingContextUtils.descriptorToDeclaration(trace.getBindingContext(), fromCurrent);
|
JetDeclaration jetProperty = (JetDeclaration) BindingContextUtils
|
||||||
|
.descriptorToDeclaration(trace.getBindingContext(), fromCurrent);
|
||||||
trace.report(Errors.CONFLICTING_OVERLOADS.on(jetProperty, fromCurrent, fromCurrent.getContainingDeclaration().getName().getName()));
|
trace.report(Errors.CONFLICTING_OVERLOADS.on(jetProperty, fromCurrent, fromCurrent.getContainingDeclaration().getName().getName()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -160,7 +166,7 @@ public class OverrideResolver {
|
|||||||
resolveUnknownVisibilityForMember(declaration, memberDescriptor);
|
resolveUnknownVisibilityForMember(declaration, memberDescriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface DescriptorSink {
|
public interface DescriptorSink {
|
||||||
void addToScope(@NotNull CallableMemberDescriptor fakeOverride);
|
void addToScope(@NotNull CallableMemberDescriptor fakeOverride);
|
||||||
|
|
||||||
@@ -169,7 +175,6 @@ public class OverrideResolver {
|
|||||||
|
|
||||||
public static void generateOverridesInFunctionGroup(
|
public static void generateOverridesInFunctionGroup(
|
||||||
@NotNull Name name,
|
@NotNull Name name,
|
||||||
@Nullable Set<CallableMemberDescriptor> fakeOverrides,
|
|
||||||
@NotNull Collection<? extends CallableMemberDescriptor> functionsFromSupertypes,
|
@NotNull Collection<? extends CallableMemberDescriptor> functionsFromSupertypes,
|
||||||
@NotNull Collection<? extends CallableMemberDescriptor> functionsFromCurrent,
|
@NotNull Collection<? extends CallableMemberDescriptor> functionsFromCurrent,
|
||||||
@NotNull ClassDescriptor current,
|
@NotNull ClassDescriptor current,
|
||||||
@@ -207,9 +212,6 @@ public class OverrideResolver {
|
|||||||
CallableMemberDescriptor fakeOverride = functionFromSupertype.copy(current, false, !isVisible, CallableMemberDescriptor.Kind.FAKE_OVERRIDE, false);
|
CallableMemberDescriptor fakeOverride = functionFromSupertype.copy(current, false, !isVisible, CallableMemberDescriptor.Kind.FAKE_OVERRIDE, false);
|
||||||
OverridingUtil.bindOverride(fakeOverride, functionFromSupertype);
|
OverridingUtil.bindOverride(fakeOverride, functionFromSupertype);
|
||||||
fakeOverrideList.add(fakeOverride);
|
fakeOverrideList.add(fakeOverride);
|
||||||
if (fakeOverrides != null) {
|
|
||||||
fakeOverrides.add(fakeOverride);
|
|
||||||
}
|
|
||||||
sink.addToScope(fakeOverride);
|
sink.addToScope(fakeOverride);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -224,16 +226,15 @@ public class OverrideResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static List<CallableMemberDescriptor> getDescriptorsFromSupertypes(ClassDescriptor classDescriptor) {
|
private static List<CallableMemberDescriptor> getCallableMembersFromSupertypes(ClassDescriptor classDescriptor) {
|
||||||
Set<CallableMemberDescriptor> r = Sets.newLinkedHashSet();
|
Set<CallableMemberDescriptor> r = Sets.newLinkedHashSet();
|
||||||
for (JetType supertype : classDescriptor.getTypeConstructor().getSupertypes()) {
|
for (JetType supertype : classDescriptor.getTypeConstructor().getSupertypes()) {
|
||||||
r.addAll(getDescriptorsOfType(supertype.getMemberScope()));
|
r.addAll(getCallableMembersFromType(supertype.getMemberScope()));
|
||||||
}
|
}
|
||||||
return new ArrayList<CallableMemberDescriptor>(r);
|
return new ArrayList<CallableMemberDescriptor>(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T extends DeclarationDescriptor> List<CallableMemberDescriptor> getDescriptorsOfType(
|
private static List<CallableMemberDescriptor> getCallableMembersFromType(JetScope scope) {
|
||||||
JetScope scope) {
|
|
||||||
List<CallableMemberDescriptor> r = Lists.newArrayList();
|
List<CallableMemberDescriptor> r = Lists.newArrayList();
|
||||||
for (DeclarationDescriptor decl : scope.getAllDescriptors()) {
|
for (DeclarationDescriptor decl : scope.getAllDescriptors()) {
|
||||||
if (decl instanceof PropertyDescriptor || decl instanceof SimpleFunctionDescriptor) {
|
if (decl instanceof PropertyDescriptor || decl instanceof SimpleFunctionDescriptor) {
|
||||||
|
|||||||
Reference in New Issue
Block a user