From ecd5dc60adfc4b16faf43404d24e01f1177b6b41 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 3 Dec 2013 19:52:51 +0400 Subject: [PATCH] Correctly checking visibility from package view. --- .../backend/src/org/jetbrains/jet/codegen/CodegenUtil.java | 2 +- .../org/jetbrains/jet/lang/descriptors/Visibilities.java | 6 ++---- .../src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java index 17aa5eb273b..5c5f7b55f58 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java @@ -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) { 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 1094ad26f99..042c8fd8e7f 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/Visibilities.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/Visibilities.java @@ -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)) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index 43b1e8a861b..9733d8527ac 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -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); }