/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.usages;
import com.intellij.pom.PomDeclarationSearcher;
import com.intellij.pom.PomTarget;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.impl.source.tree.LeafPsiElement;
import com.intellij.util.Consumer;
import gw.lang.parser.Keyword;
import gw.plugin.ij.lang.psi.impl.statements.typedef.members.GosuMethodImpl;
import org.jetbrains.annotations.NotNull;
public class GosuDeclarationSearcher extends PomDeclarationSearcher {
@Override
public void findDeclarationsAt(@NotNull PsiElement element, int offsetInElement, @NotNull Consumer<PomTarget> consumer) {
PsiElement parent = element.getParent();
if (element instanceof LeafPsiElement && element.getText().equals(Keyword.KW_construct.getName()) && parent instanceof GosuMethodImpl) {
GosuMethodImpl method = (GosuMethodImpl) parent;
PsiClass psiClass = method.getContainingClass();
if (method.isConstructor() && (psiClass.isEnum() || psiClass.getContainingClass() != null)) {
consumer.consume(method);
}
}
}
}