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)