You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2019/11/14 23:26:00 UTC

[jira] [Resolved] (GROOVY-8423) Private and protected inner classes have incorrect access modifier values

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

Eric Milles resolved GROOVY-8423.
---------------------------------
    Fix Version/s: 3.0.0-rc-2
       Resolution: Fixed

> Private and protected inner classes have incorrect access modifier values
> -------------------------------------------------------------------------
>
>                 Key: GROOVY-8423
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8423
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.13
>            Reporter: Shil Sinha
>            Assignee: Shil Sinha
>            Priority: Major
>             Fix For: 3.0.0-rc-2
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> {code}
> import java.lang.reflect.Modifier           
> class Foo {                                 
>     private class Private {}
>     protected class Protected {}
>     static void test() {
>         assert Modifier.isPrivate(Private.class.getModifiers()) \\ 0
>         assert Modifier.isProtected(Protected.class.getModifiers()) \\ 1
>     }            
> }                                           
> Foo.test()
> {code}
> The test above fails (on both assertions). This appears to be due to the ACC_PRIVATE and ACC_PROTECTED modifiers being removed/replaced for inner classes, as well as from their inner class table entries (see GROOVY-6357). Though those modifiers aren't valid for the classes themselves, they are allowed in the inner classes table (https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.6).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)