Skip private members in facades
This commit is contained in:
committed by
Max Kammerer
parent
5b3a7a473e
commit
c63d221da3
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
|
|||||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||||
import org.jetbrains.kotlin.fileClasses.getFileClassType
|
import org.jetbrains.kotlin.fileClasses.getFileClassType
|
||||||
@@ -201,8 +202,9 @@ public class MultifileClassCodegen(
|
|||||||
if (declaration is JetNamedFunction || declaration is JetProperty) {
|
if (declaration is JetNamedFunction || declaration is JetProperty) {
|
||||||
val descriptor = state.bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration)
|
val descriptor = state.bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration)
|
||||||
assert(descriptor is CallableMemberDescriptor) { "Expected callable member, was " + descriptor + " for " + declaration.text }
|
assert(descriptor is CallableMemberDescriptor) { "Expected callable member, was " + descriptor + " for " + declaration.text }
|
||||||
generateCallableMemberTasks.put(descriptor as CallableMemberDescriptor,
|
if (!Visibilities.isPrivate((descriptor as CallableMemberDescriptor).visibility)) {
|
||||||
{ memberCodegen.genFunctionOrProperty(declaration) })
|
generateCallableMemberTasks.put(descriptor, { memberCodegen.genFunctionOrProperty(declaration) })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.config.IncrementalCompilation;
|
|||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor;
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor;
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor;
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibilities;
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils;
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils;
|
||||||
import org.jetbrains.kotlin.fileClasses.FileClasses;
|
import org.jetbrains.kotlin.fileClasses.FileClasses;
|
||||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo;
|
import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo;
|
||||||
@@ -356,15 +357,17 @@ public class PackageCodegen {
|
|||||||
DeclarationDescriptor descriptor = state.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
DeclarationDescriptor descriptor = state.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
||||||
assert descriptor instanceof CallableMemberDescriptor :
|
assert descriptor instanceof CallableMemberDescriptor :
|
||||||
"Expected callable member, was " + descriptor + " for " + declaration.getText();
|
"Expected callable member, was " + descriptor + " for " + declaration.getText();
|
||||||
generateCallableMemberTasks.put(
|
if (!Visibilities.isPrivate(((CallableMemberDescriptor) descriptor).getVisibility())) {
|
||||||
(CallableMemberDescriptor) descriptor,
|
generateCallableMemberTasks.put(
|
||||||
new Runnable() {
|
(CallableMemberDescriptor) descriptor,
|
||||||
@Override
|
new Runnable() {
|
||||||
public void run() {
|
@Override
|
||||||
memberCodegen.genFunctionOrProperty(declaration);
|
public void run() {
|
||||||
|
memberCodegen.genFunctionOrProperty(declaration);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -412,6 +412,10 @@ public class PropertyCodegen {
|
|||||||
@Nullable JetPropertyAccessor accessor,
|
@Nullable JetPropertyAccessor accessor,
|
||||||
@NotNull PropertyAccessorDescriptor accessorDescriptor
|
@NotNull PropertyAccessorDescriptor accessorDescriptor
|
||||||
) {
|
) {
|
||||||
|
if (context instanceof MultifileClassFacadeContext && Visibilities.isPrivate(accessorDescriptor.getVisibility())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
FunctionGenerationStrategy strategy;
|
FunctionGenerationStrategy strategy;
|
||||||
if (accessor == null || !accessor.hasBody()) {
|
if (accessor == null || !accessor.hasBody()) {
|
||||||
if (p instanceof JetProperty && ((JetProperty) p).hasDelegate()) {
|
if (p instanceof JetProperty && ((JetProperty) p).hasDelegate()) {
|
||||||
|
|||||||
-3
@@ -78,7 +78,4 @@ public final class _DefaultPackage {
|
|||||||
@org.jetbrains.annotations.NotNull
|
@org.jetbrains.annotations.NotNull
|
||||||
@org.jetbrains.annotations.Nullable
|
@org.jetbrains.annotations.Nullable
|
||||||
public static final java.lang.String nullableWithNN() { /* compiled code */ }
|
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 */ }
|
|
||||||
}
|
}
|
||||||
+4
-2
@@ -146,9 +146,11 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi
|
|||||||
val klass = classLoader.loadClass(className).sure { "Couldn't load class $className" }
|
val klass = classLoader.loadClass(className).sure { "Couldn't load class $className" }
|
||||||
val header = ReflectKotlinClass.create(klass)?.getClassHeader()
|
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)
|
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)) {
|
else if (header == null || (header.kind == KotlinClassHeader.Kind.CLASS && !header.isLocalClass)) {
|
||||||
// Either a normal Kotlin class or a Java class
|
// Either a normal Kotlin class or a Java class
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
private fun Any.foo() {
|
fun Any.foo() {
|
||||||
with("different extension receiver") {
|
with("different extension receiver") {
|
||||||
foo()
|
foo()
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
Function a.test uses package-private class a.Foo
|
Function a.test uses package-private class a.Foo
|
||||||
Function a.test uses package-private function 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 function a.bar
|
||||||
Package-private function a.test will no longer be accessible from method J.bar()
|
|
||||||
|
|||||||
-1
@@ -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 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 class a.Foo
|
||||||
Property a.test uses package-private function a.foo
|
Property a.test uses package-private function a.foo
|
||||||
Reference in New Issue
Block a user