LOCAL classes are ACC_PUBLIC in byte code
This commit is contained in:
@@ -257,6 +257,8 @@ public class AsmUtil {
|
|||||||
public static int getVisibilityAccessFlagForClass(ClassDescriptor descriptor) {
|
public static int getVisibilityAccessFlagForClass(ClassDescriptor descriptor) {
|
||||||
if (DescriptorUtils.isTopLevelDeclaration(descriptor) ||
|
if (DescriptorUtils.isTopLevelDeclaration(descriptor) ||
|
||||||
descriptor.getVisibility() == Visibilities.PUBLIC ||
|
descriptor.getVisibility() == Visibilities.PUBLIC ||
|
||||||
|
// TODO: should be package private, but for now Kotlin's reflection can't access members of such classes
|
||||||
|
descriptor.getVisibility() == Visibilities.LOCAL ||
|
||||||
descriptor.getVisibility() == Visibilities.INTERNAL) {
|
descriptor.getVisibility() == Visibilities.INTERNAL) {
|
||||||
return ACC_PUBLIC;
|
return ACC_PUBLIC;
|
||||||
}
|
}
|
||||||
@@ -281,7 +283,8 @@ public class AsmUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int calculateInnerClassAccessFlags(@NotNull ClassDescriptor innerClass) {
|
public static int calculateInnerClassAccessFlags(@NotNull ClassDescriptor innerClass) {
|
||||||
return getVisibilityAccessFlag(innerClass) |
|
int visibility = (innerClass.getVisibility() == Visibilities.LOCAL) ? ACC_PUBLIC : getVisibilityAccessFlag(innerClass);
|
||||||
|
return visibility |
|
||||||
innerAccessFlagsForModalityAndKind(innerClass) |
|
innerAccessFlagsForModalityAndKind(innerClass) |
|
||||||
(innerClass.isInner() ? 0 : ACC_STATIC);
|
(innerClass.isInner() ? 0 : ACC_STATIC);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user