From 5793ec77ed7c9278ea56c58bbbbb2d3e3b5323d5 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 9 Feb 2016 11:02:04 +0100 Subject: [PATCH] retrieve collection type from capture in foreach stmt (IDEA-151406) --- .../daemon/impl/analysis/JavaGenericsUtil.java | 3 +++ ...eachOverCapturedWildcardWithCollectionUpperBound.java | 9 +++++++++ .../daemon/lambda/GenericsHighlighting8Test.java | 4 ++++ 3 files changed, 16 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/ForeachOverCapturedWildcardWithCollectionUpperBound.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaGenericsUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaGenericsUtil.java index 87fe026926c0..26169b7bc063 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaGenericsUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaGenericsUtil.java @@ -297,6 +297,9 @@ public class JavaGenericsUtil { } } } + if (type instanceof PsiCapturedWildcardType) { + return getCollectionItemType(((PsiCapturedWildcardType)type).getUpperBound(), scope); + } return null; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/ForeachOverCapturedWildcardWithCollectionUpperBound.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/ForeachOverCapturedWildcardWithCollectionUpperBound.java new file mode 100644 index 000000000000..ace72700d749 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/ForeachOverCapturedWildcardWithCollectionUpperBound.java @@ -0,0 +1,9 @@ + +import java.util.Collection; +import java.util.Map; + +class Test { + private void foo(Map.Entry> entry) { + for (String propertyName : entry.getValue()) {} + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java index a22ad41d0197..9d6312fba283 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java @@ -958,4 +958,8 @@ public class GenericsHighlighting8Test extends LightDaemonAnalyzerTestCase { public void testRetrieveInferenceErrorsFromContainingCallsIfCurrentDoesNotProvideAny() throws Exception { doTest(); } + + public void testForeachOverCapturedWildcardWithCollectionUpperBound() throws Exception { + doTest(); + } }