Don't list symbols from test data in "Go to symbol"

#KT-4094 Fixed
This commit is contained in:
Alexander Udalov
2014-07-25 18:28:14 +04:00
parent 9c58cb9f31
commit 1168cf62bf
7 changed files with 82 additions and 12 deletions
@@ -47,11 +47,8 @@ public class JetGotoSymbolContributor implements ChooseByNameContributor {
public NavigationItem[] getItemsByName(String name, String pattern, Project project, boolean includeNonProjectItems) {
GlobalSearchScope scope = includeNonProjectItems ? GlobalSearchScope.allScope(project) : GlobalSearchScope.projectScope(project);
Collection<? extends NavigationItem> functions = StubIndex.getInstance().get(
JetFunctionShortNameIndex.getInstance().getKey(), name, project, scope);
Collection<? extends NavigationItem> properties = StubIndex.getInstance().get(
JetPropertyShortNameIndex.getInstance().getKey(), name, project, scope);
Collection<? extends NavigationItem> functions = JetFunctionShortNameIndex.getInstance().get(name, project, scope);
Collection<? extends NavigationItem> properties = JetPropertyShortNameIndex.getInstance().get(name, project, scope);
List<NavigationItem> items = new ArrayList<NavigationItem>(Collections2.filter(functions, Predicates.notNull()));
items.addAll(properties);
@@ -0,0 +1,5 @@
// RUNTIME_WITH_SOURCES
// CHECK_BOX
// SEARCH_TEXT: arrayListOf
// REF: (in kotlin).arrayListOf(T)
// REF: (in kotlin.KotlinPackage).arrayListOf(T...)
@@ -0,0 +1,4 @@
// RUNTIME
// CHECK_BOX
// SEARCH_TEXT: arrayListOf
// REF: (in kotlin.KotlinPackage).arrayListOf(T...)
@@ -0,0 +1,36 @@
// RUNTIME_WITH_SOURCES
// CHECK_BOX
// SEARCH_TEXT: joinToString
// REF: (for Array<out T> in kotlin).joinToString(String,String,String,Int,String)
// REF: (for BooleanArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for ByteArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for CharArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for DoubleArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for FloatArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for IntArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for Iterable<T> in kotlin).joinToString(String,String,String,Int,String)
// REF: (for LongArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for ShortArray in kotlin).joinToString(String,String,String,Int,String)
// REF: (for Stream<T> in kotlin).joinToString(String,String,String,Int,String)
// REF: (in kotlin.KotlinPackage).joinToString$default(Iterable, String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(Object[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(Stream, String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(boolean[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(byte[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(char[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(double[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(float[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(int[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(long[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString$default(short[], String, String, String, int, String, int)
// REF: (in kotlin.KotlinPackage).joinToString(Iterable<? extends T>, String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(Stream<? extends T>, String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(T[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(boolean[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(byte[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(char[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(double[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(float[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(int[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(long[], String, String, String, int, String)
// REF: (in kotlin.KotlinPackage).joinToString(short[], String, String, String, int, String)
@@ -84,6 +84,9 @@ public abstract class JetLightCodeInsightFixtureTestCase extends LightCodeInsigh
else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME")) {
return JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE;
}
else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME_WITH_SOURCES")) {
return ProjectDescriptorWithStdlibSources.INSTANCE;
}
else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "JS")) {
return JetStdJSProjectDescriptor.INSTANCE;
}
@@ -24,9 +24,10 @@ import com.intellij.ide.util.gotoByName.GotoClassModel2;
import com.intellij.ide.util.gotoByName.GotoSymbolModel2;
import com.intellij.lang.Language;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.testFramework.UsefulTestCase;
import kotlin.Function1;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.InTextDirectivesUtils;
@@ -42,12 +43,12 @@ import java.util.List;
public abstract class AbstractKotlinGotoTest extends JetLightCodeInsightFixtureTestCase {
protected void doSymbolTest(String path) {
myFixture.configureByFile(path);
assertGotoSymbol(new GotoSymbolModel2(getProject()), getProject(), myFixture.getEditor());
assertGotoSymbol(new GotoSymbolModel2(getProject()), myFixture.getEditor());
}
protected void doClassTest(String path) {
myFixture.configureByFile(path);
assertGotoSymbol(new GotoClassModel2(getProject()), getProject(), myFixture.getEditor());
assertGotoSymbol(new GotoClassModel2(getProject()), myFixture.getEditor());
}
private String dirPath = null;
@@ -77,13 +78,22 @@ public abstract class AbstractKotlinGotoTest extends JetLightCodeInsightFixtureT
return getTestName(true) + ".kt";
}
private static void assertGotoSymbol(FilteringGotoByModel<Language> model, @NotNull Project project, @NotNull Editor editor) {
List<String> searchTextList = InTextDirectivesUtils.findListWithPrefixes(editor.getDocument().getText(), "// SEARCH_TEXT:");
private static void assertGotoSymbol(@NotNull FilteringGotoByModel<Language> model, @NotNull Editor editor) {
String documentText = editor.getDocument().getText();
List<String> searchTextList = InTextDirectivesUtils.findListWithPrefixes(documentText, "// SEARCH_TEXT:");
Assert.assertFalse("There's no search text in test data file given. Use '// SEARCH_TEXT:' directive",
searchTextList.isEmpty());
List<String> expectedReferences = InTextDirectivesUtils.findListWithPrefixes(editor.getDocument().getText(), "// REF:");
boolean enableCheckbox = InTextDirectivesUtils.isDirectiveDefined(editor.getDocument().getText(), "// CHECK_BOX");
List<String> expectedReferences = KotlinPackage.map(
InTextDirectivesUtils.findLinesWithPrefixesRemoved(documentText, "// REF:"),
new Function1<String, String>() {
@Override
public String invoke(String input) {
return input.trim();
}
}
);
boolean enableCheckbox = InTextDirectivesUtils.isDirectiveDefined(documentText, "// CHECK_BOX");
String searchText = searchTextList.get(0);
@@ -101,6 +101,21 @@ public class KotlinGotoTestGenerated extends AbstractKotlinGotoTest {
doSymbolTest("idea/testData/navigation/gotoSymbol/properties.kt");
}
@TestMetadata("stdLibArrayListOf.kt")
public void testStdLibArrayListOf() throws Exception {
doSymbolTest("idea/testData/navigation/gotoSymbol/stdLibArrayListOf.kt");
}
@TestMetadata("stdLibArrayListOfNoSources.kt")
public void testStdLibArrayListOfNoSources() throws Exception {
doSymbolTest("idea/testData/navigation/gotoSymbol/stdLibArrayListOfNoSources.kt");
}
@TestMetadata("stdLibJoinToString.kt")
public void testStdLibJoinToString() throws Exception {
doSymbolTest("idea/testData/navigation/gotoSymbol/stdLibJoinToString.kt");
}
}
public static Test suite() {