diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-20 19:00:49 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-20 19:00:49 +0100 |
| commit | 4054a250df414bb2c756d12b133aaaa8cd6bbce3 (patch) | |
| tree | c7c1951aa372a3d1846cb06dfa1fc3f721c0e6ef /src/main/java | |
| parent | 4655cf0dc523484a05f4b648fd87ff9fdd0605ca (diff) | |
Java: read formal method arguments
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java | 8 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 13 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java index b4ddad9..7466f07 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java @@ -5,6 +5,9 @@ import java.util.function.Function; import com.google.common.collect.ImmutableList; +import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; +import static org.zwobble.couscous.ast.VariableDeclaration.var; + public class ClassNodeBuilder { private final TypeName name; private final ImmutableList.Builder<FieldDeclarationNode> fields; @@ -85,6 +88,11 @@ public class ClassNodeBuilder { return ThisReferenceNode.thisReference(name); } + public MethodBuilder<T> argument(String id, String name, TypeName type) { + arguments.add(formalArg(var(id, name, type))); + return this; + } + public MethodBuilder<T> argument(FormalArgumentNode argument) { arguments.add(argument); return this; 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 b8a3b62..22d42ab 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -22,6 +22,7 @@ import org.eclipse.jdt.core.dom.Modifier; import org.eclipse.jdt.core.dom.NumberLiteral; import org.eclipse.jdt.core.dom.ReturnStatement; import org.eclipse.jdt.core.dom.SimpleName; +import org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.eclipse.jdt.core.dom.Statement; import org.eclipse.jdt.core.dom.StringLiteral; import org.eclipse.jdt.core.dom.ThisExpression; @@ -102,6 +103,14 @@ public class JavaReader { method.getName().getIdentifier(), true, builder -> { + for (Object parameterObject : method.parameters()) { + val parameter = (SingleVariableDeclaration)parameterObject; + builder.argument( + parameter.resolveBinding().getKey(), + parameter.getName().getIdentifier(), + typeOf(parameter.resolveBinding())); + } + for (Object statement : method.getBody().statements()) { for (StatementNode intermediateStatement : readStatement((Statement)statement)) { builder.statement(intermediateStatement); @@ -282,6 +291,10 @@ public class JavaReader { return typeOf(expression.resolveTypeBinding()); } + private static TypeName typeOf(IVariableBinding variableBinding) { + return typeOf(variableBinding.getType()); + } + private static TypeName typeOf(ITypeBinding typeBinding) { return TypeName.of(typeBinding.getQualifiedName()); } |
