From 8dfaa6a4b4c7a58ed17cd1e1f1dec8ecfe9ae214 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 28 Nov 2014 15:54:13 +0100 Subject: [PATCH] use a map with a stable order in GrMapType to fix tests --- .../plugins/groovy/lang/psi/impl/GrMapType.java | 10 +++++----- .../lang/psi/impl/GrMapTypeFromNamedArgs.java | 17 +++++++---------- .../groovy/lang/psi/impl/GrMapTypeImpl.java | 8 ++++---- .../highlighting/typecheck/TypeCheckBool.groovy | 4 ++-- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapType.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapType.java index b9d4cf0ad6f7..fbac5564e974 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapType.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapType.java @@ -22,7 +22,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.util.containers.HashMap; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrNamedArgument; @@ -94,7 +94,7 @@ public abstract class GrMapType extends GrLiteralClassType { protected abstract List> getOtherEntries(); @NotNull - protected abstract Map getStringEntries(); + protected abstract LinkedHashMap getStringEntries(); @Override @NotNull @@ -149,7 +149,7 @@ public abstract class GrMapType extends GrLiteralClassType { public static GrMapType merge(GrMapType l, GrMapType r) { final GlobalSearchScope scope = l.getScope().intersectWith(r.getResolveScope()); - final Map strings = new HashMap(); + final LinkedHashMap strings = ContainerUtil.newLinkedHashMap(); strings.putAll(l.getStringEntries()); strings.putAll(r.getStringEntries()); @@ -162,7 +162,7 @@ public abstract class GrMapType extends GrLiteralClassType { public static GrMapType create(JavaPsiFacade facade, GlobalSearchScope scope, - Map stringEntries, + LinkedHashMap stringEntries, List> otherEntries) { return new GrMapTypeImpl(facade, scope, stringEntries, otherEntries, LanguageLevel.JDK_1_5); } @@ -170,7 +170,7 @@ public abstract class GrMapType extends GrLiteralClassType { public static GrMapType create(GlobalSearchScope scope) { JavaPsiFacade facade = JavaPsiFacade.getInstance(scope.getProject()); List> otherEntries = Collections.emptyList(); - Map stringEntries = Collections.emptyMap(); + LinkedHashMap stringEntries = ContainerUtil.newLinkedHashMap(); return new GrMapTypeImpl(facade, scope, stringEntries, otherEntries, LanguageLevel.JDK_1_5); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeFromNamedArgs.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeFromNamedArgs.java index 6159aee951f1..828dd3f7dcd0 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeFromNamedArgs.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeFromNamedArgs.java @@ -32,17 +32,14 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgument import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrNamedArgument; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * Created by Max Medvedev on 07/04/14 */ public class GrMapTypeFromNamedArgs extends GrMapType { - private final Map myStringEntries; + private final LinkedHashMap myStringEntries; private final List> myOtherEntries; private final VolatileNotNullLazyValue>> myTypesOfOtherEntries = new VolatileNotNullLazyValue>>() { @@ -58,11 +55,11 @@ public class GrMapTypeFromNamedArgs extends GrMapType { } }; - private final VolatileNotNullLazyValue> myTypesOfStringEntries = new VolatileNotNullLazyValue>() { + private final VolatileNotNullLazyValue> myTypesOfStringEntries = new VolatileNotNullLazyValue>() { @NotNull @Override - protected Map compute() { - HashMap result = ContainerUtil.newHashMap(); + protected LinkedHashMap compute() { + LinkedHashMap result = ContainerUtil.newLinkedHashMap(); for (Map.Entry entry : myStringEntries.entrySet()) { result.put(entry.getKey(), inferTypePreventingRecursion(entry.getValue())); } @@ -78,7 +75,7 @@ public class GrMapTypeFromNamedArgs extends GrMapType { public GrMapTypeFromNamedArgs(@NotNull JavaPsiFacade facade, @NotNull GlobalSearchScope scope, @NotNull GrNamedArgument[] namedArgs) { super(facade, scope); - myStringEntries = ContainerUtil.newHashMap(); + myStringEntries = ContainerUtil.newLinkedHashMap(); myOtherEntries = ContainerUtil.newArrayList(); for (GrNamedArgument namedArg : namedArgs) { final GrArgumentLabel label = namedArg.getLabel(); @@ -161,7 +158,7 @@ public class GrMapTypeFromNamedArgs extends GrMapType { @NotNull @Override - protected Map getStringEntries() { + protected LinkedHashMap getStringEntries() { return myTypesOfStringEntries.getValue(); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeImpl.java index 60cb1400fa93..aaf43ab2ab23 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrMapTypeImpl.java @@ -25,20 +25,20 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; import java.util.Set; /** * Created by Max Medvedev on 07/04/14 */ public class GrMapTypeImpl extends GrMapType { - private final Map myStringEntries; + private final LinkedHashMap myStringEntries; private final List> myOtherEntries; GrMapTypeImpl(JavaPsiFacade facade, GlobalSearchScope scope, - Map stringEntries, + LinkedHashMap stringEntries, List> otherEntries, LanguageLevel languageLevel) { super(facade, scope, languageLevel); @@ -92,7 +92,7 @@ public class GrMapTypeImpl extends GrMapType { @NotNull @Override - protected Map getStringEntries() { + protected LinkedHashMap getStringEntries() { return myStringEntries; } diff --git a/plugins/groovy/testdata/highlighting/typecheck/TypeCheckBool.groovy b/plugins/groovy/testdata/highlighting/typecheck/TypeCheckBool.groovy index 715a8d6412cd..06b0bcdbf736 100644 --- a/plugins/groovy/testdata/highlighting/typecheck/TypeCheckBool.groovy +++ b/plugins/groovy/testdata/highlighting/typecheck/TypeCheckBool.groovy @@ -59,7 +59,7 @@ class FooBool { b = ["true"] b = [true] b = [1] as List - b = [a: 1, b: 2, c: 3] + b = [a: 1, b: 2, c: 3] b = [a: 1, b: 2, c: 3] as Map b = [a: 1, b: 2, c: 3] as List } @@ -88,7 +88,7 @@ class FooBool { boolean b20 = [] as List boolean b21 = [1, 2, 3] boolean b22 = [1, 2, 3] as List - boolean b23 = [a: 1, b: 2, c: 3] + boolean b23 = [a: 1, b: 2, c: 3] boolean b24 = [a: 1, b: 2, c: 3] as Map boolean b25 = [a: 1, b: 2, c: 3] as List }