[
https://issues.apache.org/jira/browse/GROOVY-11562?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles resolved GROOVY-11562.
----------------------------------
Fix Version/s: 5.0.0-alpha-13
Resolution: Fixed
> final class property is not reported as final in its MetaProperty#modifiers
> ---------------------------------------------------------------------------
>
> Key: GROOVY-11562
> URL: https://issues.apache.org/jira/browse/GROOVY-11562
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 4.0.24
> Reporter: mgroovy
> Assignee: Eric Milles
> Priority: Minor
> Fix For: 5.0.0-alpha-13
>
>
> {code:java}
> static class FinalPropertyTable {
> final column = "AssumeIAmASqlColumInstanceForThisToMakeSense"
> }
> // Problem: Test fails, even though FinalPropertyTable#column is declared as
> final
> // Expected: Test passes
> @Test
> void 'Groovy 4-0-24 final class properties not final (simple)'() {
> assert
> Modifier.isFinal(FinalPropertyTable.metaClass.getMetaProperty('column').modifiers)
> === true
> }
> /*
> A more complete test, that checks multiple MetaProperty attributes at once.
> Suggested use would be to create a multiline test result instead of the
> println statements & write the resulting string to disk.
> After that compare the resulting strings to check for regression/unexpected
> changes of any of the MetaProperty attributes of a more complex test class
> than the one above.
> */
> @Test
> void 'Groovy 4-0-24 final class properties not final (full)'() {
> final mps = FinalPropertyTable.metaClass.properties
> final mbpsDebugDataList = mps.collect { MetaProperty mp ->
> [
> name : mp.name,
> type: mp.type.simpleName,
> 'public': Modifier.isPublic(mp.modifiers),
> 'static': Modifier.isStatic(mp.modifiers),
> 'final' : Modifier.isFinal(mp.modifiers),
> type_assignable: mp.type.isAssignableFrom(columnClass),
> getter : ((mp instanceof MetaBeanProperty) ? mp.getGetter() !==
> null : null),
> setter : ((mp instanceof MetaBeanProperty) ? mp.getSetter() !==
> null : null),
> meta_bean_type: (mp.getClass().simpleName)
> ]
> }
> mbpsDebugDataList.eachWithIndex { propertyDebugData, int i -> println "$i)
> $propertyDebugData" }
> assert mbpsDebugDataList.find { it['name'] == 'column' }['final'] === true
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)