Yes, it was in 2.3.4 to make @Sortable work with @CompileStatic/@TypeChecked. See here: https://issues.apache.org/jira/browse/GROOVY-6870 and SortableTransformTest#testSortableWithCompileStatic
Cheers, Paul. On Thu, Nov 12, 2015 at 10:48 PM, Schalk Cronjé <ysb...@gmail.com> wrote: > Paul, > > That must have been a change introduced between Groovy 2.3.3 (which ships > with Gradle 2.0) and Groovy 2.3.6 > > The below code compiled against the Gradle 2.0 version, but failed it > compiled against later Gradle versions (due to newer versions of Groovy) > > interface Foo extends Comparable { > String getVersion() > File getLocation() > } > > @EqualsAndHashCode(excludes=['location']) > @TupleConstructor > @Sortable(excludes=['location']) > @ToString > class Bar implements Foo { > String version > File location > } > > I guess I can drop the Comparable from the Foo interface or change it to an > abstract class that is annotated with @Sortable. > > Thanks for the clarification. > > > On 12/11/2015 12:35, Paul King wrote: > > @Sortable on a class Foo will add "Comparable<Foo>" to the list of > implemented interfaces and a "compareTo(Foo other)" method. > > If you also implement the raw Comparable interface manually you will > need to also add a "compareTo(Object other)" method but the raw > version is not required or typically recommended. > > Cheers, Paul. > > On Thu, Nov 12, 2015 at 3:18 PM, Balachandran Sivakumar > <benignb...@gmail.com> wrote: > > Hi, > > Just looked up the Groovy doc - The doc for @Sortable[1] says > that the generated Groovy class will implement the Comparable interface. > Thanks > > [1] > http://docs.groovy-lang.org/next/html/gapi/groovy/transform/Sortable.html > > On Thu, Nov 12, 2015 at 10:21 AM, Balachandran Sivakumar > <benignb...@gmail.com> wrote: > > Hi Schalk, > > This works on 2.4.5 > > @EqualsAndHashCode(excludes = ['config']) > @Sortable(excludes = ['config']) > @TupleConstructor > @ToString > class Foo { > String version > File config > } > > I just have @Sortable annotation. From Groovy 2.3, Sortable implements > Comparable is what I understand from the Groovy Goodness page on this > topic[1]. So, just the class which is annotated with @Sortable is enough. I > think We don't have to implement an "interface" at all. Thanks > > [1] > http://mrhaki.blogspot.in/2014/05/groovy-goodness-use-sortable-annotation.html > > > On Wed, Nov 11, 2015 at 11:03 PM, Schalk Cronjé <ysb...@gmail.com> wrote: > > Bala, > > That does not make sense, as the following will also fail: > > interface Foo extends Comparable { > String getVersion() > File getLocation() > } > > @EqualsAndHashCode(excludes=['location']) > @TupleConstructor > @Sortable(excludes=['location']) > @ToString > class Bar implements Foo { > String version > File location > } > > > On 11/11/2015 16:55, Balachandran Sivakumar wrote: > > Hi Schalk, > > > > On Wed, Nov 11, 2015 at 9:09 PM, Schalk Cronjé <ysb...@gmail.com> wrote: > > This following code works under 2.3.3, but fails under 2.3.6 - 2.4.5 > > @EqualsAndHashCode(excludes=['location']) > @TupleConstructor > @Sortable(excludes=['location']) > @ToString > class Bar implements Comparable { > > I think @Sortable automatically makes it Comparable. So, we > don't have to "implement" Comparable if we use the @Sortable annotation. > Without the implements Comparable part, this works fine for me on groovy > 2.4.5. Thanks > > > -- > Thank you > Balachandran Sivakumar > > > > -- > Schalk W. Cronjé > Twitter / Ello / Toeter : @ysb33r > > > > -- > Thank you > Balachandran Sivakumar > > > > -- > Thank you > Balachandran Sivakumar > > > > -- > Schalk W. Cronjé > Twitter / Ello / Toeter : @ysb33r