From 2d24979f47af2027de780fc956fa37829edafe40 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 14:36:16 +0000 Subject: Read instance initializers --- .../org/zwobble/couscous/ast/sugar/TypeDeclarationBody.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/ast') diff --git a/src/main/java/org/zwobble/couscous/ast/sugar/TypeDeclarationBody.java b/src/main/java/org/zwobble/couscous/ast/sugar/TypeDeclarationBody.java index 666d777..048ce73 100644 --- a/src/main/java/org/zwobble/couscous/ast/sugar/TypeDeclarationBody.java +++ b/src/main/java/org/zwobble/couscous/ast/sugar/TypeDeclarationBody.java @@ -2,6 +2,7 @@ package org.zwobble.couscous.ast.sugar; import com.google.common.collect.ImmutableList; import org.zwobble.couscous.ast.*; +import org.zwobble.couscous.util.ExtraLists; import java.util.List; @@ -13,6 +14,7 @@ public class TypeDeclarationBody { public static class Builder { private final ImmutableList.Builder fields = ImmutableList.builder(); private final ImmutableList.Builder staticConstructor = ImmutableList.builder(); + private final ImmutableList.Builder instanceInitializers = ImmutableList.builder(); private ConstructorNode constructor = ConstructorNode.DEFAULT; private final ImmutableList.Builder methods = ImmutableList.builder(); @@ -23,11 +25,11 @@ public class TypeDeclarationBody { fields.add(field); } - public void addStaticInitializer(List statements) { - staticConstructor.addAll(statements); + public void addInitializer(boolean isStatic, List statements) { + (isStatic ? staticConstructor : instanceInitializers).addAll(statements); } - public void addStaticInitializer(StatementNode statement) { + public void addInitializer(StatementNode statement) { staticConstructor.add(statement); } @@ -43,7 +45,9 @@ public class TypeDeclarationBody { return new TypeDeclarationBody( fields.build(), staticConstructor.build(), - constructor, + ConstructorNode.constructor( + constructor.getArguments(), + ExtraLists.concat(instanceInitializers.build(), constructor.getBody())), methods.build()); } } -- cgit v1.2.3