preserve order while collect overrides

This commit is contained in:
Svetlana Isakova
2012-09-05 17:48:27 +04:00
parent ed68ac2244
commit 8e5e309440
2 changed files with 6 additions and 6 deletions
@@ -1394,7 +1394,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
private Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes(ResolverScopeData scopeData, Name methodName) { private Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes(ResolverScopeData scopeData, Name methodName) {
Set<SimpleFunctionDescriptor> r = new HashSet<SimpleFunctionDescriptor>(); Set<SimpleFunctionDescriptor> r = Sets.newLinkedHashSet();
for (JetType supertype : getSupertypes(scopeData)) { for (JetType supertype : getSupertypes(scopeData)) {
for (FunctionDescriptor function : supertype.getMemberScope().getFunctions(methodName)) { for (FunctionDescriptor function : supertype.getMemberScope().getFunctions(methodName)) {
r.add((SimpleFunctionDescriptor) function); r.add((SimpleFunctionDescriptor) function);
@@ -407,7 +407,7 @@ public class OverrideResolver {
Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> overriddenDeclarationsByDirectParent = collectOverriddenDeclarations(directOverridden); Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> overriddenDeclarationsByDirectParent = collectOverriddenDeclarations(directOverridden);
List<CallableMemberDescriptor> allOverriddenDeclarations = ContainerUtil.flatten(overriddenDeclarationsByDirectParent.values()); List<CallableMemberDescriptor> allOverriddenDeclarations = ContainerUtil.flatten(overriddenDeclarationsByDirectParent.values());
Set<CallableMemberDescriptor> allFilteredOverriddenDeclarations = OverridingUtil.filterOverrides(Sets.newHashSet(allOverriddenDeclarations)); Set<CallableMemberDescriptor> allFilteredOverriddenDeclarations = OverridingUtil.filterOverrides(Sets.newLinkedHashSet(allOverriddenDeclarations));
Set<CallableMemberDescriptor> relevantDirectlyOverridden = Set<CallableMemberDescriptor> relevantDirectlyOverridden =
getRelevantDirectlyOverridden(overriddenDeclarationsByDirectParent, allFilteredOverriddenDeclarations); getRelevantDirectlyOverridden(overriddenDeclarationsByDirectParent, allFilteredOverriddenDeclarations);
@@ -479,7 +479,7 @@ public class OverrideResolver {
are overridden by some other function and corresponding directly overridden descriptor is not relevant. are overridden by some other function and corresponding directly overridden descriptor is not relevant.
*/ */
Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> relevantOverriddenByParent = Maps.newHashMap(overriddenByParent); Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> relevantOverriddenByParent = Maps.newLinkedHashMap(overriddenByParent);
for (Map.Entry<CallableMemberDescriptor, Set<CallableMemberDescriptor>> entry : overriddenByParent.entrySet()) { for (Map.Entry<CallableMemberDescriptor, Set<CallableMemberDescriptor>> entry : overriddenByParent.entrySet()) {
CallableMemberDescriptor directlyOverridden = entry.getKey(); CallableMemberDescriptor directlyOverridden = entry.getKey();
@@ -508,11 +508,11 @@ public class OverrideResolver {
private static Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> collectOverriddenDeclarations( private static Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> collectOverriddenDeclarations(
@NotNull Collection<? extends CallableMemberDescriptor> directOverriddenDescriptors @NotNull Collection<? extends CallableMemberDescriptor> directOverriddenDescriptors
) { ) {
Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> overriddenDeclarationsByDirectParent = Maps.newHashMap(); Map<CallableMemberDescriptor, Set<CallableMemberDescriptor>> overriddenDeclarationsByDirectParent = Maps.newLinkedHashMap();
for (CallableMemberDescriptor descriptor : directOverriddenDescriptors) { for (CallableMemberDescriptor descriptor : directOverriddenDescriptors) {
Collection<CallableMemberDescriptor> overriddenDeclarations = OverridingUtil.getOverriddenDeclarations(descriptor); Collection<CallableMemberDescriptor> overriddenDeclarations = OverridingUtil.getOverriddenDeclarations(descriptor);
Set<CallableMemberDescriptor> filteredOverrides = OverridingUtil.filterOverrides(Sets.newHashSet(overriddenDeclarations)); Set<CallableMemberDescriptor> filteredOverrides = OverridingUtil.filterOverrides(Sets.newLinkedHashSet(overriddenDeclarations));
Set<CallableMemberDescriptor> overridden = Sets.newHashSet(); Set<CallableMemberDescriptor> overridden = Sets.newLinkedHashSet();
for (CallableMemberDescriptor memberDescriptor : filteredOverrides) { for (CallableMemberDescriptor memberDescriptor : filteredOverrides) {
overridden.add(memberDescriptor); overridden.add(memberDescriptor);
} }