public static boolean treeWalkUp(@Nullable PsiElement place, @NotNull PsiScopeProcessor processor) { PsiElement lastParent = null; PsiElement run = place; while (run != null) { if (place != run && !run.processDeclarations(processor, ResolveState.initial(), lastParent, place)) return false; lastParent = run; run = run.getParent(); } return true; }
public static boolean processChildren(@NotNull PsiElement element, @NotNull PsiScopeProcessor processor, @NotNull ResolveState substitutor, @Nullable PsiElement lastParent, @NotNull PsiElement place) { PsiElement run = lastParent == null ? element.getLastChild() : lastParent.getPrevSibling(); while (run != null) { if (run instanceof GoCompositeElement && !run.processDeclarations(processor, substitutor, null, place)) return false; run = run.getPrevSibling(); } return true; }
public static boolean processChildrenFromTop(@NotNull PsiElement element, @NotNull PsiScopeProcessor processor, @NotNull ResolveState substitutor, @Nullable PsiElement lastParent, @NotNull PsiElement place) { PsiElement run = element.getFirstChild(); while (run != null) { if (run instanceof GoCompositeElement) { if (run.isEquivalentTo(lastParent)) return true; if (!run.processDeclarations(processor, substitutor, null, place)) return false; } run = run.getNextSibling(); } return true; } }
@Override public boolean processDeclarations(@NotNull PsiScopeProcessor processor, @NotNull ResolveState state, PsiElement lastParent, @NotNull PsiElement place) { return getDelegate().processDeclarations(processor, state, lastParent, place); }
public static boolean walkChildrenScopes(@NotNull PsiElement thisElement, @NotNull PsiScopeProcessor processor, @NotNull ResolveState state, PsiElement lastParent, PsiElement place) { for (PsiElement child = thisElement.getFirstChild(); child != null; child = child.getNextSibling()) { if (child != lastParent && !child.processDeclarations(processor, state, lastParent, place)) { return false; } } return true; } }
/** * This tree walkup method does continue even if a valid definition has been found on an more-inner level. * Bash is different in regard to the definitions, the most outer definitions count, not the most inner / the first one found. * * @param processor * @param entrance * @param maxScope * @param state * @return */ public static boolean varResolveTreeWalkUp(@NotNull final PsiScopeProcessor processor, @NotNull final BashVar entrance, @Nullable final PsiElement maxScope, @NotNull final ResolveState state) { PsiElement prevParent = entrance; PsiElement scope = entrance; boolean hasResult = false; while (scope != null) { hasResult |= !scope.processDeclarations(processor, state, prevParent, entrance); if (scope == maxScope) { break; } prevParent = scope; scope = PsiTreeUtil.getStubOrPsiParent(prevParent); } return !hasResult; }
public static boolean walkInjection(PsiElement host, @NotNull PsiScopeProcessor processor, @NotNull ResolveState state, PsiElement lastParent, @NotNull PsiElement place, boolean walkOn) { //fixme does this work on the escaped or unescpaed text? InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(host.getProject()); List<Pair<PsiElement, TextRange>> injectedPsiFiles = injectedLanguageManager.getInjectedPsiFiles(host); if (injectedPsiFiles != null) { for (Pair<PsiElement, TextRange> psi_range : injectedPsiFiles) { //fixme check lastParent ? walkOn &= psi_range.first.processDeclarations(processor, state, lastParent, place); } } return walkOn; } }
public static boolean processChildren(@NotNull PsiElement element, @NotNull PsiScopeProcessor processor, @NotNull ResolveState resolveState, @Nullable PsiElement lastParent, @NotNull PsiElement place) { PsiElement run = lastParent == null ? element.getLastChild() : lastParent.getPrevSibling(); while (run != null) { if (run instanceof PerlCompositeElement && !(run instanceof PerlLexicalScope) && !run.processDeclarations(processor, resolveState, null, place) ) { return false; } run = run.getPrevSibling(); } return true; }
public static boolean treeWalkUp(@Nullable PsiElement place, @NotNull PsiScopeProcessor processor) { PsiElement lastParent = null; PsiElement run = place; ResolveState state = ResolveState.initial(); while (run != null) { ProgressManager.checkCanceled(); if (place != run && !run.processDeclarations(processor, state, lastParent, place)) { return false; } lastParent = run; run = run.getContext(); } return true; }
if (child instanceof BashFunctionDef) { functions.add(child); } else if (!child.processDeclarations(processor, state, lastParent, place)) { return false; if (!function.processDeclarations(processor, state, lastParent, place)) { return false; if (!sibling.processDeclarations(processor, state, null, place)) { return false;
public static boolean processChildren(@NotNull PsiElement element, @NotNull PsiScopeProcessor processor, @NotNull ResolveState resolveState, @Nullable PsiElement lastParent, @NotNull PsiElement place) { PsiElement run = lastParent == null ? element.getLastChild() : lastParent.getPrevSibling(); while (run != null) { ProgressManager.checkCanceled(); if (run instanceof PerlCompositeElement && !(run instanceof PerlLexicalScope) && // fixme this should be in composite !run.processDeclarations(processor, resolveState, null, place) ) { return false; } run = run.getPrevSibling(); } // checking implicit variables fixme: decide, move processchildren to here or move this one to processDeclarations? if (element instanceof PerlImplicitVariablesProvider) { for (PerlVariableDeclarationElement wrapper : ((PerlImplicitVariablesProvider)element).getImplicitVariables()) { ProgressManager.checkCanceled(); if (!processor.execute(wrapper, resolveState)) { return false; } } } return true; }