void (@NotNull PsiType qualifierType, @Nullable PsiClass aClass, @NotNull PsiScopeProcessor processor, @NotNull PsiElement place, @NotNull ResolveState state) { if (aClass != null && ClassUtil.getSuperClassesWithCache(aClass).containsKey("groovy.util.AntBuilder")) { processAntTasks(processor, place, state); return; } if (!(place instanceof GrReferenceExpression) || ((GrReferenceExpression)place).isQualified()) { return; } GrClosableBlock closure = PsiTreeUtil.getContextOfType(place, GrClosableBlock.class, true); boolean antTasksProcessed = false; while (closure != null) { final PsiElement parent = closure.getParent(); if (parent instanceof GrMethodCall) { final PsiMethod method = ((GrMethodCall)parent).resolveMethod(); if (method instanceof AntBuilderMethod) { antTasksProcessed = true; if (!processAntTasks(processor, place, state)) { return; } if (!((AntBuilderMethod)method).processNestedElements(processor)) { return; } break; } } closure = PsiTreeUtil.getContextOfType(closure, GrClosableBlock.class, true); } // ------- gant-specific PsiFile file = place.getContainingFile(); if (file == null || !GroovyScriptUtil.isSpecificScriptFile(file, GantScriptType.INSTANCE)) { return; } if (aClass instanceof GroovyScriptClass) { for (GrArgumentLabel label : GantUtils.getScriptTargets((GroovyFile)file)) { final String targetName = label.getName(); if (targetName != null) { final PsiNamedElement variable = new LightVariableBuilder(targetName, GroovyCommonClassNames.GROOVY_LANG_CLOSURE, label). setBaseIcon(JetgroovyIcons.Groovy.Gant_target); if (!ResolveUtil.processElement(processor, variable, state)) { return; } } } } if (!antTasksProcessed) { processAntTasks(processor, place, state); } }