From efee2862bb1154d07f61e2245be0f897e44e0b92 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Oct 2014 15:45:47 +0200 Subject: [PATCH] CollectClassMembersUtil: use collections with predictable iteration order --- .../lang/resolve/CollectClassMembersUtil.java | 20 ++++++---------- .../lang/GroovyStructureViewTest.groovy | 24 +++++++++---------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/CollectClassMembersUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/CollectClassMembersUtil.java index 7f1b23f2f4bb..a976186b5d02 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/CollectClassMembersUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/CollectClassMembersUtil.java @@ -15,14 +15,12 @@ */ package org.jetbrains.plugins.groovy.lang.resolve; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Key; import com.intellij.psi.*; import com.intellij.psi.impl.compiled.ClsClassImpl; import com.intellij.psi.infos.CandidateInfo; import com.intellij.psi.util.*; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.HashMap; import com.intellij.util.containers.HashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList; @@ -30,10 +28,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; import org.jetbrains.plugins.groovy.lang.psi.util.GrTraitUtil; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * @author ven @@ -52,9 +47,9 @@ public class CollectClassMembersUtil { myInnerClasses = innerClasses; } - public static ClassMembers create(@NotNull Map first, - @NotNull Map> second, - @NotNull Map third) { + public static ClassMembers create(@NotNull LinkedHashMap first, + @NotNull LinkedHashMap> second, + @NotNull LinkedHashMap third) { return new ClassMembers(first, second, third); } @@ -71,7 +66,6 @@ public class CollectClassMembersUtil { } } - private static final Logger LOG = Logger.getInstance("#org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil"); private static final Key> CACHED_MEMBERS = Key.create("CACHED_CLASS_MEMBERS"); private static final Key> CACHED_MEMBERS_INCLUDING_SYNTHETIC = Key.create("CACHED_MEMBERS_INCLUDING_SYNTHETIC"); @@ -134,9 +128,9 @@ public class CollectClassMembersUtil { return CachedValuesManager.getManager(aClass.getProject()).createCachedValue(new CachedValueProvider() { @Override public Result compute() { - Map allFields = new HashMap(); - Map> allMethods = new HashMap>(); - Map allInnerClasses = new HashMap(); + LinkedHashMap allFields = ContainerUtil.newLinkedHashMap(); + LinkedHashMap> allMethods = ContainerUtil.newLinkedHashMap(); + LinkedHashMap allInnerClasses = ContainerUtil.newLinkedHashMap(); processClass(aClass, allFields, allMethods, allInnerClasses, new HashSet(), PsiSubstitutor.EMPTY, includeSynthetic); return Result.create(ClassMembers.create(allFields, allMethods, allInnerClasses), diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.groovy index 0f2ba6bcb640..ad3cac4d372a 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStructureViewTest.groovy @@ -70,31 +70,31 @@ class Bar extends Foo { Foo(int, int) foo(int, int): Object getClass(): Class - clone(): Object - equals(Object): boolean hashCode(): int + equals(Object): boolean + clone(): Object + toString(): String + notify(): void + notifyAll(): void wait(long): void wait(long, int): void wait(): void - notify(): void finalize(): void - toString(): String - notifyAll(): void prop: int -Bar bar(int): Object - getClass(): Class - clone(): Object - equals(Object): boolean - hashCode(): int foo(int, int): Object + getClass(): Class + hashCode(): int + equals(Object): boolean + clone(): Object + toString(): String + notify(): void + notifyAll(): void wait(long): void wait(long, int): void wait(): void - notify(): void finalize(): void - toString(): String - notifyAll(): void prop: int """); }