mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
internal canonical text for maps in arg list
This commit is contained in:
+2
-2
@@ -61,10 +61,10 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameterLi
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrClosureSignature;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GrMapType;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.members.GrMethodImpl;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.types.GrClosureSignatureUtil;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
import org.jetbrains.plugins.groovy.refactoring.GroovyValidationUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -394,7 +394,7 @@ public class ConvertParameterToMapEntryIntention extends Intention {
|
||||
private static boolean firstOwnerParameterMustBeMap(final GrParametersOwner owner) {
|
||||
final GrParameter first = getFirstParameter(owner);
|
||||
final PsiType type = first.getTypeGroovy();
|
||||
final PsiClassType mapType = PsiUtil.createMapType(GlobalSearchScope.allScope(owner.getProject()));
|
||||
final PsiClassType mapType = new GrMapType(GlobalSearchScope.allScope(owner.getProject()));
|
||||
// First parameter may be used as map
|
||||
return type == null || type.isConvertibleFrom(mapType);
|
||||
}
|
||||
|
||||
@@ -19,20 +19,18 @@ package org.jetbrains.plugins.groovy.lang.psi.impl;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.CommonClassNames;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClassType;
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgumentLabel;
|
||||
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.*;
|
||||
import java.util.HashSet;
|
||||
|
||||
import static com.intellij.psi.CommonClassNames.JAVA_UTIL_MAP;
|
||||
import static org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames.JAVA_UTIL_LINKED_HASH_MAP;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -42,11 +40,8 @@ public class GrMapType extends GrLiteralClassType {
|
||||
|
||||
private final Map<String, PsiType> myStringEntries;
|
||||
private final List<Pair<PsiType, PsiType>> myOtherEntries;
|
||||
@NonNls
|
||||
private static final String JAVA_UTIL_LINKED_HASH_MAP = "java.util.LinkedHashMap";
|
||||
private final String myJavaClassName;
|
||||
|
||||
|
||||
public GrMapType(GlobalSearchScope scope) {
|
||||
this(JavaPsiFacade.getInstance(scope.getProject()), scope, Collections.<String, PsiType>emptyMap(), Collections.<Pair<PsiType, PsiType>>emptyList(), LanguageLevel.JDK_1_5);
|
||||
}
|
||||
@@ -68,15 +63,13 @@ public class GrMapType extends GrLiteralClassType {
|
||||
myStringEntries = stringEntries;
|
||||
myOtherEntries = otherEntries;
|
||||
|
||||
myJavaClassName =
|
||||
facade.findClass(JAVA_UTIL_LINKED_HASH_MAP, scope) != null ? JAVA_UTIL_LINKED_HASH_MAP : CommonClassNames.JAVA_UTIL_MAP;
|
||||
myJavaClassName = facade.findClass(JAVA_UTIL_LINKED_HASH_MAP, scope) != null ? JAVA_UTIL_LINKED_HASH_MAP : JAVA_UTIL_MAP;
|
||||
}
|
||||
|
||||
public GrMapType(JavaPsiFacade facade, GlobalSearchScope scope, GrNamedArgument[] args) {
|
||||
super(LanguageLevel.JDK_1_5, scope, facade);
|
||||
public GrMapType(@NotNull PsiElement context, GrNamedArgument[] args) {
|
||||
super(LanguageLevel.JDK_1_5, context.getResolveScope(), JavaPsiFacade.getInstance(context.getProject()));
|
||||
|
||||
myJavaClassName =
|
||||
facade.findClass(JAVA_UTIL_LINKED_HASH_MAP, scope) != null ? JAVA_UTIL_LINKED_HASH_MAP : CommonClassNames.JAVA_UTIL_MAP;
|
||||
myJavaClassName = myFacade.findClass(JAVA_UTIL_LINKED_HASH_MAP, myScope) != null ? JAVA_UTIL_LINKED_HASH_MAP : JAVA_UTIL_MAP;
|
||||
|
||||
myStringEntries = new HashMap<String, PsiType>();
|
||||
myOtherEntries=new ArrayList<Pair<PsiType, PsiType>>();
|
||||
@@ -148,7 +141,12 @@ public class GrMapType extends GrLiteralClassType {
|
||||
}
|
||||
|
||||
public String getInternalCanonicalText() {
|
||||
if (myStringEntries.size() == 0) return "[:]";
|
||||
if (myStringEntries.size() == 0) {
|
||||
if (myOtherEntries.size() == 0) return "[:]";
|
||||
String name = getJavaClassName();
|
||||
final PsiType[] params = getParameters();
|
||||
return name + "<" + params[0].getInternalCanonicalText() + ", " + params[1].getInternalCanonicalText() + ">";
|
||||
}
|
||||
|
||||
List<String> components = new ArrayList<String>();
|
||||
for (String s : myStringEntries.keySet()) {
|
||||
|
||||
+3
-2
@@ -36,6 +36,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.types.GrBuiltInTypeElement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GrClassReferenceType;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GrMapType;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyResolveResultImpl;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.path.GrCallExpressionImpl;
|
||||
@@ -139,8 +140,8 @@ public class GrNewExpressionImpl extends GrCallExpressionImpl implements GrNewEx
|
||||
if (argumentList == null) return GroovyResolveResult.EMPTY_ARRAY;
|
||||
|
||||
if (argumentList.getNamedArguments().length > 0 && argumentList.getExpressionArguments().length == 0) {
|
||||
GroovyResolveResult[] constructorResults = PsiUtil.getConstructorCandidates(ref, classResults, new PsiType[]{PsiUtil.createMapType(
|
||||
getResolveScope())}); //one Map parameter, actually
|
||||
PsiType mapType = new GrMapType(argumentList, getNamedArguments());
|
||||
GroovyResolveResult[] constructorResults = PsiUtil.getConstructorCandidates(ref, classResults, new PsiType[]{mapType}); //one Map parameter, actually
|
||||
for (GroovyResolveResult result : constructorResults) {
|
||||
final PsiElement resolved = result.getElement();
|
||||
if (resolved instanceof PsiMethod) {
|
||||
|
||||
+2
-2
@@ -528,7 +528,7 @@ public class GrClosureSignatureUtil {
|
||||
if (params.length == 0) return null;
|
||||
PsiType type = params[0].getType();
|
||||
if (InheritanceUtil.isInheritor(type, CommonClassNames.JAVA_UTIL_MAP)) {
|
||||
innerArgs.add(new InnerArg(PsiUtil.createMapType(context.getResolveScope()), namedArgs));
|
||||
innerArgs.add(new InnerArg(new GrMapType(context.getResolveScope()), namedArgs));
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
@@ -677,7 +677,7 @@ public class GrClosureSignatureUtil {
|
||||
for (int i = 0, size = arg.args.size(); i < size; i++) {
|
||||
args[i] = (GrNamedArgument)arg.args.get(i);
|
||||
}
|
||||
return new GrMapType(JavaPsiFacade.getInstance(manager.getProject()), resolveScope, args);
|
||||
return new GrMapType(first, args);
|
||||
}
|
||||
else {
|
||||
for (PsiElement elem : arg.args) {
|
||||
|
||||
+17
-16
@@ -22,25 +22,26 @@ import org.jetbrains.annotations.NonNls;
|
||||
*/
|
||||
public final class GroovyCommonClassNames {
|
||||
|
||||
public static final String GROOVY_OBJECT_SUPPORT = "groovy.lang.GroovyObjectSupport";
|
||||
public static final String GROOVY_LANG_CLOSURE = "groovy.lang.Closure";
|
||||
public static final String DEFAULT_BASE_CLASS_NAME = "groovy.lang.GroovyObject";
|
||||
public static final String GROOVY_LANG_GSTRING = "groovy.lang.GString";
|
||||
public static final String DEFAULT_GROOVY_METHODS = "org.codehaus.groovy.runtime.DefaultGroovyMethods";
|
||||
public static final String GROOVY_LANG_SCRIPT = "groovy.lang.Script";
|
||||
public static final String GROOVY_LANG_INT_RANGE = "groovy.lang.IntRange";
|
||||
public static final String GROOVY_LANG_OBJECT_RANGE = "groovy.lang.ObjectRange";
|
||||
public static final String GROOVY_LANG_DELEGATE = "groovy.lang.Delegate";
|
||||
public static final String JAVA_UTIL_REGEX_PATTERN = "java.util.regex.Pattern";
|
||||
public static final String JAVA_MATH_BIG_DECIMAL = "java.math.BigDecimal";
|
||||
public static final String JAVA_MATH_BIG_INTEGER = "java.math.BigInteger";
|
||||
@NonNls public static final String GROOVY_OBJECT_SUPPORT = "groovy.lang.GroovyObjectSupport";
|
||||
@NonNls public static final String GROOVY_LANG_CLOSURE = "groovy.lang.Closure";
|
||||
@NonNls public static final String DEFAULT_BASE_CLASS_NAME = "groovy.lang.GroovyObject";
|
||||
@NonNls public static final String GROOVY_LANG_GSTRING = "groovy.lang.GString";
|
||||
@NonNls public static final String DEFAULT_GROOVY_METHODS = "org.codehaus.groovy.runtime.DefaultGroovyMethods";
|
||||
@NonNls public static final String GROOVY_LANG_SCRIPT = "groovy.lang.Script";
|
||||
@NonNls public static final String GROOVY_LANG_INT_RANGE = "groovy.lang.IntRange";
|
||||
@NonNls public static final String GROOVY_LANG_OBJECT_RANGE = "groovy.lang.ObjectRange";
|
||||
@NonNls public static final String GROOVY_LANG_DELEGATE = "groovy.lang.Delegate";
|
||||
@NonNls public static final String JAVA_UTIL_REGEX_PATTERN = "java.util.regex.Pattern";
|
||||
@NonNls public static final String JAVA_MATH_BIG_DECIMAL = "java.math.BigDecimal";
|
||||
@NonNls public static final String JAVA_MATH_BIG_INTEGER = "java.math.BigInteger";
|
||||
@NonNls public static final String ORG_CODEHAUS_GROOVY_RUNTIME_METHOD_CLOSURE = "org.codehaus.groovy.runtime.MethodClosure";
|
||||
@NonNls public static final String JAVA_UTIL_REGEX_MATCHER = "java.util.regex.Matcher";
|
||||
public static final String GROOVY_TRANSFORM_FIELD = "groovy.transform.Field";
|
||||
public static final String GROOVY_TRANSFORM_TUPLE_CONSTRUCTOR = "groovy.transform.TupleConstructor";
|
||||
public static final String GROOVY_TRANSFORM_IMMUTABLE = "groovy.transform.Immutable";
|
||||
public static final String GROOVY_TRANSFORM_CANONICAL = "groovy.transform.Canonical";
|
||||
@NonNls public static final String GROOVY_TRANSFORM_FIELD = "groovy.transform.Field";
|
||||
@NonNls public static final String GROOVY_TRANSFORM_TUPLE_CONSTRUCTOR = "groovy.transform.TupleConstructor";
|
||||
@NonNls public static final String GROOVY_TRANSFORM_IMMUTABLE = "groovy.transform.Immutable";
|
||||
@NonNls public static final String GROOVY_TRANSFORM_CANONICAL = "groovy.transform.Canonical";
|
||||
@NonNls public static final String GROOVY_LANG_REFERENCE = "groovy.lang.Reference";
|
||||
@NonNls public static final String JAVA_UTIL_LINKED_HASH_MAP = "java.util.LinkedHashMap";
|
||||
|
||||
|
||||
private GroovyCommonClassNames() {
|
||||
|
||||
@@ -175,10 +175,6 @@ public class PsiUtil {
|
||||
return GrClosureSignatureUtil.isSignatureApplicable(signature, argumentTypes, context);
|
||||
}
|
||||
|
||||
public static PsiClassType createMapType(GlobalSearchScope scope) {
|
||||
return new GrMapType(scope);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static GrArgumentList getArgumentsList(PsiElement methodRef) {
|
||||
if (methodRef instanceof GrEnumConstant) return ((GrEnumConstant)methodRef).getArgumentList();
|
||||
@@ -227,7 +223,7 @@ public class PsiUtil {
|
||||
List<PsiType> result = new ArrayList<PsiType>();
|
||||
|
||||
if (namedArgs.length > 0) {
|
||||
result.add(createMapType(namedArgs[0].getResolveScope()));
|
||||
result.add(new GrMapType(namedArgs[0], namedArgs));
|
||||
}
|
||||
|
||||
for (GrExpression expression : expressions) {
|
||||
|
||||
Reference in New Issue
Block a user