Fixed order of automatically implemented abstract members.

#KT-1357 fixed
This commit is contained in:
Evgeny Gerashchenko
2012-02-21 14:37:30 +04:00
parent deac0e20ca
commit 478bf8ac0f
2 changed files with 43 additions and 3 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.lexer.JetTokens;
import org.jetbrains.jet.util.CommonSuppliers;
import org.jetbrains.jet.util.LinkedMultiMap;
import java.util.*;
@@ -91,7 +92,7 @@ public class OverrideResolver {
MultiMap<String, CallableMemberDescriptor> functionsFromCurrentByName = groupDescriptorsByName(classDescriptor.getCallableMembers());
Set<String> functionNames = new HashSet<String>();
Set<String> functionNames = new LinkedHashSet<String>();
functionNames.addAll(functionsFromSupertypesByName.keySet());
functionNames.addAll(functionsFromCurrentByName.keySet());
@@ -170,7 +171,7 @@ public class OverrideResolver {
private static <T extends DeclarationDescriptor> MultiMap<String, T> groupDescriptorsByName(Collection<T> properties) {
MultiMap<String, T> r = new MultiMap<String, T>();
MultiMap<String, T> r = new LinkedMultiMap<String, T>();
for (T property : properties) {
r.putValue(property.getName(), property);
}
@@ -179,7 +180,7 @@ public class OverrideResolver {
private static List<CallableMemberDescriptor> getDescriptorsFromSupertypes(ClassDescriptor classDescriptor) {
Set<CallableMemberDescriptor> r = Sets.newHashSet();
Set<CallableMemberDescriptor> r = Sets.newLinkedHashSet();
for (JetType supertype : classDescriptor.getTypeConstructor().getSupertypes()) {
r.addAll(getDescriptorsOfType(supertype.getMemberScope()));
}
@@ -0,0 +1,39 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.util;
import com.intellij.util.containers.MultiMap;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author Evgeny Gerashchenko
* TODO reuse LinkedMultiMap from IDEA platform when it will be available there
*/
public class LinkedMultiMap<K, V> extends MultiMap<K, V> {
@Override
protected Map<K, Collection<V>> createMap() {
return new LinkedHashMap<K, Collection<V>>();
}
@Override
protected Map<K, Collection<V>> createMap(int i, float v) {
return new LinkedHashMap<K, Collection<V>>(i, v);
}
}