aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/frontends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-28 11:53:28 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-28 11:53:28 +0000
commit8eda91c53e2df91b7b8022b80476513ac8116955 (patch)
treeb9973720d615c3c32aa62ff05a1f8727d8ea8e51 /src/main/java/org/zwobble/couscous/frontends
parent4330f93c6e694b546b7f3e7bfd2e18b93b15fbab (diff)
Allow reading of methods without body
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java18
1 files changed, 11 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 4eb7c7d..ccc37e0 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -114,7 +114,7 @@ public class JavaReader {
functionalInterfaceMethod.getName(),
lambda.getFormalArguments(),
typeOf(functionalInterfaceMethod.getReturnType()),
- lambda.getBody());
+ Optional.of(lambda.getBody()));
return new AnonymousClass(
superTypesAndSelf(functionalInterfaceMethod.getDeclaringClass()),
@@ -286,12 +286,12 @@ public class JavaReader {
List<AnnotationNode> annotations = readAnnotations(method);
Optional<TypeName> returnType = Optional.ofNullable(method.getReturnType2())
.map(JavaTypes::typeOf);
- List<StatementNode> body = readBody(scope, method, returnType);
+ Optional<List<StatementNode>> body = readBody(scope, method, returnType);
if (method.isConstructor()) {
builder.constructor(constructor(
formalArguments,
- body));
+ body.get()));
} else {
builder.addMethod(MethodNode.method(
annotations,
@@ -317,10 +317,14 @@ public class JavaReader {
return eagerMap(parameters, parameter -> JavaVariableDeclarationReader.read(scope, parameter));
}
- private List<StatementNode> readBody(Scope scope, MethodDeclaration method, Optional<TypeName> returnType) {
- @SuppressWarnings("unchecked")
- List<Statement> statements = method.getBody().statements();
- return readStatements(scope, statements, returnType);
+ private Optional<List<StatementNode>> readBody(Scope scope, MethodDeclaration method, Optional<TypeName> returnType) {
+ if (method.getBody() == null) {
+ return Optional.empty();
+ } else {
+ @SuppressWarnings("unchecked")
+ List<Statement> statements = method.getBody().statements();
+ return Optional.of(readStatements(scope, statements, returnType));
+ }
}
List<StatementNode> readStatement(Scope scope, Statement statement) {