Skip to content

Commit

Permalink
Qualifier of workspace symbol search should be wildcard search.
Browse files Browse the repository at this point in the history
- A search term of 'foo.bar' where 'foo' is the qualifier should search
  for any qualifier matching '*foo*'

Signed-off-by: Roland Grunberg <[email protected]>
  • Loading branch information
rgrunber committed Apr 10, 2024
1 parent ffe1aa9 commit 710463a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,8 @@ public static List<SymbolInformation> search(String query, int maxResults, Strin
if (qualIndex != -1) {
qualifierName = tQuery.substring(0, qualIndex);
typeName = tQuery.substring(qualIndex + 1);
qualifierMatchRule = SearchPattern.R_CAMELCASE_MATCH;
if (qualifierName.contains("*") || qualifierName.contains("?")) {
qualifierMatchRule = SearchPattern.R_PATTERN_MATCH;
if (!qualifierName.contains("*") && !qualifierName.contains("?")) {
qualifierName = String.format("*%s*", qualifierName);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public void testProjectSearch() {
public void testCamelCaseSearch() {
List<SymbolInformation> results = WorkspaceSymbolHandler.search("NPE", monitor);
assertNotNull(results);
assertEquals("NullPointerException", results.get(0).getName());
assertTrue(results.stream().anyMatch(s -> s.getName().equals("NullPointerException")));

results = WorkspaceSymbolHandler.search("HaMa", monitor);
String className = "HashMap";
Expand Down Expand Up @@ -201,6 +201,17 @@ public void testSearchAllTypesOfPackage() {
assertTrue(results.stream().anyMatch(s -> "Exception".equals(s.getName()) && "java.lang".equals(s.getContainerName())));
}

@Test
public void testSearchPartialPackage() {
List<SymbolInformation> results = WorkspaceSymbolHandler.search("util.Array", monitor);
assertTrue(results.size() > 1);
assertTrue(results.stream().anyMatch(s -> s.getName().equals("ArrayList") && s.getContainerName().equals("java.util")));

results = WorkspaceSymbolHandler.search("util.Pattern", monitor);
assertTrue(results.size() > 1);
assertTrue(results.stream().anyMatch(s -> s.getName().equals("Pattern") && s.getContainerName().equals("java.util.regex")));
}

@Test
public void testSearchWithoutDuplicate() {
List<SymbolInformation> results = WorkspaceSymbolHandler.search("*", monitor);
Expand Down

0 comments on commit 710463a

Please sign in to comment.