Added 'package' visibility for Java descriptors
This commit is contained in:
+22
-4
@@ -77,6 +77,23 @@ public class JavaDescriptorResolver {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private static Visibility PACKAGE_VISIBILITY = new Visibility("package", false) {
|
||||||
|
@Override
|
||||||
|
protected boolean isVisible(@NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) {
|
||||||
|
NamespaceDescriptor parentPackage = DescriptorUtils.getParentOfType(what, NamespaceDescriptor.class);
|
||||||
|
NamespaceDescriptor fromPackage = DescriptorUtils.getParentOfType(from, NamespaceDescriptor.class, false);
|
||||||
|
assert parentPackage != null;
|
||||||
|
return parentPackage.equals(fromPackage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Integer compareTo(@NotNull Visibility visibility) {
|
||||||
|
if (this == visibility) return 0;
|
||||||
|
if (visibility == Visibilities.PRIVATE) return 1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private enum TypeParameterDescriptorOrigin {
|
private enum TypeParameterDescriptorOrigin {
|
||||||
JAVA,
|
JAVA,
|
||||||
KOTLIN,
|
KOTLIN,
|
||||||
@@ -1561,7 +1578,7 @@ public class JavaDescriptorResolver {
|
|||||||
|
|
||||||
private TypeSubstitutor typeSubstitutorForGenericSupertypes(ResolverScopeData scopeData) {
|
private TypeSubstitutor typeSubstitutorForGenericSupertypes(ResolverScopeData scopeData) {
|
||||||
if (scopeData instanceof ResolverClassData) {
|
if (scopeData instanceof ResolverClassData) {
|
||||||
return createSubstitutorForGenericSupertypes(((ResolverClassData) scopeData).getClassDescriptor());
|
return createSubstitutorForGenericSupertypes(((ResolverClassData)scopeData).getClassDescriptor());
|
||||||
} else {
|
} else {
|
||||||
return TypeSubstitutor.EMPTY;
|
return TypeSubstitutor.EMPTY;
|
||||||
}
|
}
|
||||||
@@ -1625,10 +1642,11 @@ public class JavaDescriptorResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Visibility resolveVisibilityFromPsiModifiers(PsiModifierListOwner modifierListOwner) {
|
private static Visibility resolveVisibilityFromPsiModifiers(PsiModifierListOwner modifierListOwner) {
|
||||||
//TODO report error
|
|
||||||
return modifierListOwner.hasModifierProperty(PsiModifier.PUBLIC) ? Visibilities.PUBLIC :
|
return modifierListOwner.hasModifierProperty(PsiModifier.PUBLIC) ? Visibilities.PUBLIC :
|
||||||
(modifierListOwner.hasModifierProperty(PsiModifier.PRIVATE) ? Visibilities.PRIVATE :
|
(modifierListOwner.hasModifierProperty(PsiModifier.PRIVATE) ? Visibilities.PRIVATE :
|
||||||
(modifierListOwner.hasModifierProperty(PsiModifier.PROTECTED) ? Visibilities.PROTECTED : Visibilities.PUBLIC));//todo
|
(modifierListOwner.hasModifierProperty(PsiModifier.PROTECTED) ? Visibilities.PROTECTED :
|
||||||
|
//Visibilities.PUBLIC));
|
||||||
|
PACKAGE_VISIBILITY));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ClassDescriptor> resolveInnerClasses(DeclarationDescriptor owner, PsiClass psiClass, boolean staticMembers) {
|
public List<ClassDescriptor> resolveInnerClasses(DeclarationDescriptor owner, PsiClass psiClass, boolean staticMembers) {
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
//FILE: a/MyJavaClass.java
|
||||||
|
package a;
|
||||||
|
|
||||||
|
class MyJavaClass {
|
||||||
|
}
|
||||||
|
|
||||||
|
//FILE:a.kt
|
||||||
|
package a
|
||||||
|
|
||||||
|
val mc = MyJavaClass()
|
||||||
|
|
||||||
|
//FILE: b.kt
|
||||||
|
package b
|
||||||
|
|
||||||
|
import a.MyJavaClass
|
||||||
|
|
||||||
|
val mc1 = <!UNRESOLVED_REFERENCE!>MyJavaClass<!>()
|
||||||
|
|
||||||
|
//FILE: c.kt
|
||||||
|
package a.c
|
||||||
|
|
||||||
|
import a.MyJavaClass
|
||||||
|
|
||||||
|
val mc1 = <!UNRESOLVED_REFERENCE!>MyJavaClass<!>()
|
||||||
Reference in New Issue
Block a user