/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.lang.psi.impl.resolvers;
import com.intellij.psi.*;
import gw.internal.gosu.parser.TypeLord;
import gw.lang.reflect.*;
import gw.lang.reflect.gs.IGosuClass;
import gw.lang.reflect.gs.IGosuMethodInfo;
import gw.lang.reflect.java.IJavaType;
import gw.lang.reflect.java.JavaTypes;
import gw.plugin.ij.lang.psi.api.AbstractFeatureResolver;
import gw.plugin.ij.lang.psi.api.IGosuResolveResult;
import gw.plugin.ij.lang.psi.custom.CustomGosuClass;
import gw.plugin.ij.lang.psi.impl.CustomPsiClassCache;
import gw.plugin.ij.lang.psi.impl.GosuResolveResultImpl;
import gw.plugin.ij.util.JavaPsiFacadeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class CatchAllFeatureResolver extends AbstractFeatureResolver {
@Nullable
public IGosuResolveResult resolveMethodOrConstructor(@NotNull IHasParameterInfos info, @NotNull PsiElement context) {
IType type = info.getOwnersType();
if (info instanceof IMethodInfo &&
!(type instanceof IGosuClass || type instanceof IJavaType || type instanceof IBlockType || type instanceof IErrorType)) {
CustomGosuClass psiClass = CustomPsiClassCache.instance().getPsiClass(type);
if (psiClass != null) {
PsiElement psiMethod = psiClass.getMethod((IMethodInfo) info, null);
if (psiMethod != null) {
return new GosuResolveResultImpl(psiMethod, true, info);
}
}
}
return null;
}
}