Running NavigateToLibrarySourceTest with force resolve, as well.

This commit is contained in:
Evgeny Gerashchenko
2013-01-09 15:47:45 +04:00
parent a7b703798a
commit b14ca4775c
2 changed files with 24 additions and 8 deletions
@@ -38,6 +38,7 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
@@ -59,6 +60,8 @@ import org.jetbrains.jet.util.slicedmap.ReadOnlySlice;
import java.util.*; import java.util.*;
public class JetSourceNavigationHelper { public class JetSourceNavigationHelper {
private static boolean forceResolve = false;
private JetSourceNavigationHelper() { private JetSourceNavigationHelper() {
} }
@@ -335,18 +338,20 @@ public class JetSourceNavigationHelper {
+ decompiledContainer.getClass().getSimpleName()); + decompiledContainer.getClass().getSimpleName());
} }
candidates = filterByReceiverPresenceAndParametersCount(decompiledDeclaration, navigationStrategy, candidates); if (!forceResolve) {
candidates = filterByReceiverPresenceAndParametersCount(decompiledDeclaration, navigationStrategy, candidates);
if (candidates.size() <= 1) {
return getUnambiguousCandidate(candidates);
}
if (!haveRenamesInImports(getContainingFiles(candidates))) {
candidates = filterByReceiverAndParameterTypes(decompiledDeclaration, navigationStrategy, candidates);
if (candidates.size() <= 1) { if (candidates.size() <= 1) {
return getUnambiguousCandidate(candidates); return getUnambiguousCandidate(candidates);
} }
if (!haveRenamesInImports(getContainingFiles(candidates))) {
candidates = filterByReceiverAndParameterTypes(decompiledDeclaration, navigationStrategy, candidates);
if (candidates.size() <= 1) {
return getUnambiguousCandidate(candidates);
}
}
} }
Pair<BindingContext, JetScope> contextAndMemberScope = getBindingContextAndMemberScopeForLibrarySources(decompiledDeclaration); Pair<BindingContext, JetScope> contextAndMemberScope = getBindingContextAndMemberScopeForLibrarySources(decompiledDeclaration);
@@ -481,6 +486,11 @@ public class JetSourceNavigationHelper {
return getSourcePropertyOrFunction(decompiledFunction, new FunctionNavigationStrategy()); return getSourcePropertyOrFunction(decompiledFunction, new FunctionNavigationStrategy());
} }
@TestOnly
static void setForceResolve(boolean forceResolve) {
JetSourceNavigationHelper.forceResolve = forceResolve;
}
private interface NavigationStrategy<Decl extends JetNamedDeclaration, Descr extends CallableDescriptor> { private interface NavigationStrategy<Decl extends JetNamedDeclaration, Descr extends CallableDescriptor> {
@NotNull @NotNull
Class<Decl> getDeclarationClass(); Class<Decl> getDeclarationClass();
@@ -84,6 +84,12 @@ public class NavigateToLibrarySourceTest extends AbstractNavigateToLibraryTest {
userFile = LocalFileSystem.getInstance().findFileByPath(TEST_DATA_PATH + "/usercode/" + getTestName(false) + ".kt"); userFile = LocalFileSystem.getInstance().findFileByPath(TEST_DATA_PATH + "/usercode/" + getTestName(false) + ".kt");
assertNotNull(userFile); assertNotNull(userFile);
checkAnnotatedLibraryCode(false);
checkAnnotatedLibraryCode(true);
}
private void checkAnnotatedLibraryCode(boolean forceResolve) {
JetSourceNavigationHelper.setForceResolve(forceResolve);
String actualCode = getActualAnnotatedLibraryCode(); String actualCode = getActualAnnotatedLibraryCode();
String expectedCode = getExpectedAnnotatedLibraryCode(); String expectedCode = getExpectedAnnotatedLibraryCode();
assertSameLines(expectedCode, actualCode); assertSameLines(expectedCode, actualCode);