@Nullable public static MethodReferenceBag getMethodParameterReferenceBag( PsiElement psiElement, int wantIndex) { PsiElement variableContext = psiElement.getContext(); if (!(variableContext instanceof ParameterList)) { return null; } ParameterList parameterList = (ParameterList) variableContext; if (!(parameterList.getContext() instanceof MethodReference)) { return null; } ParameterBag currentIndex = getCurrentParameterIndex(psiElement); if (currentIndex == null) { return null; } if (wantIndex >= 0 && currentIndex.getIndex() != wantIndex) { return null; } return new MethodReferenceBag( parameterList, (MethodReference) parameterList.getContext(), currentIndex); }
public static boolean isFunctionReference( PsiElement psiElement, int wantIndex, String... funcName) { PsiElement variableContext = psiElement.getContext(); if (!(variableContext instanceof ParameterList)) { return false; } ParameterList parameterList = (ParameterList) variableContext; PsiElement context = parameterList.getContext(); if (!(context instanceof FunctionReference)) { return false; } FunctionReference methodReference = (FunctionReference) context; String name = methodReference.getName(); if (name == null || !Arrays.asList(funcName).contains(name)) { return false; } ParameterBag currentIndex = getCurrentParameterIndex(psiElement); if (currentIndex == null) { return false; } return !(wantIndex >= 0 && currentIndex.getIndex() != wantIndex); }