[
https://issues.apache.org/jira/browse/GROOVY-8423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16302919#comment-16302919
]
ASF GitHub Bot commented on GROOVY-8423:
----------------------------------------
Github user shils commented on a diff in the pull request:
https://github.com/apache/groovy/pull/648#discussion_r158607705
--- Diff: src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
---
@@ -305,11 +305,6 @@ private void makeInnerClassEntry(ClassNode cn) {
}
int mods = adjustedClassModifiersForInnerClassTable(cn);
-
- if (Modifier.isPrivate(mods)) {
--- End diff --
I'm unsure about removing this block as the commit message suggests it was
necessary for android support. Does anyone know the history behind this? @melix
> 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
>
> {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
(v6.4.14#64029)