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