Skip to content

Commit 42a6f36

Browse files
authored
Add a test for Map.merge()
1 parent 351fd30 commit 42a6f36

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

checker/tests/nullness/MapMerge.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class MapMerge {
66
public static void main(String[] args) {
77
Map<String, String> map = new HashMap<>();
88
map.put("k", "v");
9-
// :: error: (return)
9+
// :: error: (dereference.of.nullable)
1010
map.merge("k", "v", (a, b) -> null).toString();
1111
}
1212

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
import org.checkerframework.checker.nullness.qual.Nullable;
4+
5+
class MyKey {}
6+
7+
class Issue7082a {
8+
9+
void method(MyKey key) {
10+
Map<MyKey, Integer> a = new HashMap<>();
11+
a.merge(
12+
key,
13+
-1,
14+
(Integer old, Integer v) -> {
15+
if (old + v == 0) {
16+
return null;
17+
} else {
18+
return old + v;
19+
}
20+
});
21+
}
22+
}
23+
24+
class MapMerge7082 {
25+
26+
void method(MyKey key) {
27+
Map<MyKey, Integer> a = new HashMap<>();
28+
a.merge(key, -1, MapMerge7082::mergeFunction);
29+
}
30+
31+
private static @Nullable Integer mergeFunction(Integer old, Integer v) {
32+
if (old + v == 0) {
33+
return null;
34+
} else {
35+
return old + v;
36+
}
37+
}
38+
}

0 commit comments

Comments
 (0)