Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-7950

AST transforms referencing properties on a class not detecting Trait-mixed in properties

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.4.7
    • Fix Version/s: None
    • Component/s: ast builder
    • Labels:
      None

      Description

      I can't find anything about this in http://docs.groovy-lang.org/next/html/documentation/core-traits.html – apologies if I missed it elsewhere. Also could not find a similar issue.

      I am applying a transform that references properties in a class, the transformed class also implements a trait with properties. It seems that the trait transform is applied last, such that the annotation-driven AST transforms don't see 'inherited/mixed in' trait properties.

      import groovy.transform.*
      
      trait T {
          String s1
      }
      
      @TupleConstructor(includes='s1, s2') // only a constructor for s2 created, same applies to @EqualsAndHashCode for example.
      // @Sortable(includes='s1, s2') //  Error during @Sortable processing: tried to include unknown property 's1'
      class Bar implements T {
          String s2
      }
      

      This http://docs.groovy-lang.org/next/html/documentation/core-traits.html#_compatibility_with_ast_transformations talks about applying transforms on a trait itself, but as per above, this isn't what I'm doing.

      Is this behaviour by design, or am I missing something obvious?

      Thanks for your help.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              ka.miscel@gmail.com Kamal Advani
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: