diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt index 89ff642a4a1..27030654b83 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.config.IncrementalCompilation import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor +import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.diagnostics.DiagnosticUtils import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.fileClasses.getFileClassType @@ -201,8 +202,9 @@ public class MultifileClassCodegen( if (declaration is JetNamedFunction || declaration is JetProperty) { val descriptor = state.bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration) assert(descriptor is CallableMemberDescriptor) { "Expected callable member, was " + descriptor + " for " + declaration.text } - generateCallableMemberTasks.put(descriptor as CallableMemberDescriptor, - { memberCodegen.genFunctionOrProperty(declaration) }) + if (!Visibilities.isPrivate((descriptor as CallableMemberDescriptor).visibility)) { + generateCallableMemberTasks.put(descriptor, { memberCodegen.genFunctionOrProperty(declaration) }) + } } } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java index 64998deca0e..fbdcd370767 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.config.IncrementalCompilation; import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor; +import org.jetbrains.kotlin.descriptors.Visibilities; import org.jetbrains.kotlin.diagnostics.DiagnosticUtils; import org.jetbrains.kotlin.fileClasses.FileClasses; import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo; @@ -356,15 +357,17 @@ public class PackageCodegen { DeclarationDescriptor descriptor = state.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration); assert descriptor instanceof CallableMemberDescriptor : "Expected callable member, was " + descriptor + " for " + declaration.getText(); - generateCallableMemberTasks.put( - (CallableMemberDescriptor) descriptor, - new Runnable() { - @Override - public void run() { - memberCodegen.genFunctionOrProperty(declaration); + if (!Visibilities.isPrivate(((CallableMemberDescriptor) descriptor).getVisibility())) { + generateCallableMemberTasks.put( + (CallableMemberDescriptor) descriptor, + new Runnable() { + @Override + public void run() { + memberCodegen.genFunctionOrProperty(declaration); + } } - } - ); + ); + } } } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java index cb75f8b91d8..cdac043d141 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java @@ -412,6 +412,10 @@ public class PropertyCodegen { @Nullable JetPropertyAccessor accessor, @NotNull PropertyAccessorDescriptor accessorDescriptor ) { + if (context instanceof MultifileClassFacadeContext && Visibilities.isPrivate(accessorDescriptor.getVisibility())) { + return; + } + FunctionGenerationStrategy strategy; if (accessor == null || !accessor.hasBody()) { if (p instanceof JetProperty && ((JetProperty) p).hasDelegate()) { diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java index 08ab24527b1..bd489f2046b 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/_DefaultPackage.java @@ -78,7 +78,4 @@ public final class _DefaultPackage { @org.jetbrains.annotations.NotNull @org.jetbrains.annotations.Nullable public static final java.lang.String nullableWithNN() { /* compiled code */ } - - @kotlin.jvm.internal.KotlinDelegatedMethod(implementationClassName = "_DefaultPackageKt") - private static final java.lang.String privateFun(java.lang.String a, java.lang.String b) { /* compiled code */ } } \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt index 3efa080557f..a08c74f6d60 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt @@ -146,9 +146,11 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi val klass = classLoader.loadClass(className).sure { "Couldn't load class $className" } val header = ReflectKotlinClass.create(klass)?.getClassHeader() - if (header?.kind == KotlinClassHeader.Kind.PACKAGE_FACADE) { + if (header?.kind == KotlinClassHeader.Kind.PACKAGE_FACADE || header?.kind == KotlinClassHeader.Kind.FILE_FACADE) { val packageView = module.getPackage(LoadDescriptorUtil.TEST_PACKAGE_FQNAME) - packageScopes.add(packageView.memberScope) + if (!packageScopes.contains(packageView.memberScope)) { + packageScopes.add(packageView.memberScope) + } } else if (header == null || (header.kind == KotlinClassHeader.Kind.CLASS && !header.isLocalClass)) { // Either a normal Kotlin class or a Java class diff --git a/idea/testData/codeInsight/lineMarker/recursiveCall/differentImplicitReceiver.kt b/idea/testData/codeInsight/lineMarker/recursiveCall/differentImplicitReceiver.kt index 04f13bd3447..e4367b9422c 100644 --- a/idea/testData/codeInsight/lineMarker/recursiveCall/differentImplicitReceiver.kt +++ b/idea/testData/codeInsight/lineMarker/recursiveCall/differentImplicitReceiver.kt @@ -1,4 +1,4 @@ -private fun Any.foo() { +fun Any.foo() { with("different extension receiver") { foo() } diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveFunctionToPackageWithConflicts/conflicts.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveFunctionToPackageWithConflicts/conflicts.txt index 0871e3f05a6..ed570459db8 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveFunctionToPackageWithConflicts/conflicts.txt +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveFunctionToPackageWithConflicts/conflicts.txt @@ -1,4 +1,3 @@ Function a.test uses package-private class a.Foo Function a.test uses package-private function a.foo -Package-private function a.test will no longer be accessible from function a.bar -Package-private function a.test will no longer be accessible from method J.bar() +Package-private function a.test will no longer be accessible from function a.bar \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/movePropertyToPackageWithConflicts/conflicts.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/movePropertyToPackageWithConflicts/conflicts.txt index 933a50ab9e6..a39c073a81b 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/movePropertyToPackageWithConflicts/conflicts.txt +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/movePropertyToPackageWithConflicts/conflicts.txt @@ -1,4 +1,3 @@ Package-private property a.test will no longer be accessible from function a.bar -Package-private property a.test will no longer be accessible from method J.bar() Property a.test uses package-private class a.Foo -Property a.test uses package-private function a.foo +Property a.test uses package-private function a.foo \ No newline at end of file