From 33c0300acec2741dd2e9ebfdfc1e81f23036dcc8 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 21 Nov 2018 17:18:49 +0300 Subject: [PATCH] IDEA-CR-40095 RUBY-22288 IDEA-197952 Change regex to capture non-word character. Delete unnecessary non-capturing group. --- .../intellij/java/navigation/ChooseByNameTest.groovy | 11 +++++++++++ .../searcheverywhere/AbstractGotoSEContributor.java | 2 +- .../ide/util/gotoByName/ChooseByNamePopup.java | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy b/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy index 34283c77fccd..51cdf61f4647 100644 --- a/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy @@ -502,6 +502,17 @@ class Intf { assert gotoSymbol('start') == [m1] // works as usual for non-qualified patterns } + void "test colon in search end"() { + def foo = myFixture.addClass('class Foo { }') + assert gotoClass('Foo:') == [foo] + } + + void "test multi-word class name with only first letter of second word"() { + myFixture.addClass('class Foo { }') + def fooBar = myFixture.addClass('class FooBar { }') + assert gotoClass('Foo B') == [fooBar] + } + private List gotoClass(String text, boolean checkboxState = false) { return getPopupElements(new GotoClassModel2(project), text, checkboxState) } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/AbstractGotoSEContributor.java b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/AbstractGotoSEContributor.java index 414bed954b6c..fa312db3ab02 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/AbstractGotoSEContributor.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/AbstractGotoSEContributor.java @@ -37,7 +37,7 @@ public abstract class AbstractGotoSEContributor implements SearchEverywhereCo protected static final Pattern patternToDetectLinesAndColumns = Pattern.compile("(.+?)" + // name, non-greedy matching "(?::|@|,| |#|#L|\\?l=| on line | at line |:?\\(|:?\\[)" + // separator - "(\\d+)?(?:(?:\\D)(\\d+)?)?" + // line + column + "(\\d+)?(?:\\W(\\d+)?)?" + // line + column "[)\\]]?" // possible closing paren/brace ); protected static final Pattern patternToDetectAnonymousClasses = Pattern.compile("([\\.\\w]+)((\\$[\\d]+)*(\\$)?)"); diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java index cba76e575e78..f16f840dcf99 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java @@ -317,7 +317,7 @@ public class ChooseByNamePopup extends ChooseByNameBase implements ChooseByNameP private static final Pattern patternToDetectLinesAndColumns = Pattern.compile("(.+?)" + // name, non-greedy matching "(?::|@|,| |#|#L|\\?l=| on line | at line |:?\\(|:?\\[)" + // separator - "(\\d+)?(?:(?:\\D)(\\d+)?)?" + // line + column + "(\\d+)?(?:\\W(\\d+)?)?" + // line + column "[)\\]]?" // possible closing paren/brace ); public static final Pattern patternToDetectAnonymousClasses = Pattern.compile("([\\.\\w]+)((\\$[\\d]+)*(\\$)?)");