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

mgroovy updated GROOVY-11562:
-----------------------------
    Description: 
{code:java}
static class FinalPropertyTable {
  final column = "AssumeIAmASqlColumInstanceForThisToMakeSense"
}

@Test
void 'Groovy 4-0-24 final class properties not final (simple)'() {
  assert 
Modifier.isFinal(FinalPropertyTable.metaClass.getMetaProperty('column').modifiers)
 === true
}

@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}

> 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
>            Priority: Major
>
> {code:java}
> static class FinalPropertyTable {
>   final column = "AssumeIAmASqlColumInstanceForThisToMakeSense"
> }
> @Test
> void 'Groovy 4-0-24 final class properties not final (simple)'() {
>   assert 
> Modifier.isFinal(FinalPropertyTable.metaClass.getMetaProperty('column').modifiers)
>  === true
> }
> @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)

Reply via email to