[groovy] update named argument provider API

This commit is contained in:
Daniil Ovchinnikov
2017-02-14 19:28:15 +03:00
parent 2fa8ef7f33
commit 23b7c64063
5 changed files with 30 additions and 9 deletions
@@ -41,6 +41,8 @@ public abstract class GroovyNamedArgumentProvider {
public static final ExtensionPointName<GroovyNamedArgumentProvider> EP_NAME =
ExtensionPointName.create("org.intellij.groovy.namedArgumentProvider");
@SuppressWarnings("unused")
@Deprecated
public void getNamedArguments(@NotNull GrCall call,
@Nullable PsiElement resolve,
@Nullable String argumentName,
@@ -49,15 +51,27 @@ public abstract class GroovyNamedArgumentProvider {
// no op
}
@SuppressWarnings("unused")
@Deprecated
public void getNamedArguments(@NotNull GrCall call,
@Nullable PsiElement resolve,
@Nullable GroovyResolveResult resolveResult,
@Nullable String argumentName,
boolean forCompletion,
@NotNull Map<String, NamedArgumentDescriptor> result) {
//noinspection deprecation
getNamedArguments(call, resolve, argumentName, forCompletion, result);
}
public void getNamedArguments(@NotNull GrCall call,
@NotNull GroovyResolveResult resolveResult,
@Nullable String argumentName,
boolean forCompletion,
@NotNull Map<String, NamedArgumentDescriptor> result) {
//noinspection deprecation
getNamedArguments(call, resolveResult.getElement(), resolveResult, argumentName, forCompletion, result);
}
@NotNull
public Map<String, NamedArgumentDescriptor> getNamedArguments(@NotNull GrListOrMap literal) {
return Collections.emptyMap();
@@ -84,7 +98,7 @@ public abstract class GroovyNamedArgumentProvider {
if (callVariants.length == 0 || PsiUtil.isSingleBindingVariant(callVariants)) {
for (GroovyNamedArgumentProvider namedArgumentProvider : EP_NAME.getExtensions()) {
namedArgumentProvider.getNamedArguments(call, null, null, argumentName, forCompletion, namedArguments);
namedArgumentProvider.getNamedArguments(call, GroovyResolveResult.EMPTY_RESULT, argumentName, forCompletion, namedArguments);
}
}
else {
@@ -105,7 +119,7 @@ public abstract class GroovyNamedArgumentProvider {
if (methodInfo.getNamedArguments() != null || methodInfo.isNamedArgumentProviderDefined()) {
if (methodInfo.isApplicable(method)) {
if (methodInfo.isNamedArgumentProviderDefined()) {
methodInfo.getNamedArgProvider().getNamedArguments(call, element, result, argumentName, forCompletion, namedArguments);
methodInfo.getNamedArgProvider().getNamedArguments(call, result, argumentName, forCompletion, namedArguments);
}
if (methodInfo.getNamedArguments() != null) {
namedArguments.putAll(methodInfo.getNamedArguments());
@@ -116,7 +130,7 @@ public abstract class GroovyNamedArgumentProvider {
}
for (GroovyNamedArgumentProvider namedArgumentProvider : EP_NAME.getExtensions()) {
namedArgumentProvider.getNamedArguments(call, element, result, argumentName, forCompletion, namedArguments);
namedArgumentProvider.getNamedArguments(call, result, argumentName, forCompletion, namedArguments);
}
if (element instanceof GrVariable &&
@@ -53,11 +53,12 @@ public class GroovyConstructorNamedArgumentProvider extends GroovyNamedArgumentP
@Override
public void getNamedArguments(@NotNull GrCall call,
@Nullable PsiElement resolve,
@NotNull GroovyResolveResult resolveResult,
@Nullable String argumentName,
boolean forCompletion,
@NotNull Map<String, NamedArgumentDescriptor> result) {
if (!(call instanceof GrNewExpression)) return;
PsiElement resolve = resolveResult.getElement();
if (resolve != null) {
if (!(resolve instanceof PsiMethod)) return;
@@ -75,8 +76,8 @@ public class GroovyConstructorNamedArgumentProvider extends GroovyNamedArgumentP
return;
}
for (GroovyResolveResult resolveResult : newCall.multiResolveClass()) {
PsiElement element = resolveResult.getElement();
for (GroovyResolveResult newResult : newCall.multiResolveClass()) {
PsiElement element = newResult.getElement();
if (!(element instanceof PsiClass)) continue;
PsiClass aClass = (PsiClass)element;
@@ -23,6 +23,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.extensions.GroovyNamedArgumentProvider;
import org.jetbrains.plugins.groovy.extensions.NamedArgumentDescriptor;
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrCall;
import java.util.HashMap;
@@ -34,10 +35,11 @@ import java.util.Map;
public class GroovyMethodReturnNamedArgumentProvider extends GroovyNamedArgumentProvider {
@Override
public void getNamedArguments(@NotNull GrCall call,
@Nullable PsiElement resolve,
@NotNull GroovyResolveResult resolveResult,
@Nullable String argumentName,
boolean forCompletion,
@NotNull Map<String, NamedArgumentDescriptor> result) {
PsiElement resolve = resolveResult.getElement();
if (!forCompletion || !(resolve instanceof PsiMethod)) return;
PsiType returnType = ((PsiMethod)resolve).getReturnType();
@@ -20,6 +20,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.extensions.GroovyNamedArgumentProvider;
import org.jetbrains.plugins.groovy.extensions.NamedArgumentDescriptor;
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrNamedArgumentSearchVisitor;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable;
@@ -34,10 +35,11 @@ import java.util.Map;
public class GroovySourceCodeNamedArgumentProvider extends GroovyNamedArgumentProvider {
@Override
public void getNamedArguments(@NotNull GrCall call,
@Nullable PsiElement resolve,
@NotNull GroovyResolveResult resolveResult,
@Nullable String argumentName,
boolean forCompletion,
@NotNull Map<String, NamedArgumentDescriptor> result) {
PsiElement resolve = resolveResult.getElement();
if (resolve instanceof GrMethod) {
result.putAll(((GrMethod)resolve).getNamedParameters());
}
@@ -24,6 +24,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.extensions.GroovyNamedArgumentProvider;
import org.jetbrains.plugins.groovy.extensions.NamedArgumentDescriptor;
import org.jetbrains.plugins.groovy.extensions.impl.TypeCondition;
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrCall;
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames;
@@ -39,10 +40,11 @@ public class SwingBuilderNamedArgumentProvider extends GroovyNamedArgumentProvid
@Override
public void getNamedArguments(@NotNull GrCall call,
@Nullable PsiElement resolve,
@NotNull GroovyResolveResult resolveResult,
@Nullable String argumentName,
boolean forCompletion,
@NotNull Map<String, NamedArgumentDescriptor> result) {
PsiElement resolve = resolveResult.getElement();
PsiType returnType = resolve == null ? null : ((PsiMethod)resolve).getReturnType();
PsiClass aClass = PsiTypesUtil.getPsiClass(returnType);
if (aClass == null) return;