diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-04 23:28:22 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-04 23:28:22 +0000 |
| commit | 75b69c7f4e7ed84f82c549e36a3928a48720cc26 (patch) | |
| tree | d400967b67b7e6ec7c922a586ae14c6cda35f6ed /src/main/java/org/zwobble/couscous/backends/python | |
| parent | bb0b36b86f841ec6340fe6e727ed2ea9db1c2d64 (diff) | |
Move type coercion decisions into the backends
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java | 16 |
1 files changed, 16 insertions, 0 deletions
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 913b1b7..ada7dea 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java @@ -261,6 +261,22 @@ public class PythonCodeGenerator { public PythonExpressionNode visit(FieldAccessNode fieldAccess) { return pythonAttributeAccess(generateExpression(fieldAccess.getLeft()), fieldAccess.getFieldName()); } + + @Override + public PythonExpressionNode visit(TypeCoercionNode typeCoercion) { + PythonExpressionNode value = generateExpression(typeCoercion.getExpression()); + if (typeCoercion.isIntegerBox()) { + return internalMethod("boxInt", asList(value)); + } else if (typeCoercion.isIntegerUnbox()) { + return internalMethod("unboxInt", asList(value)); + } else { + return value; + } + } + + private PythonExpressionNode internalMethod(String name, List<PythonExpressionNode> arguments) { + return pythonCall(pythonAttributeAccess(pythonVariableReference("_couscous"), name), arguments); + } } private static boolean isPrimitive(ExpressionNode value) { |
