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

Christopher Smith updated GROOVY-10894:
---------------------------------------
    Description: 
The latest nightly (included with GRECLIPSE 4.9.0.v202301012233-e2206) has 
introduced a regression that appears to be the same bug as GROOVY-10553; 
JSR-303 annotations applied to a trait property are listed twice in the 
bytecode on both the field and the {{$get/$set}} methods, resulting in an 
{{AnnotationFormatError}} at runtime. Compiling with groovyc 4.0.7 produces 
clean bytecode, and rebuilding in Eclipse reintroduces the duplicate.

Sample:

{code}
trait LocationRelated {
  @NotNull @Valid Location location
}
{code}

In {{FieldHelper}} disassembly:
{code}
  public abstract com.example.Location 
com_example_LocationRelated__location$set(com.example.Location);
    descriptor: (Lcom/example/Location;)Lcom/example/Location;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleTypeAnnotations:
      0: #11(): METHOD_RETURN
        javax.validation.constraints.NotNull
      1: #12(): METHOD_RETURN
        javax.validation.Valid
      2: #11(): METHOD_RETURN
        javax.validation.constraints.NotNull
      3: #12(): METHOD_RETURN
        javax.validation.Valid
      4: #11(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.constraints.NotNull
      5: #12(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.Valid
      6: #11(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.constraints.NotNull
      7: #12(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.Valid
{code}

(As a side issue, is there a particular reason these methods aren't marked 
synthetic? I'm not certain that would prevent the problem's actually surfacing 
in this case, but based on my reading of the Hibernate Validator code it might 
have. Not sure whether that's a positive or a negative, though.)

  was:
The latest nightly (included with GRECLIPSE 4.9.0.v202301012233-e2206) has 
introduced a regression that appears to be the same bug as GROOVY-10553; 
JSR-303 annotations applied to a trait property are listed twice in the 
bytecode on both the field and the {{$get/$set}} methods, resulting in an 
{{AnnotationFormatError}} at runtime. Compiling with groovyc 4.0.7 produces 
clean bytecode, and rebuilding in Eclipse reintroduces the duplicate.

Sample:

{code}
trait LocationRelated {
  @NotNull @Valid Location location
}
{code}

In {{FieldHelper}} disassembly:
{code}
  public abstract com.example.Location 
com_example_LocationRelated__location$set(com.example.Location);
    descriptor: (Lcom/example/Location;)Lcom/example/Location;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleTypeAnnotations:
      0: #11(): METHOD_RETURN
        javax.validation.constraints.NotNull
      1: #12(): METHOD_RETURN
        javax.validation.Valid
      2: #11(): METHOD_RETURN
        javax.validation.constraints.NotNull
      3: #12(): METHOD_RETURN
        javax.validation.Valid
      4: #11(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.constraints.NotNull
      5: #12(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.Valid
      6: #11(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.constraints.NotNull
      7: #12(): METHOD_FORMAL_PARAMETER, param_index=0
        javax.validation.Valid
{code}


> Duplicate annotations on trait FieldHelper
> ------------------------------------------
>
>                 Key: GROOVY-10894
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10894
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 4.0.8
>            Reporter: Christopher Smith
>            Priority: Major
>              Labels: regression
>
> The latest nightly (included with GRECLIPSE 4.9.0.v202301012233-e2206) has 
> introduced a regression that appears to be the same bug as GROOVY-10553; 
> JSR-303 annotations applied to a trait property are listed twice in the 
> bytecode on both the field and the {{$get/$set}} methods, resulting in an 
> {{AnnotationFormatError}} at runtime. Compiling with groovyc 4.0.7 produces 
> clean bytecode, and rebuilding in Eclipse reintroduces the duplicate.
> Sample:
> {code}
> trait LocationRelated {
>   @NotNull @Valid Location location
> }
> {code}
> In {{FieldHelper}} disassembly:
> {code}
>   public abstract com.example.Location 
> com_example_LocationRelated__location$set(com.example.Location);
>     descriptor: (Lcom/example/Location;)Lcom/example/Location;
>     flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
>     RuntimeVisibleTypeAnnotations:
>       0: #11(): METHOD_RETURN
>         javax.validation.constraints.NotNull
>       1: #12(): METHOD_RETURN
>         javax.validation.Valid
>       2: #11(): METHOD_RETURN
>         javax.validation.constraints.NotNull
>       3: #12(): METHOD_RETURN
>         javax.validation.Valid
>       4: #11(): METHOD_FORMAL_PARAMETER, param_index=0
>         javax.validation.constraints.NotNull
>       5: #12(): METHOD_FORMAL_PARAMETER, param_index=0
>         javax.validation.Valid
>       6: #11(): METHOD_FORMAL_PARAMETER, param_index=0
>         javax.validation.constraints.NotNull
>       7: #12(): METHOD_FORMAL_PARAMETER, param_index=0
>         javax.validation.Valid
> {code}
> (As a side issue, is there a particular reason these methods aren't marked 
> synthetic? I'm not certain that would prevent the problem's actually 
> surfacing in this case, but based on my reading of the Hibernate Validator 
> code it might have. Not sure whether that's a positive or a negative, though.)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to