diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-10 14:37:38 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-10 14:37:38 +0100 |
| commit | eadefe2a6b7c06905f90cb6598d877e15a10b7de (patch) | |
| tree | 0fe7297b6880951a188ad289692c6c6851c0a47b /src/main/java/org | |
| parent | 18c923db3dce4d6e59b212e2a19f0d087a899622 (diff) | |
Add parsing of Java static method calls
Diffstat (limited to 'src/main/java/org')
| -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) { |
