From eadefe2a6b7c06905f90cb6598d877e15a10b7de Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 10 Oct 2015 14:37:38 +0100 Subject: Add parsing of Java static method calls --- .../couscous/frontends/java/JavaReader.java | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/main/java') 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.arguments(), - JavaReader::readExpression), - TypeName.of(expression.resolveTypeBinding().getQualifiedName())); + val methodName = expression.getName().getIdentifier(); + val arguments = Lists.transform( + (List)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) { -- cgit v1.2.3