[ 
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)

Reply via email to