diff --git a/java/java-tests/testData/codeInsight/completion/normal/LowercaseDoesNotMatchUnderscore.java b/java/java-tests/testData/codeInsight/completion/normal/LowercaseDoesNotMatchUnderscore.java new file mode 100644 index 000000000000..a1bd84498768 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/LowercaseDoesNotMatchUnderscore.java @@ -0,0 +1,7 @@ +class X { + { + int _Web; + int web; + wex + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/DispreferUnderscoredCaseMismatch.java b/java/java-tests/testData/codeInsight/completion/normalSorting/DispreferUnderscoredCaseMismatch.java deleted file mode 100644 index db60d1c670e5..000000000000 --- a/java/java-tests/testData/codeInsight/completion/normalSorting/DispreferUnderscoredCaseMismatch.java +++ /dev/null @@ -1,5 +0,0 @@ -class Zoo { - void zoo(String fooBar, String __FOO_BAR) { - foo - } -} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy index ca5c1f9e67fc..46257504acf2 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -443,10 +443,6 @@ interface TxANotAnno {} checkPreferredItems(0, 'fooBar', '_fooBar', 'FooBar') } - void testDispreferUnderscoredCaseMismatch() { - checkPreferredItems(0, 'fooBar', '__FOO_BAR') - } - void testStatisticsMattersOnNextCompletion() { configureByFile(getTestName(false) + ".java") myFixture.completeBasic() diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy index acb27fe735c7..58b6ba2a6a2e 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy @@ -1821,4 +1821,9 @@ class Bar { checkResult() } + void testLowercaseDoesNotMatchUnderscore() { + configure() + assert myFixture.lookupElementStrings == ['web'] + } + } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java index 790ad4a886a4..73923b6e395c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java @@ -62,6 +62,12 @@ public class CamelHumpMatcher extends PrefixMatcher { @Override public boolean prefixMatches(@NotNull final String name) { + if (name.startsWith("_") && + myPrefix.length() > 0 && Character.isLetter(myPrefix.charAt(0)) && + CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE == CodeInsightSettings.FIRST_LETTER) { + return false; + } + return myMatcher.matches(name); } diff --git a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java index 39f3698a7e89..b99354a514ba 100644 --- a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java +++ b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java @@ -23,7 +23,6 @@ import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.testFramework.PsiTestUtil; -import com.jetbrains.python.documentation.PyDocumentationSettings; import com.jetbrains.python.documentation.docstrings.DocStringFormat; import com.jetbrains.python.fixtures.PyTestCase; import com.jetbrains.python.psi.LanguageLevel; @@ -1068,7 +1067,7 @@ public class PythonCompletionTest extends PyTestCase { "@six.add_metaclass(M)\n" + "class C(object):\n" + " def foo(self):\n" + - " C.ba()"); + " C.bax()"); assertNotNull(suggested); assertContainsElements(suggested, "baz"); @@ -1082,7 +1081,7 @@ public class PythonCompletionTest extends PyTestCase { "@a_m(M)\n" + "class C(object):\n" + " def foo(self):\n" + - " C.ba()"); + " C.bax()"); assertNotNull(suggested); assertContainsElements(suggested, "baz");