aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-28 13:54:49 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-28 13:54:49 +0000
commiteee46d13e629c79f4acb60cc29aa773e2ed735c1 (patch)
tree643725918643a0c930d1e87d2d639b56af52bc83 /src/main/java/org/zwobble/couscous/ast
parent11247b4df9b3d882f396ac7eaabb275908c8c8f8 (diff)
Change method bodies to be optional
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/CallableNode.java8
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ConstructorNode.java2
-rw-r--r--src/main/java/org/zwobble/couscous/ast/MethodNode.java6
-rw-r--r--src/main/java/org/zwobble/couscous/ast/structure/NodeStructure.java3
4 files changed, 6 insertions, 13 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/CallableNode.java b/src/main/java/org/zwobble/couscous/ast/CallableNode.java
deleted file mode 100644
index 6d6fc7b..0000000
--- a/src/main/java/org/zwobble/couscous/ast/CallableNode.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.zwobble.couscous.ast;
-
-import java.util.List;
-
-public interface CallableNode extends Node {
- List<FormalArgumentNode> getArguments();
- List<StatementNode> getBody();
-}
diff --git a/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java b/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java
index fab931b..a25a993 100644
--- a/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java
@@ -6,7 +6,7 @@ import org.zwobble.couscous.ast.visitors.NodeTransformer;
import java.util.Collections;
import java.util.List;
-public class ConstructorNode implements CallableNode {
+public class ConstructorNode implements Node {
public static final ConstructorNode DEFAULT = constructor(Collections.emptyList(), Collections.emptyList());
public static ConstructorNode constructor(
diff --git a/src/main/java/org/zwobble/couscous/ast/MethodNode.java b/src/main/java/org/zwobble/couscous/ast/MethodNode.java
index 967b2b1..c201047 100644
--- a/src/main/java/org/zwobble/couscous/ast/MethodNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/MethodNode.java
@@ -11,7 +11,7 @@ import java.util.function.Function;
import static org.zwobble.couscous.util.ExtraLists.eagerMap;
-public class MethodNode implements CallableNode {
+public class MethodNode implements Node {
public static Builder staticMethod(String name) {
return builder(name).isStatic(true);
}
@@ -140,8 +140,8 @@ public class MethodNode implements CallableNode {
return returnType;
}
- public List<StatementNode> getBody() {
- return body.get();
+ public Optional<List<StatementNode>> getBody() {
+ return body;
}
public MethodSignature signature() {
diff --git a/src/main/java/org/zwobble/couscous/ast/structure/NodeStructure.java b/src/main/java/org/zwobble/couscous/ast/structure/NodeStructure.java
index 2424bbe..f1f37a6 100644
--- a/src/main/java/org/zwobble/couscous/ast/structure/NodeStructure.java
+++ b/src/main/java/org/zwobble/couscous/ast/structure/NodeStructure.java
@@ -3,6 +3,7 @@ package org.zwobble.couscous.ast.structure;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.visitors.NodeMapper;
+import java.util.Collection;
import java.util.function.Predicate;
import java.util.stream.Stream;
@@ -158,7 +159,7 @@ public class NodeStructure {
return concatStreams(
methodNode.getAnnotations().stream(),
methodNode.getArguments().stream(),
- methodNode.getBody().stream());
+ methodNode.getBody().map(Collection::stream).orElse(Stream.empty()));
}
@Override