From 8328a423de9aad4f1219243763d6d5d5e6f1e1de Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 6 Oct 2015 13:50:25 +0100 Subject: Simplify argument generation --- .../backends/python/PythonCodeGenerator.java | 24 ++++++++-------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java index be24996..1065f65 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java @@ -180,6 +180,11 @@ public class PythonCodeGenerator { return expression.accept(EXPRESSION_GENERATOR); } + private static List generateExpressions(Iterable expressions) { + return ImmutableList.copyOf( + Iterables.transform(expressions, PythonCodeGenerator::generateExpression)); + } + private static final ExpressionGenerator EXPRESSION_GENERATOR = new ExpressionGenerator(); private static class ExpressionGenerator implements ExpressionNodeMapper { @@ -209,7 +214,7 @@ public class PythonCodeGenerator { @Override public PythonExpressionNode visit(MethodCallNode methodCall) { val receiver = generateExpression(methodCall.getReceiver()); - val arguments = generateArguments(methodCall); + val arguments = generateExpressions(methodCall.getArguments()); if (isPrimitive(methodCall.getReceiver())) { val primitiveMethodGenerator = PrimitiveMethods.getPrimitiveMethod( methodCall.getReceiver().getType(), @@ -230,10 +235,8 @@ public class PythonCodeGenerator { val methodReference = pythonAttributeAccess( classReference, staticMethodCall.getMethodName()); - - val arguments = staticMethodCall.getArguments().stream() - .map(PythonCodeGenerator::generateExpression) - .collect(Collectors.toList()); + + val arguments = generateExpressions(staticMethodCall.getArguments()); return pythonCall(methodReference, arguments); } @@ -242,19 +245,10 @@ public class PythonCodeGenerator { public PythonExpressionNode visit(ConstructorCallNode call) { val className = call.getType(); val classReference = pythonVariableReference(className.getSimpleName()); - - val arguments = call.getArguments().stream() - .map(PythonCodeGenerator::generateExpression) - .collect(Collectors.toList()); + val arguments = generateExpressions(call.getArguments()); return pythonCall(classReference, arguments); } - - private List generateArguments(MethodCallNode methodCall) { - return methodCall.getArguments().stream() - .map(PythonCodeGenerator::generateExpression) - .collect(Collectors.toList()); - } } private static boolean isPrimitive(ExpressionNode value) { -- cgit v1.2.3