From e1e8c65a713a753343813af5bf12b11b9a4c8ac3 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Sat, 4 Aug 2012 18:58:45 +0300 Subject: [PATCH] KT-2257 fix. private namespace visibility becomes protected in java land --- .../src/org/jetbrains/jet/codegen/JetTypeMapper.java | 2 +- .../src/org/jetbrains/jet/codegen/NamespaceCodegen.java | 5 +---- compiler/testData/codegen/regressions/kt2257_1.kt | 3 +++ compiler/testData/codegen/regressions/kt2257_2.kt | 3 +++ compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java | 6 ++++++ .../tests/org/jetbrains/jet/codegen/PropertyGenTest.java | 2 +- 6 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 compiler/testData/codegen/regressions/kt2257_1.kt create mode 100644 compiler/testData/codegen/regressions/kt2257_2.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java index 6261c2c9828..65b1f40b6cf 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java @@ -1000,7 +1000,7 @@ public class JetTypeMapper { return defaultFlags; } if (p.getContainingDeclaration() instanceof NamespaceDescriptor) { - return ACC_PUBLIC; + return ACC_PROTECTED; } return ACC_PRIVATE; } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index cb965b54cee..d6a345f863c 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -117,23 +117,21 @@ public class NamespaceCodegen { } private void generate(JetFile file, boolean multiFile) { + NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.FILE_TO_NAMESPACE, file); for (JetDeclaration declaration : file.getDeclarations()) { if (declaration instanceof JetProperty) { - NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.FILE_TO_NAMESPACE, file); final CodegenContext context = CodegenContexts.STATIC.intoNamespace(descriptor); state.getInjector().getMemberCodegen().generateFunctionOrProperty( (JetTypeParameterListOwner) declaration, context, v.getClassBuilder()); } else if (declaration instanceof JetNamedFunction) { if (!multiFile) { - NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.FILE_TO_NAMESPACE, file); final CodegenContext context = CodegenContexts.STATIC.intoNamespace(descriptor); state.getInjector().getMemberCodegen().generateFunctionOrProperty( (JetTypeParameterListOwner) declaration, context, v.getClassBuilder()); } } else if (declaration instanceof JetClassOrObject) { - NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.FILE_TO_NAMESPACE, file); final CodegenContext context = CodegenContexts.STATIC.intoNamespace(descriptor); state.getInjector().getClassCodegen().generate(context, (JetClassOrObject) declaration); } @@ -169,7 +167,6 @@ public class NamespaceCodegen { for (JetDeclaration declaration : file.getDeclarations()) { if (declaration instanceof JetNamedFunction) { - NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.FILE_TO_NAMESPACE, file); { final CodegenContext context = CodegenContexts.STATIC.intoNamespace(descriptor); state.getInjector().getMemberCodegen().generateFunctionOrProperty((JetTypeParameterListOwner) declaration, context, builder); diff --git a/compiler/testData/codegen/regressions/kt2257_1.kt b/compiler/testData/codegen/regressions/kt2257_1.kt new file mode 100644 index 00000000000..87728c89656 --- /dev/null +++ b/compiler/testData/codegen/regressions/kt2257_1.kt @@ -0,0 +1,3 @@ +fun box() = o + k + +private val o = "O" diff --git a/compiler/testData/codegen/regressions/kt2257_2.kt b/compiler/testData/codegen/regressions/kt2257_2.kt new file mode 100644 index 00000000000..b05eeab120c --- /dev/null +++ b/compiler/testData/codegen/regressions/kt2257_2.kt @@ -0,0 +1,3 @@ +private val k = "K" + +fun ignore() = o \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java index 1252512931d..eb5c92a9329 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/ClassGenTest.java @@ -498,4 +498,10 @@ public class ClassGenTest extends CodegenTestCase { //System.out.println(generateToText()); blackBox(); } + + public void testKt2257() { + createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY); + blackBoxMultiFile("regressions/kt2257_1.kt", "regressions/kt2257_2.kt"); + System.out.println(generateToText()); + } } diff --git a/compiler/tests/org/jetbrains/jet/codegen/PropertyGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/PropertyGenTest.java index a4884acb8d2..f20bc0b7bc6 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/PropertyGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/PropertyGenTest.java @@ -81,7 +81,7 @@ public class PropertyGenTest extends CodegenTestCase { final Field field = fields[0]; field.setAccessible(true); assertEquals("x", field.getName()); - assertEquals(Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL, field.getModifiers()); + assertEquals(Modifier.PROTECTED | Modifier.STATIC | Modifier.FINAL, field.getModifiers()); assertEquals(239, field.get(null)); }