navigate to several elements if there are many

(not only in ambiguity case)
This commit is contained in:
Svetlana Isakova
2012-09-05 16:20:48 +04:00
parent f8d341cb13
commit 0b4b515ad7
3 changed files with 22 additions and 0 deletions
@@ -130,6 +130,10 @@ public abstract class JetPsiReference implements PsiPolyVariantReference {
.getBindingContext();
Collection<? extends DeclarationDescriptor> declarationDescriptors = bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, myExpression);
if (declarationDescriptors == null) {
List<PsiElement> psiElements = BindingContextUtils.resolveToDeclarationPsiElements(bindingContext, myExpression);
if (!psiElements.isEmpty()) {
return PsiElementResolveResult.createResults(psiElements);
}
List<PsiElement> standardLibraryElements = resolveStandardLibrarySymbol(bindingContext);
if (!standardLibraryElements.isEmpty()) {
return PsiElementResolveResult.createResults(standardLibraryElements);
+15
View File
@@ -0,0 +1,15 @@
trait A {
fun foo()
}
trait B {
fun foo()
}
trait C : A, B {
}
fun test(c: C) {
c.<caret>foo()
}
@@ -17,6 +17,7 @@
package org.jetbrains.jet.resolve;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiPolyVariantReference;
import com.intellij.psi.PsiReference;
import com.intellij.psi.ResolveResult;
@@ -78,10 +79,12 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
final PsiPolyVariantReference variantReference = (PsiPolyVariantReference) psiReference;
PsiElement element = variantReference.resolve();
final ResolveResult[] results = variantReference.multiResolve(true);
for (ResolveResult result : results) {
assertNotNull(result);
}
assertTrue("Nothing resolved by reference '" + psiReference.getElement().getText() + "'.", element != null || results.length > 0);
}
@NotNull