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
@@ -157,7 +157,7 @@ class JavaSymbolProvider(
session = this@JavaSymbolProvider.session
symbol = firSymbol
name = javaClass.name
visibility = javaClass.visibility.toFirVisibility()
visibility = javaClass.visibility
modality = javaClass.modality
classKind = javaClass.classKind
this.isTopLevel = outerClassId == null
@@ -174,7 +174,7 @@ class JavaSymbolProvider(
}
}
status = FirResolvedDeclarationStatusImpl(
javaClass.visibility.toFirVisibility(),
javaClass.visibility,
javaClass.modality
).apply {
this.isInner = !isTopLevel && !this@buildJavaClass.isStatic
@@ -197,7 +197,7 @@ class JavaSymbolProvider(
symbol = FirVariableSymbol(fieldId)
name = fieldName
status = FirResolvedDeclarationStatusImpl(
javaField.visibility.toFirVisibility(),
javaField.visibility,
javaField.modality
).apply {
isStatic = javaField.isStatic
@@ -216,7 +216,7 @@ class JavaSymbolProvider(
symbol = FirFieldSymbol(fieldId)
name = fieldName
status = FirResolvedDeclarationStatusImpl(
javaField.visibility.toFirVisibility(),
javaField.visibility,
javaField.modality
).apply {
isStatic = javaField.isStatic
@@ -224,7 +224,7 @@ class JavaSymbolProvider(
isActual = false
isOverride = false
}
visibility = javaField.visibility.toFirVisibility()
visibility = javaField.visibility
modality = javaField.modality
returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session, javaTypeParameterStack)
isVar = !javaField.isFinal
@@ -248,7 +248,7 @@ class JavaSymbolProvider(
source = (javaMethod as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
symbol = methodSymbol
name = methodName
visibility = javaMethod.visibility.toFirVisibility()
visibility = javaMethod.visibility
modality = javaMethod.modality
returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session, javaTypeParameterStack)
isStatic = javaMethod.isStatic
@@ -260,7 +260,7 @@ class JavaSymbolProvider(
)
}
status = FirResolvedDeclarationStatusImpl(
javaMethod.visibility.toFirVisibility(),
javaMethod.visibility,
javaMethod.modality
).apply {
isStatic = javaMethod.isStatic
@@ -342,7 +342,7 @@ class JavaSymbolProvider(
}
for (javaConstructor in javaClassDeclaredConstructors) {
declarations += prepareJavaConstructor(
visibility = javaConstructor.visibility.toFirVisibility(),
visibility = javaConstructor.visibility,
psi = (javaConstructor as? JavaElementImpl<*>)?.psi,
).apply {
this.typeParameters += javaConstructor.typeParameters.convertTypeParameters(javaTypeParameterStack)
@@ -411,5 +411,3 @@ class JavaSymbolProvider(
fun FqName.topLevelName() =
asString().substringBefore(".")
@@ -8,9 +8,6 @@ package org.jetbrains.kotlin.fir.java
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
@@ -43,7 +40,6 @@ import org.jetbrains.kotlin.load.java.typeEnhancement.TypeComponentPosition
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.types.Variance.*
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
internal val JavaModifierListOwner.modality: Modality
get() = when {
@@ -526,18 +522,3 @@ private fun JavaType.toFirResolvedTypeRef(
type = ConeClassErrorType(ConeSimpleDiagnostic("Unexpected JavaType: $this", DiagnosticKind.Java))
}
}
fun DescriptorVisibility.toFirVisibility(): Visibility = when (this) {
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE -> Visibilities.Private
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE_TO_THIS -> Visibilities.PrivateToThis
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PROTECTED -> Visibilities.Protected
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.INTERNAL -> Visibilities.Internal
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC -> Visibilities.Public
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.LOCAL -> Visibilities.Local
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.INVISIBLE_FAKE -> Visibilities.InvisibleFake
org.jetbrains.kotlin.descriptors.DescriptorVisibilities.UNKNOWN -> Visibilities.Unknown
org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PACKAGE_VISIBILITY -> JavaVisibilities.PackageVisibility
org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE -> JavaVisibilities.ProtectedAndPackage
org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY -> JavaVisibilities.ProtectedStaticVisibility
else -> error("Unknown visiblity: $this")
}
@@ -23,7 +23,7 @@ import com.intellij.psi.PsiTypeParameter
import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.asJava.KtLightClassMarker
import org.jetbrains.kotlin.asJava.isSyntheticValuesOrValueOfMethod
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.load.java.structure.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
@@ -111,7 +111,7 @@ class JavaClassImpl(psiClass: PsiClass) : JavaClassifierImpl<PsiClass>(psiClass)
override val isFinal: Boolean
get() = JavaElementUtil.isFinal(this)
override val visibility: DescriptorVisibility
override val visibility: Visibility
get() = JavaElementUtil.getVisibility(this)
override val lightClassOriginKind: LightClassOriginKind?
@@ -17,12 +17,15 @@
package org.jetbrains.kotlin.load.java.structure.impl;
import com.intellij.codeInsight.ExternalAnnotationsManager;
import com.intellij.psi.*;
import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiAnnotationOwner;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.PsiModifierListOwner;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
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.JavaAnnotation;
import org.jetbrains.kotlin.name.FqName;
@@ -50,18 +53,18 @@ import static org.jetbrains.kotlin.load.java.structure.impl.JavaElementCollectio
}
@NotNull
public static DescriptorVisibility getVisibility(@NotNull JavaModifierListOwnerImpl owner) {
public static Visibility getVisibility(@NotNull JavaModifierListOwnerImpl owner) {
PsiModifierListOwner psiOwner = owner.getPsi();
if (psiOwner.hasModifierProperty(PsiModifier.PUBLIC)) {
return DescriptorVisibilities.PUBLIC;
return Visibilities.Public.INSTANCE;
}
if (psiOwner.hasModifierProperty(PsiModifier.PRIVATE)) {
return DescriptorVisibilities.PRIVATE;
return Visibilities.Private.INSTANCE;
}
if (psiOwner.hasModifierProperty(PsiModifier.PROTECTED)) {
return owner.isStatic() ? JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY : JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE;
return owner.isStatic() ? JavaVisibilities.ProtectedStaticVisibility.INSTANCE : JavaVisibilities.ProtectedAndPackage.INSTANCE;
}
return JavaDescriptorVisibilities.PACKAGE_VISIBILITY;
return JavaVisibilities.PackageVisibility.INSTANCE;
}
@NotNull
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiMember;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.DescriptorVisibility;
import org.jetbrains.kotlin.descriptors.Visibility;
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
import org.jetbrains.kotlin.load.java.structure.JavaClass;
import org.jetbrains.kotlin.load.java.structure.JavaMember;
@@ -76,7 +76,7 @@ public abstract class JavaMemberImpl<Psi extends PsiMember> extends JavaElementI
@NotNull
@Override
public DescriptorVisibility getVisibility() {
public Visibility getVisibility() {
return JavaElementUtil.getVisibility(this);
}
@@ -21,8 +21,8 @@ import com.intellij.psi.PsiParameter;
import com.intellij.psi.impl.compiled.ClsParameterImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities;
import org.jetbrains.kotlin.descriptors.DescriptorVisibility;
import org.jetbrains.kotlin.descriptors.Visibilities;
import org.jetbrains.kotlin.descriptors.Visibility;
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
import org.jetbrains.kotlin.load.java.structure.JavaType;
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter;
@@ -60,8 +60,8 @@ public class JavaValueParameterImpl extends JavaElementImpl<PsiParameter>
@NotNull
@Override
public DescriptorVisibility getVisibility() {
return DescriptorVisibilities.LOCAL;
public Visibility getVisibility() {
return Visibilities.Local.INSTANCE;
}
@NotNull
@@ -16,9 +16,9 @@
package org.jetbrains.kotlin.load.java.structure.impl.classFiles
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 org.jetbrains.kotlin.load.java.structure.MapBasedJavaAnnotationOwner
import org.jetbrains.org.objectweb.asm.Opcodes
@@ -33,13 +33,13 @@ internal interface BinaryJavaModifierListOwner : JavaModifierListOwner, MapBased
override val isAbstract get() = isSet(Opcodes.ACC_ABSTRACT)
override val isStatic get() = isSet(Opcodes.ACC_STATIC)
override val isFinal get() = isSet(Opcodes.ACC_FINAL)
override val visibility: DescriptorVisibility
override val visibility: Visibility
get() = when {
isSet(Opcodes.ACC_PRIVATE) -> DescriptorVisibilities.PRIVATE
isSet(Opcodes.ACC_PRIVATE) -> Visibilities.Private
isSet(Opcodes.ACC_PROTECTED) ->
if (isStatic) JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY else JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE
isSet(Opcodes.ACC_PUBLIC) -> DescriptorVisibilities.PUBLIC
else -> JavaDescriptorVisibilities.PACKAGE_VISIBILITY
if (isStatic) JavaVisibilities.ProtectedStaticVisibility else JavaVisibilities.ProtectedAndPackage
isSet(Opcodes.ACC_PUBLIC) -> Visibilities.Public
else -> JavaVisibilities.PackageVisibility
}
override val isDeprecatedInJavaDoc get() = isSet(Opcodes.ACC_DEPRECATED)
@@ -20,19 +20,20 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiField
import com.intellij.psi.PsiLiteralExpression
import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
import org.jetbrains.kotlin.javac.JavaClassWithClassId
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.load.java.structure.*
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
class KotlinClassifiersCache(sourceFiles: Collection<KtFile>,
@@ -98,15 +99,15 @@ class MockKotlinClassifier(override val classId: ClassId,
override val fqName: FqName
get() = classId.asSingleFqName()
override val visibility: DescriptorVisibility
override val visibility: Visibility
get() = if (classOrObject == null) {
DescriptorVisibilities.PUBLIC
Visibilities.Public
}
else when (classOrObject.visibilityModifierType()) {
null, KtTokens.PUBLIC_KEYWORD -> DescriptorVisibilities.PUBLIC
KtTokens.PRIVATE_KEYWORD -> DescriptorVisibilities.PRIVATE
KtTokens.PROTECTED_KEYWORD -> DescriptorVisibilities.PROTECTED
else -> JavaDescriptorVisibilities.PACKAGE_VISIBILITY
null, KtTokens.PUBLIC_KEYWORD -> Visibilities.Public
KtTokens.PRIVATE_KEYWORD -> Visibilities.Private
KtTokens.PROTECTED_KEYWORD -> Visibilities.Protected
else -> JavaVisibilities.PackageVisibility
}
override val supertypes: Collection<JavaClassifierType>
@@ -186,7 +187,7 @@ class MockKotlinField(private val psiField: PsiField) : JavaField {
override val isAbstract get() = shouldNotBeCalled()
override val isStatic get() = shouldNotBeCalled()
override val isFinal get() = shouldNotBeCalled()
override val visibility get() = shouldNotBeCalled()
override val visibility: Visibility get() = shouldNotBeCalled()
override val containingClass get() = shouldNotBeCalled()
override val isEnumEntry get() = shouldNotBeCalled()
override val type get() = shouldNotBeCalled()
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.javac.wrappers.symbols
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.JavaClassWithClassId
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.structure.*
@@ -37,7 +37,7 @@ class FakeSymbolBasedClass(
override val isFinal: Boolean get() = false
override val visibility: DescriptorVisibility get() = DescriptorVisibilities.PUBLIC
override val visibility: Visibility get() = Visibilities.Public
override val typeParameters: List<JavaTypeParameter> get() = emptyList()
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.javac.wrappers.symbols
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.CommonClassNames
import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.JavaClassWithClassId
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.structure.*
@@ -54,7 +54,7 @@ class SymbolBasedClass(
override val isFinal: Boolean
get() = element.isFinal
override val visibility: DescriptorVisibility
override val visibility: Visibility
get() = element.getVisibility()
override val typeParameters: List<JavaTypeParameter>
@@ -16,7 +16,7 @@
package org.jetbrains.kotlin.javac.wrappers.symbols
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation
import org.jetbrains.kotlin.load.java.structure.JavaClass
@@ -36,7 +36,7 @@ abstract class SymbolBasedMember<out T : Element>(
override fun findAnnotation(fqName: FqName) = element.findAnnotation(fqName, javac)
override val visibility: DescriptorVisibility
override val visibility: Visibility
get() = element.getVisibility()
override val name: Name
@@ -16,10 +16,10 @@
package org.jetbrains.kotlin.javac.wrappers.symbols
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -36,20 +36,20 @@ internal val Element.isStatic: Boolean
internal val Element.isFinal: Boolean
get() = modifiers.contains(Modifier.FINAL)
internal fun Element.getVisibility(): DescriptorVisibility = modifiers.getVisibility()
internal fun Element.getVisibility(): Visibility = modifiers.getVisibility()
internal fun Set<Modifier>.getVisibility(): DescriptorVisibility =
internal fun Set<Modifier>.getVisibility(): Visibility =
when {
Modifier.PUBLIC in this -> DescriptorVisibilities.PUBLIC
Modifier.PRIVATE in this -> DescriptorVisibilities.PRIVATE
Modifier.PUBLIC in this -> Visibilities.Public
Modifier.PRIVATE in this -> Visibilities.Private
Modifier.PROTECTED in this -> {
if (Modifier.STATIC in this) {
JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY
JavaVisibilities.ProtectedStaticVisibility
} else {
JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE
JavaVisibilities.ProtectedAndPackage
}
}
else -> JavaDescriptorVisibilities.PACKAGE_VISIBILITY
else -> JavaVisibilities.PackageVisibility
}
@@ -23,8 +23,8 @@ import com.sun.source.tree.Tree
import com.sun.tools.javac.code.Flags
import com.sun.tools.javac.tree.JCTree
import com.sun.tools.javac.tree.TreeInfo
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.JavaClassWithClassId
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.structure.*
@@ -62,8 +62,8 @@ class TreeBasedClass(
override val isFinal: Boolean
get() = isEnum || tree.modifiers.isFinal
override val visibility: DescriptorVisibility
get() = if (outerClass?.isInterface == true) PUBLIC else tree.modifiers.visibility
override val visibility: Visibility
get() = if (outerClass?.isInterface == true) Visibilities.Public else tree.modifiers.visibility
override val typeParameters: List<JavaTypeParameter>
get() = tree.typeParameters.map { parameter ->
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.javac.wrappers.trees
import com.sun.source.tree.CompilationUnitTree
import com.sun.tools.javac.tree.JCTree
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.JavaConstructor
@@ -45,7 +45,7 @@ class TreeBasedConstructor(
override val isFinal: Boolean
get() = true
override val visibility: DescriptorVisibility
override val visibility: Visibility
get() = tree.modifiers.visibility
override val typeParameters: List<JavaTypeParameter>
@@ -19,8 +19,8 @@ package org.jetbrains.kotlin.javac.wrappers.trees
import com.sun.source.tree.CompilationUnitTree
import com.sun.tools.javac.code.Flags
import com.sun.tools.javac.tree.JCTree
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.javac.resolve.ConstantEvaluator
import org.jetbrains.kotlin.load.java.structure.JavaClass
@@ -47,8 +47,8 @@ class TreeBasedField(
override val isFinal: Boolean
get() = containingClass.isInterface || tree.modifiers.isFinal
override val visibility: DescriptorVisibility
get() = if (containingClass.isInterface) DescriptorVisibilities.PUBLIC else tree.modifiers.visibility
override val visibility: Visibility
get() = if (containingClass.isInterface) Visibilities.Public else tree.modifiers.visibility
override val isEnumEntry: Boolean
get() = tree.modifiers.flags and Flags.ENUM.toLong() != 0L
@@ -18,8 +18,8 @@ package org.jetbrains.kotlin.javac.wrappers.trees
import com.sun.source.tree.CompilationUnitTree
import com.sun.tools.javac.tree.JCTree
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.java.structure.*
import org.jetbrains.kotlin.name.Name
@@ -43,8 +43,8 @@ class TreeBasedMethod(
override val isFinal: Boolean
get() = tree.modifiers.isFinal
override val visibility: DescriptorVisibility
get() = if (containingClass.isInterface) DescriptorVisibilities.PUBLIC else tree.modifiers.visibility
override val visibility: Visibility
get() = if (containingClass.isInterface) Visibilities.Public else tree.modifiers.visibility
override val typeParameters: List<JavaTypeParameter>
get() = tree.typeParameters.map { TreeBasedTypeParameter(it, compilationUnit, javac, this) }
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.javac.wrappers.trees
import com.sun.tools.javac.tree.JCTree
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.javac.wrappers.symbols.SymbolBasedArrayAnnotationArgument
import org.jetbrains.kotlin.javac.wrappers.symbols.SymbolBasedReferenceAnnotationArgument
import org.jetbrains.kotlin.javac.wrappers.symbols.getVisibility
@@ -39,7 +39,7 @@ internal val JCTree.JCModifiers.isStatic: Boolean
internal val JCTree.JCModifiers.hasDefaultModifier: Boolean
get() = Modifier.DEFAULT in getFlags()
internal val JCTree.JCModifiers.visibility: DescriptorVisibility
internal val JCTree.JCModifiers.visibility: Visibility
get() = getFlags().getVisibility()
internal fun JCTree.annotations(): Collection<JCTree.JCAnnotation> = when (this) {
@@ -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
}
}
}