diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java index e1bca7991dd..c76866d56cf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java @@ -252,7 +252,7 @@ public class OverrideResolver { @NotNull ClassDescriptor current, @NotNull DescriptorSink sink ) { - Collection visibleOverridables = filterVisible(current, overridables); + Collection visibleOverridables = filterVisibleFakeOverrides(current, overridables); Modality modality = getMinimalModality(visibleOverridables); boolean allInvisible = visibleOverridables.isEmpty(); Collection effectiveOverridden = allInvisible ? overridables : visibleOverridables; @@ -277,14 +277,15 @@ public class OverrideResolver { } @NotNull - private static Collection filterVisible( + private static Collection filterVisibleFakeOverrides( @NotNull final ClassDescriptor current, @NotNull Collection toFilter ) { return Collections2.filter(toFilter, new Predicate() { @Override public boolean apply(@Nullable CallableMemberDescriptor descriptor) { - return Visibilities.isVisible(descriptor, current); + //nested class could capture private member, so check for private visibility added + return descriptor.getVisibility() != Visibilities.PRIVATE && Visibilities.isVisible(descriptor, current); } }); } diff --git a/compiler/testData/codegen/box/objects/kt3684.kt b/compiler/testData/codegen/box/objects/kt3684.kt new file mode 100644 index 00000000000..53e742f1764 --- /dev/null +++ b/compiler/testData/codegen/box/objects/kt3684.kt @@ -0,0 +1,16 @@ +open class X(private val n: String) { + + fun foo(): String { + return object : X("inner") { + fun print(): String { + return n; + } + }.print() + } +} + + +fun box() : String { + return X("OK").foo() +} + diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index a6e538735e7..5f3f94a2501 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -3168,6 +3168,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest("compiler/testData/codegen/box/objects/kt3238.kt"); } + @TestMetadata("kt3684.kt") + public void testKt3684() throws Exception { + doTest("compiler/testData/codegen/box/objects/kt3684.kt"); + } + @TestMetadata("kt535.kt") public void testKt535() throws Exception { doTest("compiler/testData/codegen/box/objects/kt535.kt");