[ https://issues.apache.org/jira/browse/GROOVY-7640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14964132#comment-14964132 ]
Pascal Schumacher edited comment on GROOVY-7640 at 10/19/15 10:02 PM: ---------------------------------------------------------------------- You can use @CompileStatic in a script. This test method replicates the issue: {code:java} class PetTest extends GroovyTestCase { void testCreatePet() { assertScript ''' import groovy.transform.builder.Builder import groovy.transform.builder.SimpleStrategy import groovy.transform.CompileStatic @Builder(builderStrategy = SimpleStrategy) class Animal { String color int legs } @Builder(builderStrategy = SimpleStrategy) class Pet extends Animal { String name } @CompileStatic test() { Pet pet = new Pet().setColor('white').setLegs(4).setName('Bobby') } ''' } }{code} was (Author: pascalschumacher): You can use @CompileStatic in a script. This test method replicates the issue: {code:java} class PetTest extends GroovyTestCase { void testCreatePet() { assertScript ''' import groovy.transform.builder.Builder import groovy.transform.builder.SimpleStrategy import groovy.transform.CompileStatic @Builder(builderStrategy = SimpleStrategy) class Animal { String color int legs } @Builder(builderStrategy = SimpleStrategy) class Pet extends Animal { String name } @CompileStatic test() { Pet pet = new Pet().setColor('white').setLegs(4).setName('Bobby') } test() ''' } }{code} > 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)