diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-27 22:24:04 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-27 22:24:04 +0100 |
| commit | 6aed29ed46535506b27aee8121ca56116356a2d9 (patch) | |
| tree | 879e9286c43d957430872385cdc87de80cf7b126 /src/main/java | |
| parent | f6c49ce6ffe91ba1f7ea143884fb800ad3be78bb (diff) | |
Read array creation nodes
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java index 4f08151..fcce1e1 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java @@ -73,6 +73,9 @@ public class JavaExpressionReader { case ASTNode.TYPE_LITERAL: return readTypeLiteral((TypeLiteral)expression); + case ASTNode.ARRAY_CREATION: + return readArrayCreation((ArrayCreation)expression); + case ASTNode.PARENTHESIZED_EXPRESSION: return readParenthesizedExpression((ParenthesizedExpression)expression); @@ -158,6 +161,16 @@ public class JavaExpressionReader { return literal(erasure(typeOf(expression.getType()))); } + private ExpressionNode readArrayCreation(ArrayCreation expression) { + if (expression.getType().getDimensions() != 1) { + throw new UnsupportedOperationException(); + } + Type elementType = typeOf(expression.getType().getElementType()); + @SuppressWarnings("unchecked") + List<Expression> expressions = expression.getInitializer().expressions(); + return array(elementType, eagerMap(expressions, element -> readExpression(elementType, element))); + } + private ExpressionNode readParenthesizedExpression(ParenthesizedExpression expression) { return readExpressionWithoutBoxing(expression.getExpression()); } |
