diff options
Diffstat (limited to 'src/main/java/org/zwobble')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 22 |
1 files changed, 15 insertions, 7 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 a9cef4b..77002d9 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -20,6 +20,7 @@ import org.zwobble.couscous.ast.LiteralNode; import org.zwobble.couscous.ast.MethodCallNode; import org.zwobble.couscous.ast.ReturnNode; import org.zwobble.couscous.ast.StatementNode; +import org.zwobble.couscous.ast.StaticMethodCallNode; import org.zwobble.couscous.ast.TypeName; import com.google.common.collect.Lists; @@ -101,13 +102,20 @@ public class JavaReader { @SuppressWarnings("unchecked") private static ExpressionNode readMethodInvocation(MethodInvocation expression) { - return MethodCallNode.methodCall( - readExpression(expression.getExpression()), - expression.getName().getIdentifier(), - Lists.transform( - (List<Expression>)expression.arguments(), - JavaReader::readExpression), - TypeName.of(expression.resolveTypeBinding().getQualifiedName())); + val methodName = expression.getName().getIdentifier(); + val arguments = Lists.transform( + (List<Expression>)expression.arguments(), + JavaReader::readExpression); + if (expression.getExpression().getNodeType() == ASTNode.SIMPLE_NAME) { + val receiver = expression.getExpression().resolveTypeBinding(); + return StaticMethodCallNode.staticMethodCall(receiver.getQualifiedName(), methodName, arguments); + } else { + return MethodCallNode.methodCall( + readExpression(expression.getExpression()), + methodName, + arguments, + TypeName.of(expression.resolveTypeBinding().getQualifiedName())); + } } private static String generateClassName(CompilationUnit ast) { |
