diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-28 11:53:28 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-28 11:53:28 +0000 |
| commit | 8eda91c53e2df91b7b8022b80476513ac8116955 (patch) | |
| tree | b9973720d615c3c32aa62ff05a1f8727d8ea8e51 /src/main/java/org/zwobble/couscous/frontends | |
| parent | 4330f93c6e694b546b7f3e7bfd2e18b93b15fbab (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.java | 18 |
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) { |
