aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-28 14:14:47 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-28 14:16:16 +0000
commit74c98ef82b94abe7fe7548766471b8e43c149504 (patch)
tree075d6b370677cdba9946e1dcafada6fd2367e5ef /src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
parent28a122e74fa8f76da97625d1581e69afee835b7c (diff)
C#: Write super types
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
index a4a268a..04491ab 100644
--- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
+++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
@@ -1,6 +1,7 @@
package org.zwobble.couscous.ast;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import org.zwobble.couscous.ast.identifiers.Identifier;
import org.zwobble.couscous.values.UnitValue;
@@ -8,13 +9,13 @@ import java.util.List;
import java.util.Optional;
import java.util.function.Function;
-import static java.util.Collections.emptySet;
import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg;
import static org.zwobble.couscous.ast.VariableDeclaration.var;
import static org.zwobble.couscous.util.ExtraLists.list;
public class ClassNodeBuilder {
private final TypeName name;
+ private final ImmutableSet.Builder<TypeName> superTypes;
private final ImmutableList.Builder<FieldDeclarationNode> fields;
private List<StatementNode> staticConstructor;
private Optional<ConstructorNode> constructor;
@@ -22,6 +23,7 @@ public class ClassNodeBuilder {
public ClassNodeBuilder(TypeName name) {
this.name = name;
+ this.superTypes = ImmutableSet.builder();
this.fields = ImmutableList.builder();
staticConstructor = list();
this.constructor = Optional.empty();
@@ -32,6 +34,11 @@ public class ClassNodeBuilder {
this(TypeName.of(name));
}
+ public ClassNodeBuilder addSuperType(String type) {
+ this.superTypes.add(TypeName.of(type));
+ return this;
+ }
+
public ClassNodeBuilder staticField(String name, TypeName type) {
return field(FieldDeclarationNode.staticField(name, type));
}
@@ -97,7 +104,7 @@ public class ClassNodeBuilder {
public ClassNode build() {
return ClassNode.declareClass(
name,
- emptySet(),
+ superTypes.build(),
fields.build(),
staticConstructor,
constructor.orElse(ConstructorNode.DEFAULT),