Christopher Smith created GROOVY-11451:
------------------------------------------

             Summary: IncompatibleClassChange with map-style constructor and 
overloaded setters
                 Key: GROOVY-11451
                 URL: https://issues.apache.org/jira/browse/GROOVY-11451
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation
    Affects Versions: 4.0.22
            Reporter: Christopher Smith


I have a POJO that I use from Groovy code. After adding a setter overload, I 
now get {{IncompatibleClassChange}} at runtime because the static compiler 
generates {{ScriptBytecodeAdapter.setGroovyObjectProperty}} instead of a plain 
setter call.

{code}
public class Entity {
  public void setId(String id) {}
  public void setId(UUID id) {}
}

class EntityTest extends Specification {
  @CompileStatic
  Entity createEntity(String id) {
    new Entity(id: id) // uses ScriptBytecodeAdapter.setGroovyObjectProperty
  }
}
{code}

The error is not encountered when calling {{setId(id)}} or using {{entity.id = 
id}}, without static compilation, or when the setter is not overloaded.



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

Reply via email to