[jira] [Updated] (GROOVY-8637) @NamedVariant processing error

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (GROOVY-8637) @NamedVariant processing error

JIRA jira@apache.org

     [ https://issues.apache.org/jira/browse/GROOVY-8637?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexey Afanasiev updated GROOVY-8637:
-------------------------------------
    Description:
Example about @NamedVariant from http://groovy-lang.org/releasenotes/groovy-2.5.html works perfectly well as far as all @NamedDelegate type are compiling in the same compilation unit.


{code:java}
class Animal {
    String type, name
}

@ToString(includeNames=true)
class Color {
    Integer r, g, b
}

@NamedVariant
String foo(String s1, @NamedParam String s2,
           @NamedDelegate Color shade,
           @NamedDelegate Animal pet) {
    "$s1 $s2 ${pet.type?.toUpperCase()}:$pet.name $shade"
}

{code}
But let's modify this example. If you have Animal an Color classes compiled beforehand and passed to the compiler with classpath, you will receive 'Error during @NamedVariant processing. Duplicate property 'metaClass' found.'

NamedVariantASTTransformation treats 'setMetaClass' method as set method of some property with ''metaClass' name. Obviously these names are clashed at compile time.


  was:
Example about @NamedVariant from http://groovy-lang.org/releasenotes/groovy-2.5.html works perfectly well as far as all @NamedDelegate type are compiling in the same compilation unit.


{code:java}
class Animal {
    String type, name
}

@ToString(includeNames=true)
class Color {
    Integer r, g, b
}

@NamedVariant
String foo(String s1, @NamedParam String s2,
           @NamedDelegate Color shade,
           @NamedDelegate Animal pet) {
    "$s1 $s2 ${pet.type?.toUpperCase()}:$pet.name $shade"
}

{code}
So in this example if you have Animal an Color classes compiled beforehand and passed to the compiler with classpath, you will receive 'Error during @NamedVariant processing. Duplicate property 'metaClass' found.'

NamedVariantASTTransformation treats 'setMetaClass' method as set method of some property with ''metaClass' name. Obviously these names are clashed at compile time.



> @NamedVariant processing error
> ------------------------------
>
>                 Key: GROOVY-8637
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8637
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>            Reporter: Alexey Afanasiev
>            Priority: Critical
>
> Example about @NamedVariant from http://groovy-lang.org/releasenotes/groovy-2.5.html works perfectly well as far as all @NamedDelegate type are compiling in the same compilation unit.
> {code:java}
> class Animal {
>     String type, name
> }
> @ToString(includeNames=true)
> class Color {
>     Integer r, g, b
> }
> @NamedVariant
> String foo(String s1, @NamedParam String s2,
>            @NamedDelegate Color shade,
>            @NamedDelegate Animal pet) {
>     "$s1 $s2 ${pet.type?.toUpperCase()}:$pet.name $shade"
> }
> {code}
> But let's modify this example. If you have Animal an Color classes compiled beforehand and passed to the compiler with classpath, you will receive 'Error during @NamedVariant processing. Duplicate property 'metaClass' found.'
> NamedVariantASTTransformation treats 'setMetaClass' method as set method of some property with ''metaClass' name. Obviously these names are clashed at compile time.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)