From beab844d0dbceebccaa49760adef34521e10f2df Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Thu, 25 Apr 2024 16:22:50 -0700 Subject: [PATCH] handle forEach on Iterable --- .../handlers/SynchronousCallbackHandler.java | 3 +++ .../com/uber/nullaway/SyncLambdasTests.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/SynchronousCallbackHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/SynchronousCallbackHandler.java index 8a96e7fb35..2ea567e04f 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/SynchronousCallbackHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/SynchronousCallbackHandler.java @@ -33,6 +33,9 @@ public class SynchronousCallbackHandler extends BaseNoOpHandler { MethodRef.methodRef( "java.util.Map", "forEach(java.util.function.BiConsumer)"), + 0, + MethodRef.methodRef( + "java.lang.Iterable", "forEach(java.util.function.Consumer)"), 0), "removeIf", ImmutableMap.of( diff --git a/nullaway/src/test/java/com/uber/nullaway/SyncLambdasTests.java b/nullaway/src/test/java/com/uber/nullaway/SyncLambdasTests.java index 08ada1d2d7..7585011713 100644 --- a/nullaway/src/test/java/com/uber/nullaway/SyncLambdasTests.java +++ b/nullaway/src/test/java/com/uber/nullaway/SyncLambdasTests.java @@ -90,6 +90,30 @@ public void otherForEach() { .doTest(); } + @Test + public void forEachOnIterable() { + defaultCompilationHelper + .addSourceLines( + "Test.java", + "package com.uber;", + "import java.util.List;", + "import java.util.ArrayList;", + "import org.jspecify.annotations.Nullable;", + "public class Test {", + " private @Nullable Object f;", + " public void test1() {", + " if (this.f == null) {", + " throw new IllegalArgumentException();", + " }", + " List l = new ArrayList<>();", + " l.forEach(v -> System.out.println(v + this.f.toString()));", + " Iterable l2 = l;", + " l2.forEach(v -> System.out.println(v + this.f.toString()));", + " }", + "}") + .doTest(); + } + @Test public void removeIf() { defaultCompilationHelper