From 6271698a643d69045c217143d54a066e9b88d736 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 20 Mar 2017 13:09:34 +0100 Subject: [PATCH] IDEA-169818 Completion for first argument of Map.getOrDefault should be same as for Map.get --- .../com/intellij/codeInsight/ExpectedTypesProvider.java | 2 +- .../codeInsight/completion/smartType/MapGetOrDefault.java | 8 ++++++++ .../codeInsight/completion/SmartType18CompletionTest.java | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completion/smartType/MapGetOrDefault.java diff --git a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java index 8f684a61093b..6adc551cd93e 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypesProvider.java @@ -1130,7 +1130,7 @@ public class ExpectedTypesProvider { psiClass -> getTypeParameterValue(psiClass, containingClass, substitutor, 0)); if (type != null) return type; } - if ("containsKey".equals(name) || "remove".equals(name) || "get".equals(name) || "containsValue".equals(name)) { + if ("containsKey".equals(name) || "remove".equals(name) || "get".equals(name) || "getOrDefault".equals(name) || "containsValue".equals(name)) { final PsiType type = checkMethod(method, CommonClassNames.JAVA_UTIL_MAP, psiClass -> getTypeParameterValue(psiClass, containingClass, substitutor, name.equals("containsValue") ? 1 : 0)); if (type != null) return type; diff --git a/java/java-tests/testData/codeInsight/completion/smartType/MapGetOrDefault.java b/java/java-tests/testData/codeInsight/completion/smartType/MapGetOrDefault.java new file mode 100644 index 000000000000..0c4146555504 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/MapGetOrDefault.java @@ -0,0 +1,8 @@ +import java.util.concurrent.TimeUnit; +import java.util.*; + +public class SomeClass { + String com(Map map) { + return map.getOrDefault(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java index 1e294fca1397..a0e4e8224386 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java @@ -243,4 +243,9 @@ public void testConvertToObjectStream() { public void testUnboundTypeArgs() { doTest(); } public void testCallBeforeLambda() { doTest(false); } + + public void testMapGetOrDefault() { + configureByTestName(); + myFixture.assertPreferredCompletionItems(0, "TimeUnit.DAYS"); + } }