Marc Bogaerts created GROOVY-7640:
-------------------------------------

             Summary: AST Builder should include superclass properties
                 Key: GROOVY-7640
                 URL: https://issues.apache.org/jira/browse/GROOVY-7640
             Project: Groovy
          Issue Type: Bug
          Components: ast builder
    Affects Versions: 2.4.5
            Reporter: Marc Bogaerts
            Priority: Minor


If one annotates a groovy class with @Builder and that class extends from 
another class, then the generated builder does not support setting the parent 
class properties.

This is especially problematic when mixin groovy builders in java code.

e.g. the following class shows what will and will not compile
{code:java}

// Animal.groovy
import groovy.transform.builder.Builder
import groovy.transform.builder.SimpleStrategy

@Builder(builderStrategy = SimpleStrategy)
class Animal {

   String color
    int legs
}

// Pet.groovy
import groovy.transform.builder.Builder
import groovy.transform.builder.SimpleStrategy

@Builder(builderStrategy = SimpleStrategy)
class Pet extends Animal {

    String name
}

// PetTest.java
import org.junit.Test;
import static org.junit.Assert.*;

public class PetTest {
    @Test public void createPet() {
        // Pet pet = new Pet().setColor("white").setLegs(4).setName("Bobby"); 
does not compile
        Pet pet = (Pet) new Pet().setName("Bobby").setColor("white").setLegs(4);

        assertTrue(pet.getLegs() == 4);
    }
}
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to