diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-08 11:22:53 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-08 11:22:53 +0000 |
| commit | ce9f894f75727c17b3237c3453dacb91d404b32c (patch) | |
| tree | dc764c49a1a4ca4f3b0ada3542435c0054a268b4 /src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java | |
| parent | f276accc32db02896cffc324f55130560df3c282 (diff) | |
Serialize formal type parameters in C# backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java | 12 |
1 files changed, 10 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 3a1b81b..db14773 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java @@ -10,12 +10,14 @@ import java.util.Optional; import java.util.function.Function; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; +import static org.zwobble.couscous.ast.FormalTypeParameterNode.formalTypeParameter; 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<FormalTypeParameterNode> typeParameters; private final ImmutableList.Builder<FieldDeclarationNode> fields; private List<StatementNode> staticConstructor; private Optional<ConstructorNode> constructor; @@ -23,6 +25,7 @@ public class ClassNodeBuilder { public ClassNodeBuilder(TypeName name) { this.name = name; + this.typeParameters = ImmutableList.builder(); this.superTypes = ImmutableSet.builder(); this.fields = ImmutableList.builder(); staticConstructor = list(); @@ -34,6 +37,11 @@ public class ClassNodeBuilder { this(TypeName.of(name)); } + public ClassNodeBuilder addTypeParameter(String name) { + this.typeParameters.add(formalTypeParameter(TypeName.of(name))); + return this; + } + public ClassNodeBuilder addSuperType(String type) { this.superTypes.add(TypeName.of(type)); return this; @@ -104,7 +112,7 @@ public class ClassNodeBuilder { public ClassNode build() { return ClassNode.declareClass( name, - list(), + typeParameters.build(), superTypes.build(), fields.build(), staticConstructor, @@ -115,7 +123,7 @@ public class ClassNodeBuilder { public InterfaceNode buildInterface() { return InterfaceNode.declareInterface( name, - list(), + typeParameters.build(), superTypes.build(), methods.build()); } |
