diff --git a/compiler/testData/diagnostics/tests/multimodule/packagePrivate.kt b/compiler/testData/diagnostics/tests/multimodule/packagePrivate.kt new file mode 100644 index 00000000000..3c9aaa57c95 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multimodule/packagePrivate.kt @@ -0,0 +1,19 @@ +// MODULE: m1 +// FILE: a.kt + +package p + +private val a = 1 + +// FILE: b.kt + +package p + +val b = a // same package, same module + +// MODULE: m2(m1) +// FILE: c.kt + +package p + +val c = a // same package, another module \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index d5243441f41..9bc248bbd34 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -4872,6 +4872,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest("compiler/testData/diagnostics/tests/multimodule/internal.kt"); } + @TestMetadata("packagePrivate.kt") + public void testPackagePrivate() throws Exception { + doTest("compiler/testData/diagnostics/tests/multimodule/packagePrivate.kt"); + } + } @TestMetadata("compiler/testData/diagnostics/tests/namedArguments") diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/Visibilities.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/Visibilities.java index 042c8fd8e7f..edd50b72ca2 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/Visibilities.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/Visibilities.java @@ -46,8 +46,9 @@ public class Visibilities { return true; } if (fromParent instanceof PackageFragmentDescriptor) { - return parent instanceof PackageFragmentDescriptor && ((PackageFragmentDescriptor) parent).getFqName() - .isAncestorOf(((PackageFragmentDescriptor) fromParent).getFqName()); + return parent instanceof PackageFragmentDescriptor + && ((PackageFragmentDescriptor) parent).getFqName().isAncestorOf(((PackageFragmentDescriptor) fromParent).getFqName()) + && DescriptorUtils.areInSameModule(fromParent, parent); } fromParent = fromParent.getContainingDeclaration(); }