Paul King created GROOVY-7672:
---------------------------------

             Summary: TupleConstructor should have only SOURCE retention policy
                 Key: GROOVY-7672
                 URL: https://issues.apache.org/jira/browse/GROOVY-7672
             Project: Groovy
          Issue Type: Bug
    Affects Versions: 2.4.5
            Reporter: Paul King
            Assignee: Paul King


We originally gave TupleConstructor RUNTIME retention policy since it might 
provide a small amount of introspection information for future tools. But so 
far, as far as I know, it hasn't been used. Given that it makes certain usages 
impossible, I propose to put back to SOURCE retention policy. This will allow 
code such as shown below to be possible:
{code}
import groovy.transform.*
import java.awt.Color

class Named {
    String name
}

@ToString(includeSuperProperties=true, ignoreNulls=true, includeNames=true, 
includeFields=true)
@TupleConstructor(force=true, defaults=false)
@TupleConstructor(force=true, defaults=false, includeFields=true)
@TupleConstructor(force=true, defaults=false, includeSuperProperties=true)
class Cat extends Named {
    int age
    private Color color
}

assert new Cat("Felix", 3).toString() == 'Cat(age:3, name:Felix)'
assert new Cat(3, Color.BLACK).toString() == 'Cat(age:3, 
color:java.awt.Color[r=0,g=0,b=0])'
assert new Cat(3).toString() == 'Cat(age:3)'
{code}



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

Reply via email to