Correctly checking visibility from package view.
This commit is contained in:
@@ -189,7 +189,7 @@ public class CodegenUtil {
|
||||
return true;
|
||||
}
|
||||
DeclarationDescriptor contextDescriptor = context.getContextDescriptor();
|
||||
return DescriptorUtils.isInSameModule(declarationDescriptor, contextDescriptor);
|
||||
return DescriptorUtils.areInSameModule(declarationDescriptor, contextDescriptor);
|
||||
}
|
||||
|
||||
public static boolean hasAbstractMembers(@NotNull ClassDescriptor classDescriptor) {
|
||||
|
||||
@@ -73,7 +73,8 @@ public class Visibilities {
|
||||
public static final Visibility INTERNAL = new Visibility("internal", false) {
|
||||
@Override
|
||||
protected boolean isVisible(@NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) {
|
||||
return DescriptorUtils.isInSameModule(what, from);
|
||||
DeclarationDescriptor fromOrModule = from instanceof PackageViewDescriptor ? ((PackageViewDescriptor) from).getModule() : from;
|
||||
return DescriptorUtils.areInSameModule(what, fromOrModule);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -120,9 +121,6 @@ public class Visibilities {
|
||||
@NotNull DeclarationDescriptorWithVisibility what,
|
||||
@NotNull DeclarationDescriptor from
|
||||
) {
|
||||
if (from instanceof PackageViewDescriptor) {
|
||||
return null; // TODO 1 review: everything is visible from package view
|
||||
}
|
||||
DeclarationDescriptorWithVisibility parent = what;
|
||||
while (parent != null && parent.getVisibility() != LOCAL) {
|
||||
if (!parent.getVisibility().isVisible(parent, from)) {
|
||||
|
||||
@@ -136,9 +136,9 @@ public class DescriptorUtils {
|
||||
return descriptor.getContainingDeclaration() instanceof PackageFragmentDescriptor;
|
||||
}
|
||||
|
||||
public static boolean isInSameModule(@NotNull DeclarationDescriptor first, @NotNull DeclarationDescriptor second) {
|
||||
ModuleDescriptor parentModule = getParentOfType(first, ModuleDescriptorImpl.class, false);
|
||||
ModuleDescriptor fromModule = getParentOfType(second, ModuleDescriptorImpl.class, false);
|
||||
public static boolean areInSameModule(@NotNull DeclarationDescriptor first, @NotNull DeclarationDescriptor second) {
|
||||
ModuleDescriptor parentModule = getParentOfType(first, ModuleDescriptor.class, false);
|
||||
ModuleDescriptor fromModule = getParentOfType(second, ModuleDescriptor.class, false);
|
||||
assert parentModule != null && fromModule != null;
|
||||
return parentModule.equals(fromModule);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user