/** @deprecated use {@link #multiResolveImportElement(PyImportElement, QualifiedName)} instead. */ @Deprecated @Nullable public static PsiElement resolveImportElement( PyImportElement importElement, @NotNull final QualifiedName qName) { final List<RatedResolveResult> resultList = RatedResolveResult.sorted(multiResolveImportElement(importElement, qName)); return resultList.size() > 0 ? resultList.get(0).getElement() : null; }
@NotNull @Override public ResolveResult[] multiResolve(boolean incompleteCode) { ResolveResult[] results = super.multiResolve(incompleteCode); if (results.length == 0) { PsiFile file = myElement.getContainingFile(); final InjectedLanguageManager languageManager = InjectedLanguageManager.getInstance(myElement.getProject()); final PsiLanguageInjectionHost host = languageManager.getInjectionHost(myElement); if (host != null) file = host.getContainingFile(); final String referencedName = myElement.getReferencedName(); if (referencedName == null) return ResolveResult.EMPTY_ARRAY; if (host != null) { final List<Pair<PsiElement, TextRange>> files = languageManager.getInjectedPsiFiles(host); if (files != null) { for (Pair<PsiElement, TextRange> pair : files) { ResolveProcessor processor = new ResolveProcessor(referencedName); PyResolveUtil.scopeCrawlUp( processor, (ScopeOwner) pair.getFirst(), referencedName, pair.getFirst()); final List<RatedResolveResult> resultList = getResultsFromProcessor( referencedName, processor, pair.getFirst(), pair.getFirst()); if (resultList.size() > 0) { List<RatedResolveResult> ret = RatedResolveResult.sorted(resultList); return ret.toArray(new RatedResolveResult[ret.size()]); } } } } ResolveProcessor processor = new ResolveProcessor(referencedName); if (file instanceof ScopeOwner) PyResolveUtil.scopeCrawlUp(processor, (ScopeOwner) file, referencedName, file); final List<RatedResolveResult> resultList = getResultsFromProcessor(referencedName, processor, file, file); if (resultList.size() > 0) { List<RatedResolveResult> ret = RatedResolveResult.sorted(resultList); return ret.toArray(new RatedResolveResult[ret.size()]); } } return results; }
/** * @deprecated Use {@link #resolveChildren(PsiElement, String, PsiFile, boolean, boolean)} * instead. */ @Deprecated @Nullable public static PsiElement resolveChild( @Nullable final PsiElement parent, @NotNull final String referencedName, @Nullable final PsiFile containingFile, boolean fileOnly, boolean checkForPackage) { final List<RatedResolveResult> results = resolveChildren(parent, referencedName, containingFile, fileOnly, checkForPackage); return results.isEmpty() ? null : RatedResolveResult.sorted(results).get(0).getElement(); }