Considering static members when checking package-private visibility.
This commit is contained in:
+15
-2
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.jet.lang.resolve.java;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
||||
@@ -134,8 +135,20 @@ public class JavaVisibilities {
|
||||
};
|
||||
|
||||
private static boolean areInSamePackage(@NotNull DeclarationDescriptor first, @NotNull DeclarationDescriptor second) {
|
||||
PackageFragmentDescriptor whatPackage = DescriptorUtils.getParentOfType(first, PackageFragmentDescriptor.class, false);
|
||||
PackageFragmentDescriptor fromPackage = DescriptorUtils.getParentOfType(second, PackageFragmentDescriptor.class, false);
|
||||
PackageFragmentDescriptor whatPackage = getPackageStaticsAware(first);
|
||||
PackageFragmentDescriptor fromPackage = getPackageStaticsAware(second);
|
||||
return fromPackage != null && whatPackage != null && whatPackage.getFqName().equals(fromPackage.getFqName());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PackageFragmentDescriptor getPackageStaticsAware(@NotNull DeclarationDescriptor member) {
|
||||
PackageFragmentDescriptor packageFragment = DescriptorUtils.getParentOfType(member, PackageFragmentDescriptor.class, false);
|
||||
if (packageFragment instanceof JavaPackageFragmentDescriptor
|
||||
&& ((JavaPackageFragmentDescriptor) packageFragment).getKind() == JavaPackageFragmentDescriptor.Kind.CLASS_STATICS) {
|
||||
ClassDescriptor classForPackage =
|
||||
((JavaPackageFragmentDescriptor) packageFragment).getJavaDescriptorResolver().resolveClass(packageFragment.getFqName());
|
||||
return DescriptorUtils.getParentOfType(classForPackage, PackageFragmentDescriptor.class, false);
|
||||
}
|
||||
return packageFragment;
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -20,6 +20,7 @@ import com.google.common.collect.Lists;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.Visibility;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
||||
|
||||
Reference in New Issue
Block a user