Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
4.0.13
-
None
-
Windows 10, Groovy 4.0.13, Java 17.0.8
Description
When accessing a private static final field from a Closure within the same class Groovy 4 throws a MissingPropertyException. The code works in Groovy 2.5.22 & 3.0.18.
The real instance of the object needs to be a subtype of the class containing the constant.
See attached code to reproduce.
Expected behavior:
The code runs without error
Actual behavior:
Groovy 4 throws:
groovy.lang.MissingPropertyException: No such property: field for class: FirstEvent
at BaseEvent$_init_closure1.doCall(Test.groovy:7)
at BaseEvent.init(Test.groovy:7)
at Test.run(Test.groovy:15)
Notes:
Interestingly if you remove the static keyword from private static final String field = "name"
it fails in all three versions 2.5.22, 3.0.18 & 4.0.13 with a MissingPropertyException.
I would expect that the code should also work for these cases.
The problem came up in a discussion about a Spock issue #1544.
Attachments
Attachments
Issue Links
- relates to
-
GROOVY-11360 Issue a warning when accessing static fields that are "shadowed" by get() methods
- Resolved