removed resolve to file if there is no resolve result

This commit is contained in:
Svetlana Isakova
2012-09-05 16:23:32 +04:00
parent 0b4b515ad7
commit 096218c2b8
@@ -107,27 +107,16 @@ public abstract class JetPsiReference implements PsiPolyVariantReference {
if (psiElements.size() == 1) { if (psiElements.size() == 1) {
return psiElements.iterator().next(); return psiElements.iterator().next();
} }
if (psiElements.size() > 1) {
return null;
}
List<PsiElement> stdlibSymbols = resolveStandardLibrarySymbol(bindingContext); List<PsiElement> stdlibSymbols = resolveStandardLibrarySymbol(bindingContext);
if (stdlibSymbols.size() == 1) { if (stdlibSymbols.size() == 1) {
return stdlibSymbols.iterator().next(); return stdlibSymbols.iterator().next();
} }
if (stdlibSymbols.size() > 1) { return null;
return null;
}
Collection<? extends DeclarationDescriptor> declarationDescriptors = bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, myExpression);
if (declarationDescriptors != null) return null;
// TODO: Need a better resolution for Intrinsic function (KT-975)
return file;
} }
protected ResolveResult[] doMultiResolve() { protected ResolveResult[] doMultiResolve() {
JetFile file = (JetFile) getElement().getContainingFile(); JetFile file = (JetFile) getElement().getContainingFile();
BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile(file) BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile(file).getBindingContext();
.getBindingContext();
Collection<? extends DeclarationDescriptor> declarationDescriptors = bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, myExpression); Collection<? extends DeclarationDescriptor> declarationDescriptors = bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, myExpression);
if (declarationDescriptors == null) { if (declarationDescriptors == null) {
List<PsiElement> psiElements = BindingContextUtils.resolveToDeclarationPsiElements(bindingContext, myExpression); List<PsiElement> psiElements = BindingContextUtils.resolveToDeclarationPsiElements(bindingContext, myExpression);
@@ -142,21 +131,12 @@ public abstract class JetPsiReference implements PsiPolyVariantReference {
} }
List<ResolveResult> results = new ArrayList<ResolveResult>(declarationDescriptors.size()); List<ResolveResult> results = new ArrayList<ResolveResult>(declarationDescriptors.size());
for (DeclarationDescriptor descriptor : declarationDescriptors) { for (DeclarationDescriptor descriptor : declarationDescriptors) {
List<PsiElement> elements = BindingContextUtils.descriptorToDeclarations(bindingContext, descriptor); List<PsiElement> elements = BindingContextUtils.descriptorToDeclarations(bindingContext, descriptor);
if (elements.isEmpty()) { for (PsiElement element : elements) {
// TODO: Need a better resolution for Intrinsic function (KT-975) results.add(new PsiElementResolveResult(element, true));
results.add(new PsiElementResolveResult(file, true));
} }
else {
for (PsiElement element : elements) {
results.add(new PsiElementResolveResult(element, true));
}
}
} }
return results.toArray(new ResolveResult[results.size()]); return results.toArray(new ResolveResult[results.size()]);
} }