diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 9330708e112..929f990623e 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -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(".") - - diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt index ae9a705c05e..0a4c3cd5577 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt @@ -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") -} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt index ed8e69130ba..f5085cd1021 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt @@ -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) override val isFinal: Boolean get() = JavaElementUtil.isFinal(this) - override val visibility: DescriptorVisibility + override val visibility: Visibility get() = JavaElementUtil.getVisibility(this) override val lightClassOriginKind: LightClassOriginKind? diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaElementUtil.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaElementUtil.java index baaf090e85e..173cbd51253 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaElementUtil.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaElementUtil.java @@ -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 diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java index f4f2f100cd0..250485886a1 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java @@ -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 extends JavaElementI @NotNull @Override - public DescriptorVisibility getVisibility() { + public Visibility getVisibility() { return JavaElementUtil.getVisibility(this); } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java index 1d3e562205c..cca18130e04 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java @@ -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 @NotNull @Override - public DescriptorVisibility getVisibility() { - return DescriptorVisibilities.LOCAL; + public Visibility getVisibility() { + return Visibilities.Local.INSTANCE; } @NotNull diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/commonMixins.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/commonMixins.kt index 39f71aedd0a..af3b9fe3e97 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/commonMixins.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/commonMixins.kt @@ -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) diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt index 00403e0c0fd..7703b7cddb7 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt @@ -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, @@ -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 @@ -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() diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/FakeSymbolBasedClass.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/FakeSymbolBasedClass.kt index 3a0ccd7024d..0a6ad55ad9e 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/FakeSymbolBasedClass.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/FakeSymbolBasedClass.kt @@ -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 get() = emptyList() diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClass.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClass.kt index 467cfd591fa..2366edc88d9 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClass.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClass.kt @@ -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 diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt index c23ba3bcdcf..4cd1c742d27 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt @@ -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( override fun findAnnotation(fqName: FqName) = element.findAnnotation(fqName, javac) - override val visibility: DescriptorVisibility + override val visibility: Visibility get() = element.getVisibility() override val name: Name diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt index b1732fb558a..25a2fad7062 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt @@ -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.getVisibility(): DescriptorVisibility = +internal fun Set.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 } diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt index 9f69ce9a059..187811ccdab 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt @@ -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 get() = tree.typeParameters.map { parameter -> diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedConstructor.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedConstructor.kt index 858c1398a42..b0a701f8d2a 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedConstructor.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedConstructor.kt @@ -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 diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedField.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedField.kt index 0e8437ba78a..3e9c2347036 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedField.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedField.kt @@ -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 diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMethod.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMethod.kt index 6ed70096c54..475eb69274e 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMethod.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMethod.kt @@ -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 get() = tree.typeParameters.map { TreeBasedTypeParameter(it, compilationUnit, javac, this) } diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt index 848033e28fe..be8a5774de1 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt @@ -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 = when (this) { diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt index a20db936729..6f989521869 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt @@ -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 diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt index deb8d9667db..63878923daf 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -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) diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt index 4f4daa35dd4..cb435ecf92c 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaScope.kt @@ -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 ) } diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt index dc618a8746f..45e221f9716 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt @@ -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 { diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/utils.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/utils.kt index 4800ff84729..020f81b21ea 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/utils.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/utils.kt @@ -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) diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaModifierListOwner.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaModifierListOwner.kt index ba5e20f0d0c..e9400840f65 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaModifierListOwner.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaModifierListOwner.kt @@ -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 } } }