From 8885d5709ef33797785e4e3a87317958e5ca0c4c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 16 May 2014 15:30:41 +0400 Subject: [PATCH] Private inside a package should be visible only inside this package in the same module --- .../tests/multimodule/packagePrivate.kt | 19 +++++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 5 +++++ .../jet/lang/descriptors/Visibilities.java | 5 +++-- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/multimodule/packagePrivate.kt 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(); }