From 5f0e896843f41730bd4cfac245fa257ab038116d Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Mon, 10 Apr 2017 20:17:23 +0300 Subject: [PATCH] Minor: simplify isVisible of Visibilities.INTERNAL and write comment on non-obvious line --- .../org/jetbrains/kotlin/descriptors/Visibilities.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java index 9493b65544d..f86be0737fb 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java @@ -206,8 +206,14 @@ public class Visibilities { @Override public boolean isVisible(@Nullable ReceiverValue receiver, @NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) { - DeclarationDescriptor fromOrModule = from instanceof PackageViewDescriptor ? ((PackageViewDescriptor) from).getModule() : from; - if (!DescriptorUtils.getContainingModule(fromOrModule).shouldSeeInternalsOf(DescriptorUtils.getContainingModule(what))) return false; + ModuleDescriptor whatModule = DescriptorUtils.getContainingModule(what); + ModuleDescriptor fromModule = DescriptorUtils.getContainingModule(from); + + // Can't invert this condition because CLI compiler analyzes sources as like all in the one module + // and for modules with circular dependency (chunk) JPS provides sources of all modules, + // so we can't be sure that references to an internal member are correct. + if (!fromModule.shouldSeeInternalsOf(whatModule)) return false; + return MODULE_VISIBILITY_HELPER.isInFriendModule(what, from); }