From 167101546659541aac053a91d5b393e5e10679ba Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 16 Jan 2013 19:04:04 +0400 Subject: [PATCH] Visibility of nested light classes fixed --- .../jet/codegen/ImplementationBodyCodegen.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index ca60d90a3ba..311d458bec0 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -127,7 +127,16 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { int access = 0; - access |= getVisibilityAccessFlagForClass(descriptor); + if (state.getClassBuilderMode() == ClassBuilderMode.SIGNATURES && !DescriptorUtils.isTopLevelDeclaration(descriptor)) { + // ClassBuilderMode.SIGNATURES means we are generating light classes & looking at a nested or inner class + // Light class generation is implemented so that Cls-classes only read bare code of classes, + // without knowing whether these classes are inner or not (see ClassStubBuilder.EMPTY_STRATEGY) + // Thus we must write full accessibility flags on inner classes in this mode + access |= getVisibilityAccessFlag(descriptor); + } + else { + access |= getVisibilityAccessFlagForClass(descriptor); + } if (isAbstract) { access |= ACC_ABSTRACT; }