Replace DescriptorVisibility with Visibility in Java model classes

This commit is contained in:
Dmitriy Novozhilov
2020-09-01 17:48:04 +03:00
parent 696f089b3e
commit b81c0e91d5
23 changed files with 109 additions and 119 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.load.java.lazy.types.toAttributes
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.JavaClassifierType
import org.jetbrains.kotlin.load.java.structure.JavaType
import org.jetbrains.kotlin.load.java.toDescriptorVisibility
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.isValidJavaFqName
import org.jetbrains.kotlin.resolve.constants.StringValue
@@ -89,8 +90,13 @@ class LazyJavaClassDescriptor(
// which can be inherited from the same package.
// Kotlin considers this "private in package" just as "private" and thinks they are invisible for inheritors,
// so their functions are invisible fake which is not true.
override fun getVisibility() =
if (visibility == DescriptorVisibilities.PRIVATE && jClass.outerClass == null) JavaDescriptorVisibilities.PACKAGE_VISIBILITY else visibility
override fun getVisibility(): DescriptorVisibility {
return if (visibility == DescriptorVisibilities.PRIVATE && jClass.outerClass == null) {
JavaDescriptorVisibilities.PACKAGE_VISIBILITY
} else {
visibility.toDescriptorVisibility()
}
}
override fun isInner() = isInner
override fun isData() = false
@@ -496,7 +496,7 @@ class LazyJavaClassMemberScope(
val annotations = c.resolveAnnotations(method)
val propertyDescriptor = JavaPropertyDescriptor.create(
ownerDescriptor, annotations, modality, method.visibility,
ownerDescriptor, annotations, modality, method.visibility.toDescriptorVisibility(),
/* isVar = */ false, method.name, c.components.sourceElementFactory.source(method),
/* isStaticFinal = */ false
)
@@ -606,7 +606,7 @@ class LazyJavaClassMemberScope(
classDescriptor.declaredTypeParameters +
constructor.typeParameters.map { p -> c.typeParameterResolver.resolveTypeParameter(p)!! }
constructorDescriptor.initialize(valueParameters.descriptors, constructor.visibility, constructorTypeParameters)
constructorDescriptor.initialize(valueParameters.descriptors, constructor.visibility.toDescriptorVisibility(), constructorTypeParameters)
constructorDescriptor.setHasStableParameterNames(false)
constructorDescriptor.setHasSynthesizedParameterNames(valueParameters.hasSynthesizedNames)
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.load.java.structure.JavaArrayType
import org.jetbrains.kotlin.load.java.structure.JavaField
import org.jetbrains.kotlin.load.java.structure.JavaMethod
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter
import org.jetbrains.kotlin.load.java.toDescriptorVisibility
import org.jetbrains.kotlin.load.kotlin.computeJvmDescriptor
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.*
@@ -174,7 +175,7 @@ abstract class LazyJavaScope(
effectiveSignature.valueParameters,
effectiveSignature.returnType,
Modality.convertFromFlags(method.isAbstract, !method.isFinal),
method.visibility,
method.visibility.toDescriptorVisibility(),
if (effectiveSignature.receiverType != null)
mapOf(JavaMethodDescriptor.ORIGINAL_VALUE_PARAMETER_FOR_EXTENSION_RECEIVER to valueParameters.descriptors.first())
else
@@ -321,7 +322,7 @@ abstract class LazyJavaScope(
val annotations = c.resolveAnnotations(field)
return JavaPropertyDescriptor.create(
ownerDescriptor, annotations, Modality.FINAL, field.visibility, isVar, field.name,
ownerDescriptor, annotations, Modality.FINAL, field.visibility.toDescriptorVisibility(), isVar, field.name,
c.components.sourceElementFactory.source(field), /* isConst = */ field.isFinalStatic
)
}
@@ -16,7 +16,7 @@
package org.jetbrains.kotlin.load.java.structure
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
@@ -38,7 +38,7 @@ interface JavaModifierListOwner : JavaElement {
val isAbstract: Boolean
val isStatic: Boolean
val isFinal: Boolean
val visibility: DescriptorVisibility
val visibility: Visibility
}
interface JavaTypeParameterListOwner : JavaElement {
@@ -18,9 +18,7 @@ package org.jetbrains.kotlin.load.java
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.deprecation.Deprecation
@@ -72,3 +70,5 @@ class DeprecationCausedByFunctionN(override val target: DeclarationDescriptor) :
override val message: String?
get() = "Java members containing references to ${JavaToKotlinClassMap.FUNCTION_N_FQ_NAME} are not supported"
}
internal fun Visibility.toDescriptorVisibility(): DescriptorVisibility = JavaDescriptorVisibilities.toDescriptorVisibility(this)
@@ -16,9 +16,9 @@
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
import org.jetbrains.kotlin.load.java.structure.JavaModifierListOwner
import java.lang.reflect.Modifier
@@ -34,15 +34,15 @@ interface ReflectJavaModifierListOwner : JavaModifierListOwner {
override val isFinal: Boolean
get() = Modifier.isFinal(modifiers)
override val visibility: DescriptorVisibility
override val visibility: Visibility
get() = modifiers.let { modifiers ->
when {
Modifier.isPublic(modifiers) -> DescriptorVisibilities.PUBLIC
Modifier.isPrivate(modifiers) -> DescriptorVisibilities.PRIVATE
Modifier.isPublic(modifiers) -> Visibilities.Public
Modifier.isPrivate(modifiers) -> Visibilities.Private
Modifier.isProtected(modifiers) ->
if (Modifier.isStatic(modifiers)) JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY
else JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE
else -> JavaDescriptorVisibilities.PACKAGE_VISIBILITY
if (Modifier.isStatic(modifiers)) JavaVisibilities.ProtectedStaticVisibility
else JavaVisibilities.ProtectedAndPackage
else -> JavaVisibilities.PackageVisibility
}
}
}