Extract method + remove unused parameter

This commit is contained in:
Andrey Breslav
2012-05-31 14:03:45 +04:00
parent 83eaa4deb7
commit f2dab93090
@@ -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) {