diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 2aa86657d248..2dcf31660cd1 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -620,7 +620,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh // Ignore if the type of the value which is being iterated over is not resolved yet final PsiType iteratedValueType = iteratedValue.getType(); - return iteratedValueType instanceof PsiPrimitiveType || PsiUtil.resolveClassInClassTypeOnly(iteratedValueType) != null; + return iteratedValueType == null || !PsiTypesUtil.hasUnresolvedComponents(iteratedValueType); } @Override diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/SimpleAvailability.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/SimpleAvailability.java index e5564aea584c..5d4a057c3bed 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/SimpleAvailability.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/SimpleAvailability.java @@ -71,4 +71,19 @@ class Main { for (String arg: iterableExistingHello) { } for (String arg: iterableUnresolvedWorld) {} } + + interface A {} + interface B {} + void test(Object x) { + java.util.Optional.of((A & B)x).ifPresent(valueOfAandB -> { + for(Object foo : valueOfAandB) { + System.out.println(foo); + } + }); + java.util.Optional.of((A & World)x).ifPresent(valueOfAandUnresolvedWorld -> { + for(Object foo : valueOfAandUnresolvedWorld) { + System.out.println(foo); + } + }); + } } \ No newline at end of file