diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-01 11:10:26 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-01 20:58:57 +0100 |
| commit | e07bb984bd446f9f9ddd469c6458c5de6000097b (patch) | |
| tree | 68a8f4658d56f2bf910e0fd0b9c58e28312fe853 /src/main/java | |
| parent | 6ae81cba8fad9973a53a15e2fbf67835899dc3bc (diff) | |
Ensure unique generated argument names
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 2 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/util/ExtraLists.java | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java index e6dbe50..fc93345 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -414,7 +414,7 @@ public class JavaReader { overrides(method), override -> !override.equals(methodNode.signature())), override -> { - List<FormalArgumentNode> arguments = eagerMap(override.getArguments(), argument -> scope.formalArgument("arg", argument)); + List<FormalArgumentNode> arguments = eagerMapWithIndex(override.getArguments(), (argument, index) -> scope.formalArgument("arg" + index, argument)); MethodCallNode call = MethodCallNode.methodCall( thisReference(type), methodNode.getName(), diff --git a/src/main/java/org/zwobble/couscous/util/ExtraLists.java b/src/main/java/org/zwobble/couscous/util/ExtraLists.java index 8485b02..3ee0ce3 100644 --- a/src/main/java/org/zwobble/couscous/util/ExtraLists.java +++ b/src/main/java/org/zwobble/couscous/util/ExtraLists.java @@ -85,6 +85,24 @@ public class ExtraLists { .collect(Collectors.toList()); } + public static <T, R> List<R> eagerMapWithIndex( + Iterable<T> iterable, + FunctionWithIndex<T, R> function) + { + ImmutableList.Builder<R> builder = ImmutableList.builder(); + int index = 0; + Iterator<T> iterator = iterable.iterator(); + while (iterator.hasNext()) { + builder.add(function.apply(iterator.next(), index)); + index++; + } + return builder.build(); + } + + public interface FunctionWithIndex<T, R> { + R apply(T value, int index); + } + public static <T1, T2, R> List<R> eagerMap( Iterable<T1> iterable1, Iterable<T2> iterable2, |
