From f567f9d2f853a10dd81b7a79fa736c918e7b172c Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 24 Feb 2016 11:55:02 +0100 Subject: [PATCH] IDEA-152033 Suggest current class for Class parameter (for logging-related stuff) --- .../com/intellij/codeInsight/ExpectedTypesProvider.java | 3 ++- .../smartTypeSorting/GetWildcardFactoryLogger.java | 7 +++++++ .../completion/SmartTypeCompletionOrderingTest.groovy | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completion/smartTypeSorting/GetWildcardFactoryLogger.java diff --git a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java index 656bae7f13e5..8dc961710f3a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java @@ -1154,7 +1154,8 @@ public class ExpectedTypesProvider { } } } - if ("Logger".equals(containingClass.getName()) || "Log".equals(containingClass.getName())) { + String className = containingClass.getName(); + if (className != null && className.startsWith("Log")) { if (parameterType instanceof PsiClassType) { PsiType typeArg = PsiUtil.substituteTypeParameter(parameterType, CommonClassNames.JAVA_LANG_CLASS, 0, true); if (typeArg != null && TypeConversionUtil.erasure(typeArg).equalsToText(CommonClassNames.JAVA_LANG_OBJECT)) { diff --git a/java/java-tests/testData/codeInsight/completion/smartTypeSorting/GetWildcardFactoryLogger.java b/java/java-tests/testData/codeInsight/completion/smartTypeSorting/GetWildcardFactoryLogger.java new file mode 100644 index 000000000000..29fe44c0d9e5 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartTypeSorting/GetWildcardFactoryLogger.java @@ -0,0 +1,7 @@ +public class Foo { + public static final Logger LOG = LoggerFactory.getLogger() +} + +class LoggerFactory { + static Logger getLogger(Class c) {} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy index 58e00170c790..2f6a6afad175 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy @@ -324,6 +324,9 @@ public class SmartTypeCompletionOrderingTest extends CompletionSortingTestCase { public void testGetWildcardLogger() { checkPreferredItems 0, 'Foo.class', 'forName' } + public void testGetWildcardFactoryLogger() { + checkPreferredItems 0, 'Foo.class', 'forName' + } public void testPreferLocalWildcardClassOverObject() { checkPreferredItems 0, 'type', 'Object.class' }