removed resolve to file if there is no resolve result
This commit is contained in:
@@ -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()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user