diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java index 1c05073c105..6a7c8c9c183 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java @@ -53,6 +53,11 @@ public class Visibilities { if (parent == fromParent) { return true; } + if (fromParent instanceof PackageFragmentDescriptor) { + return parent instanceof PackageFragmentDescriptor + && ((PackageFragmentDescriptor) parent).getFqName().equals(((PackageFragmentDescriptor) fromParent).getFqName()) + && DescriptorUtils.areInSameModule(fromParent, parent); + } fromParent = fromParent.getContainingDeclaration(); } return false; diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index da0f6d5dd2c..27102441062 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -109,6 +109,12 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public static class PureKotlin extends AbstractIncrementalJpsTest { + @TestMetadata("accessPrivateMembers") + public void testAccessPrivateMembers() throws Exception { + String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/"); + doTest(fileName); + } + @TestMetadata("accessingFunctionsViaPackagePart") public void testAccessingFunctionsViaPackagePart() throws Exception { String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/accessingFunctionsViaPackagePart/"); diff --git a/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/bar.kt b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/bar.kt new file mode 100644 index 00000000000..8c016666552 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/bar.kt @@ -0,0 +1,7 @@ +package test + +fun main(args: Array) { + val x: Foo = Foo() + foo() + c +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/bar.kt.new b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/bar.kt.new new file mode 100644 index 00000000000..8c016666552 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/bar.kt.new @@ -0,0 +1,7 @@ +package test + +fun main(args: Array) { + val x: Foo = Foo() + foo() + c +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/build.log b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/build.log new file mode 100644 index 00000000000..6fabb2be215 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/build.log @@ -0,0 +1,7 @@ +Cleaning output files: +out/production/module/test/TestPackage$bar$*.class +out/production/module/test/TestPackage.class +End of files +Compiling files: +src/bar.kt +End of files diff --git a/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/foo.kt b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/foo.kt new file mode 100644 index 00000000000..5f83a146f9d --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/accessPrivateMembers/foo.kt @@ -0,0 +1,9 @@ +package test + +private class Foo + +private fun foo() { + +} + +private val c = 1 \ No newline at end of file