You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Alar Aule (Jira)" <ji...@apache.org> on 2022/02/22 18:30:00 UTC

[jira] [Created] (GROOVY-10505) TraitComposer should mark generated methods as @Generated

Alar Aule created GROOVY-10505:
----------------------------------

             Summary: TraitComposer should mark generated methods as @Generated
                 Key: GROOVY-10505
                 URL: https://issues.apache.org/jira/browse/GROOVY-10505
             Project: Groovy
          Issue Type: Improvement
          Components: Compiler
    Affects Versions: 2.5.14
            Reporter: Alar Aule


I have been marking Grails generated methods as Generated, but there are still open cases and those should be resolved in groovy. [https://github.com/grails/grails-core/issues/11318]
In Grails with Controllers there is heavy use of Traits and

{{org.codehaus.groovy.transform.trait.TraitComposer}} class doesn't mark all its generated methods as Generated.

Example of trait composition:
{code:java}
        trait TraitA {
            private String variableA
            
            @groovy.transform.Generated
            String methodA() { "method" }
        }

        trait TraitB {
            private String variableB
            
            @groovy.transform.Generated
            String methodB() { "i'm method too" }
        }

        trait TraitComposeAB implements TraitA, TraitB {
            
        }

        class ClassUnderTest implements TraitComposeAB {
            
        }
{code}
For ClassUnderTest the TraitComposer will add methods for traits variables:
{noformat}
"public java.lang.String ClassUnderTest.TraitB__variableB$get()"
"public java.lang.String ClassUnderTest.TraitA__variableA$get()"
"public java.lang.String ClassUnderTest.TraitA__variableA$set(java.lang.String)"
"public java.lang.String ClassUnderTest.TraitB__variableB$set(java.lang.String)"
{noformat}
and for methods:
{noformat}
"public java.lang.String ClassUnderTest.TraitAtrait$super$methodA()"
"public java.lang.String ClassUnderTest.TraitBtrait$super$methodB()"
{noformat}
Those methods I think should be marked as Generated.

Will provide pull-request soon.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)