diff options
author | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-02 18:10:13 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-02 18:10:13 +1000 |
commit | 27fcf37206591c774d79ec60de8d404ed83378ac (patch) | |
tree | 26e71761085a282bc9f31dad4f9624c86ea3aac4 /src/main/java/au/id/zancanaro/javacheck/RoseTree.java | |
parent | 140b4d41d695f32e75c785f6179430f677d244ae (diff) |
Fix up some static analysis warnings and improve @DataPoint detection
Diffstat (limited to 'src/main/java/au/id/zancanaro/javacheck/RoseTree.java')
-rw-r--r-- | src/main/java/au/id/zancanaro/javacheck/RoseTree.java | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/main/java/au/id/zancanaro/javacheck/RoseTree.java b/src/main/java/au/id/zancanaro/javacheck/RoseTree.java index 5a54d6f..c735b46 100644 --- a/src/main/java/au/id/zancanaro/javacheck/RoseTree.java +++ b/src/main/java/au/id/zancanaro/javacheck/RoseTree.java @@ -6,6 +6,7 @@ import java.util.*; import java.util.function.Function; import java.util.function.Predicate; +@SuppressWarnings("unused") public class RoseTree<T> { private final T value; private final Iterable<RoseTree<T>> children; @@ -49,14 +50,17 @@ public class RoseTree<T> { )); } - public static <T, R> RoseTree<R> zip(Function<List<T>, R> fn, RoseTree<T>[] trees) { - @SuppressWarnings("unchecked") - List<T> heads = new ArrayList(trees.length); + private static <T> List<T> makeHeadList(RoseTree<T>[] trees) { + List<T> heads = new ArrayList<>(trees.length); for (RoseTree<T> tree : trees) { heads.add(tree.getValue()); } + return heads; + } + + public static <T, R> RoseTree<R> zip(Function<List<T>, R> fn, RoseTree<T>[] trees) { return new RoseTree<>( - fn.apply(heads), + fn.apply(makeHeadList(trees)), () -> Iterators.mappingIterator( roses -> RoseTree.zip(fn, roses), RoseTree.permutations(trees))); @@ -76,13 +80,8 @@ public class RoseTree<T> { } public static <T, R> RoseTree<R> shrink(Function<List<T>, R> fn, RoseTree<T>[] trees) { - @SuppressWarnings("unchecked") - List<T> heads = new ArrayList(trees.length); - for (RoseTree<T> tree : trees) { - heads.add(tree.getValue()); - } return new RoseTree<>( - fn.apply(heads), + fn.apply(makeHeadList(trees)), () -> Iterators.mappingIterator( roses -> RoseTree.shrink(fn, roses), RoseTree.removeEach(trees))); |