Rename Visibility to DescriptorVisibility

This commit is contained in:
Dmitriy Novozhilov
2020-09-01 16:06:06 +03:00
parent 2bcd8ee07f
commit d1fd1da56f
379 changed files with 2240 additions and 2250 deletions
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.incremental package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.load.java.JavaVisibilities import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
import org.jetbrains.kotlin.metadata.java.JavaClassProtoBuf import org.jetbrains.kotlin.metadata.java.JavaClassProtoBuf
@@ -41,7 +41,7 @@ class JavaClassesSerializerExtension : KotlinSerializerExtensionBase(BuiltInSeri
childSerializer: DescriptorSerializer childSerializer: DescriptorSerializer
) { ) {
super.serializeClass(descriptor, proto, versionRequirementTable, childSerializer) super.serializeClass(descriptor, proto, versionRequirementTable, childSerializer)
if (descriptor.visibility == JavaVisibilities.PACKAGE_VISIBILITY) { if (descriptor.visibility == JavaDescriptorVisibilities.PACKAGE_VISIBILITY) {
proto.setExtension(JavaClassProtoBuf.isPackagePrivateClass, true) proto.setExtension(JavaClassProtoBuf.isPackagePrivateClass, true)
} }
} }
@@ -50,7 +50,7 @@ class JavaClassesSerializerExtension : KotlinSerializerExtensionBase(BuiltInSeri
proto: ProtoBuf.Constructor.Builder, proto: ProtoBuf.Constructor.Builder,
childSerializer: DescriptorSerializer) { childSerializer: DescriptorSerializer) {
super.serializeConstructor(descriptor, proto, childSerializer) super.serializeConstructor(descriptor, proto, childSerializer)
if (descriptor.visibility == JavaVisibilities.PACKAGE_VISIBILITY) { if (descriptor.visibility == JavaDescriptorVisibilities.PACKAGE_VISIBILITY) {
proto.setExtension(JavaClassProtoBuf.isPackagePrivateConstructor, true) proto.setExtension(JavaClassProtoBuf.isPackagePrivateConstructor, true)
} }
} }
@@ -62,7 +62,7 @@ class JavaClassesSerializerExtension : KotlinSerializerExtensionBase(BuiltInSeri
childSerializer: DescriptorSerializer childSerializer: DescriptorSerializer
) { ) {
super.serializeFunction(descriptor, proto, versionRequirementTable, childSerializer) super.serializeFunction(descriptor, proto, versionRequirementTable, childSerializer)
if (descriptor.visibility == JavaVisibilities.PACKAGE_VISIBILITY) { if (descriptor.visibility == JavaDescriptorVisibilities.PACKAGE_VISIBILITY) {
proto.setExtension(JavaClassProtoBuf.isPackagePrivateMethod, true) proto.setExtension(JavaClassProtoBuf.isPackagePrivateMethod, true)
} }
@@ -78,7 +78,7 @@ class JavaClassesSerializerExtension : KotlinSerializerExtensionBase(BuiltInSeri
childSerializer: DescriptorSerializer childSerializer: DescriptorSerializer
) { ) {
super.serializeProperty(descriptor, proto, versionRequirementTable, childSerializer) super.serializeProperty(descriptor, proto, versionRequirementTable, childSerializer)
if (descriptor.visibility == JavaVisibilities.PACKAGE_VISIBILITY) { if (descriptor.visibility == JavaDescriptorVisibilities.PACKAGE_VISIBILITY) {
proto.setExtension(JavaClassProtoBuf.isPackagePrivateField, true) proto.setExtension(JavaClassProtoBuf.isPackagePrivateField, true)
} }
@@ -16,7 +16,7 @@
package org.jetbrains.kotlin.incremental package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.incremental.ProtoCompareGenerated.ProtoBufClassKind import org.jetbrains.kotlin.incremental.ProtoCompareGenerated.ProtoBufClassKind
import org.jetbrains.kotlin.incremental.ProtoCompareGenerated.ProtoBufPackageKind import org.jetbrains.kotlin.incremental.ProtoCompareGenerated.ProtoBufPackageKind
import org.jetbrains.kotlin.incremental.storage.ProtoMapValue import org.jetbrains.kotlin.incremental.storage.ProtoMapValue
@@ -49,7 +49,7 @@ fun ProtoMapValue.toProtoData(packageFqName: FqName): ProtoData =
} }
internal val MessageLite.isPrivate: Boolean internal val MessageLite.isPrivate: Boolean
get() = Visibilities.isPrivate( get() = DescriptorVisibilities.isPrivate(
ProtoEnumFlags.visibility( ProtoEnumFlags.visibility(
when (this) { when (this) {
is ProtoBuf.Constructor -> Flags.VISIBILITY.get(flags) is ProtoBuf.Constructor -> Flags.VISIBILITY.get(flags)
@@ -346,4 +346,4 @@ val ProtoBuf.Class.typeTableOrNull: ProtoBuf.TypeTable?
get() = if (hasTypeTable()) typeTable else null get() = if (hasTypeTable()) typeTable else null
val ProtoBuf.Package.typeTableOrNull: ProtoBuf.TypeTable? val ProtoBuf.Package.typeTableOrNull: ProtoBuf.TypeTable?
get() = if (hasTypeTable()) typeTable else null get() = if (hasTypeTable()) typeTable else null
@@ -65,7 +65,7 @@ object CodegenUtil {
if (copy) if (copy)
copyFunctions( copyFunctions(
declaration, traitMember, declaration.containingDeclaration, traitMember.modality, declaration, traitMember, declaration.containingDeclaration, traitMember.modality,
Visibilities.PUBLIC, CallableMemberDescriptor.Kind.DECLARATION, true DescriptorVisibilities.PUBLIC, CallableMemberDescriptor.Kind.DECLARATION, true
) )
else mapMembers(declaration, traitMember) else mapMembers(declaration, traitMember)
) )
@@ -74,13 +74,13 @@ object CodegenUtil {
} }
fun copyFunctions( fun copyFunctions(
inheritedMember: CallableMemberDescriptor, inheritedMember: CallableMemberDescriptor,
traitMember: CallableMemberDescriptor, traitMember: CallableMemberDescriptor,
newOwner: DeclarationDescriptor, newOwner: DeclarationDescriptor,
modality: Modality, modality: Modality,
visibility: Visibility, visibility: DescriptorVisibility,
kind: CallableMemberDescriptor.Kind, kind: CallableMemberDescriptor.Kind,
copyOverrides: Boolean copyOverrides: Boolean
): Map<FunctionDescriptor, FunctionDescriptor> = ): Map<FunctionDescriptor, FunctionDescriptor> =
mapMembers(inheritedMember.copy(newOwner, modality, visibility, kind, copyOverrides), traitMember) mapMembers(inheritedMember.copy(newOwner, modality, visibility, kind, copyOverrides), traitMember)
@@ -27,7 +27,7 @@ class AccessorForCompanionObjectInstanceFieldDescriptor(
null, null, emptyList(), emptyList(), null, null, emptyList(), emptyList(),
companionObjectDescriptor.defaultType, companionObjectDescriptor.defaultType,
Modality.FINAL, Modality.FINAL,
Visibilities.LOCAL DescriptorVisibilities.LOCAL
) )
} }
@@ -41,4 +41,4 @@ class AccessorForCompanionObjectInstanceFieldDescriptor(
): FunctionDescriptorImpl { ): FunctionDescriptorImpl {
throw UnsupportedOperationException("Accessor for companion object $companionObjectDescriptor should not be substituted") throw UnsupportedOperationException("Accessor for companion object $companionObjectDescriptor should not be substituted")
} }
} }
@@ -42,11 +42,11 @@ class AccessorForConstructorDescriptor(
override fun substitute(substitutor: TypeSubstitutor) = super.substitute(substitutor) as ClassConstructorDescriptor override fun substitute(substitutor: TypeSubstitutor) = super.substitute(substitutor) as ClassConstructorDescriptor
override fun copy( override fun copy(
newOwner: DeclarationDescriptor, newOwner: DeclarationDescriptor,
modality: Modality, modality: Modality,
visibility: Visibility, visibility: DescriptorVisibility,
kind: CallableMemberDescriptor.Kind, kind: CallableMemberDescriptor.Kind,
copyOverrides: Boolean copyOverrides: Boolean
): AccessorForConstructorDescriptor { ): AccessorForConstructorDescriptor {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
@@ -61,7 +61,7 @@ class AccessorForConstructorDescriptor(
copyValueParameters(calleeDescriptor), copyValueParameters(calleeDescriptor),
calleeDescriptor.returnType, calleeDescriptor.returnType,
Modality.FINAL, Modality.FINAL,
Visibilities.LOCAL DescriptorVisibilities.LOCAL
) )
} }
} }
@@ -43,7 +43,7 @@ class AccessorForFunctionDescriptor(
copyValueParameters(calleeDescriptor), copyValueParameters(calleeDescriptor),
calleeDescriptor.returnType, calleeDescriptor.returnType,
Modality.FINAL, Modality.FINAL,
Visibilities.LOCAL DescriptorVisibilities.LOCAL
) )
isSuspend = calleeDescriptor.isSuspend isSuspend = calleeDescriptor.isSuspend
@@ -43,7 +43,7 @@ open class AccessorForPropertyDescriptor private constructor(
null, null,
Annotations.EMPTY, Annotations.EMPTY,
Modality.FINAL, Modality.FINAL,
Visibilities.LOCAL, DescriptorVisibilities.LOCAL,
calleeDescriptor.isVar, calleeDescriptor.isVar,
Name.identifier("access$$accessorSuffix"), Name.identifier("access$$accessorSuffix"),
CallableMemberDescriptor.Kind.DECLARATION, CallableMemberDescriptor.Kind.DECLARATION,
@@ -111,7 +111,7 @@ open class AccessorForPropertyDescriptor private constructor(
property, property,
Annotations.EMPTY, Annotations.EMPTY,
Modality.FINAL, Modality.FINAL,
Visibilities.LOCAL, DescriptorVisibilities.LOCAL,
false, false,
false, false,
false, false,
@@ -136,7 +136,7 @@ open class AccessorForPropertyDescriptor private constructor(
property, property,
Annotations.EMPTY, Annotations.EMPTY,
Modality.FINAL, Modality.FINAL,
Visibilities.LOCAL, DescriptorVisibilities.LOCAL,
false, false,
false, false,
false, false,
@@ -142,7 +142,7 @@ public abstract class AnnotationCodegen {
&& !applicableTargets.contains(KotlinTarget.CLASS) && !applicableTargets.contains(KotlinTarget.CLASS)
&& !applicableTargets.contains(KotlinTarget.ANNOTATION_CLASS)) { && !applicableTargets.contains(KotlinTarget.ANNOTATION_CLASS)) {
ClassDescriptor classDescriptor = (ClassDescriptor) annotated; ClassDescriptor classDescriptor = (ClassDescriptor) annotated;
if (classDescriptor.getVisibility() == Visibilities.LOCAL) { if (classDescriptor.getVisibility() == DescriptorVisibilities.LOCAL) {
assert applicableTargets.contains(KotlinTarget.EXPRESSION) : assert applicableTargets.contains(KotlinTarget.EXPRESSION) :
"Inconsistent target list for object literal annotation: " + applicableTargets + " on " + annotated; "Inconsistent target list for object literal annotation: " + applicableTargets + " on " + annotated;
continue; continue;
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.config.*;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.incremental.components.NoLookupLocation; import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
import org.jetbrains.kotlin.lexer.KtTokens; import org.jetbrains.kotlin.lexer.KtTokens;
import org.jetbrains.kotlin.load.java.JavaVisibilities; import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities;
import org.jetbrains.kotlin.load.java.JvmAnnotationNames; import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil; import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil;
import org.jetbrains.kotlin.metadata.jvm.serialization.JvmStringTable; import org.jetbrains.kotlin.metadata.jvm.serialization.JvmStringTable;
@@ -82,16 +82,16 @@ public class AsmUtil {
public static final int NO_FLAG_PACKAGE_PRIVATE = 0; public static final int NO_FLAG_PACKAGE_PRIVATE = 0;
@NotNull @NotNull
private static final Map<Visibility, Integer> visibilityToAccessFlag = ImmutableMap.<Visibility, Integer>builder() private static final Map<DescriptorVisibility, Integer> visibilityToAccessFlag = ImmutableMap.<DescriptorVisibility, Integer>builder()
.put(Visibilities.PRIVATE, ACC_PRIVATE) .put(DescriptorVisibilities.PRIVATE, ACC_PRIVATE)
.put(Visibilities.PRIVATE_TO_THIS, ACC_PRIVATE) .put(DescriptorVisibilities.PRIVATE_TO_THIS, ACC_PRIVATE)
.put(Visibilities.PROTECTED, ACC_PROTECTED) .put(DescriptorVisibilities.PROTECTED, ACC_PROTECTED)
.put(JavaVisibilities.PROTECTED_STATIC_VISIBILITY, ACC_PROTECTED) .put(JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY, ACC_PROTECTED)
.put(JavaVisibilities.PROTECTED_AND_PACKAGE, ACC_PROTECTED) .put(JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE, ACC_PROTECTED)
.put(Visibilities.PUBLIC, ACC_PUBLIC) .put(DescriptorVisibilities.PUBLIC, ACC_PUBLIC)
.put(Visibilities.INTERNAL, ACC_PUBLIC) .put(DescriptorVisibilities.INTERNAL, ACC_PUBLIC)
.put(Visibilities.LOCAL, NO_FLAG_LOCAL) .put(DescriptorVisibilities.LOCAL, NO_FLAG_LOCAL)
.put(JavaVisibilities.PACKAGE_VISIBILITY, NO_FLAG_PACKAGE_PRIVATE) .put(JavaDescriptorVisibilities.PACKAGE_VISIBILITY, NO_FLAG_PACKAGE_PRIVATE)
.build(); .build();
public static final String CAPTURED_PREFIX = "$"; public static final String CAPTURED_PREFIX = "$";
@@ -395,7 +395,7 @@ public class AsmUtil {
flags |= getDeprecatedAccessFlag(functionDescriptor); flags |= getDeprecatedAccessFlag(functionDescriptor);
if (deprecationResolver.isDeprecatedHidden(functionDescriptor) || if (deprecationResolver.isDeprecatedHidden(functionDescriptor) ||
isInlineWithReified(functionDescriptor) || isInlineWithReified(functionDescriptor) ||
functionDescriptor.isSuspend() && functionDescriptor.getVisibility().equals(Visibilities.PRIVATE)) { functionDescriptor.isSuspend() && functionDescriptor.getVisibility().equals(DescriptorVisibilities.PRIVATE)) {
flags |= ACC_SYNTHETIC; flags |= ACC_SYNTHETIC;
} }
return flags; return flags;
@@ -410,7 +410,7 @@ public class AsmUtil {
if (specialCase != null) { if (specialCase != null) {
return specialCase; return specialCase;
} }
Visibility visibility = descriptor.getVisibility(); DescriptorVisibility visibility = descriptor.getVisibility();
Integer defaultMapping = getVisibilityAccessFlag(visibility); Integer defaultMapping = getVisibilityAccessFlag(visibility);
if (defaultMapping == null) { if (defaultMapping == null) {
throw new IllegalStateException(visibility + " is not a valid visibility in backend for " + DescriptorRenderer.DEBUG_TEXT.render(descriptor)); throw new IllegalStateException(visibility + " is not a valid visibility in backend for " + DescriptorRenderer.DEBUG_TEXT.render(descriptor));
@@ -419,7 +419,7 @@ public class AsmUtil {
} }
@Nullable @Nullable
public static Integer getVisibilityAccessFlag(Visibility visibility) { public static Integer getVisibilityAccessFlag(DescriptorVisibility visibility) {
return visibilityToAccessFlag.get(visibility); return visibilityToAccessFlag.get(visibility);
} }
@@ -435,11 +435,11 @@ public class AsmUtil {
if (descriptor.getKind() == ClassKind.ENUM_ENTRY) { if (descriptor.getKind() == ClassKind.ENUM_ENTRY) {
return NO_FLAG_PACKAGE_PRIVATE; return NO_FLAG_PACKAGE_PRIVATE;
} }
if (descriptor.getVisibility() == Visibilities.PUBLIC || if (descriptor.getVisibility() == DescriptorVisibilities.PUBLIC ||
descriptor.getVisibility() == Visibilities.PROTECTED || descriptor.getVisibility() == DescriptorVisibilities.PROTECTED ||
// TODO: should be package private, but for now Kotlin's reflection can't access members of such classes // TODO: should be package private, but for now Kotlin's reflection can't access members of such classes
descriptor.getVisibility() == Visibilities.LOCAL || descriptor.getVisibility() == DescriptorVisibilities.LOCAL ||
descriptor.getVisibility() == Visibilities.INTERNAL) { descriptor.getVisibility() == DescriptorVisibilities.INTERNAL) {
return ACC_PUBLIC; return ACC_PUBLIC;
} }
return NO_FLAG_PACKAGE_PRIVATE; return NO_FLAG_PACKAGE_PRIVATE;
@@ -458,7 +458,7 @@ public class AsmUtil {
int visibility = int visibility =
innerClass instanceof SyntheticClassDescriptorForLambda innerClass instanceof SyntheticClassDescriptorForLambda
? getVisibilityAccessFlagForAnonymous(innerClass) ? getVisibilityAccessFlagForAnonymous(innerClass)
: innerClass.getVisibility() == Visibilities.LOCAL : innerClass.getVisibility() == DescriptorVisibilities.LOCAL
? ACC_PUBLIC ? ACC_PUBLIC
: getVisibilityAccessFlag(innerClass); : getVisibilityAccessFlag(innerClass);
return visibility | return visibility |
@@ -511,7 +511,7 @@ public class AsmUtil {
@Nullable @Nullable
private static Integer specialCaseVisibility(@NotNull MemberDescriptor memberDescriptor, @Nullable OwnerKind kind) { private static Integer specialCaseVisibility(@NotNull MemberDescriptor memberDescriptor, @Nullable OwnerKind kind) {
DeclarationDescriptor containingDeclaration = memberDescriptor.getContainingDeclaration(); DeclarationDescriptor containingDeclaration = memberDescriptor.getContainingDeclaration();
Visibility memberVisibility = memberDescriptor.getVisibility(); DescriptorVisibility memberVisibility = memberDescriptor.getVisibility();
if (JvmCodegenUtil.isNonIntrinsicPrivateCompanionObjectInInterface(memberDescriptor)) { if (JvmCodegenUtil.isNonIntrinsicPrivateCompanionObjectInInterface(memberDescriptor)) {
return ACC_PUBLIC; return ACC_PUBLIC;
@@ -534,7 +534,7 @@ public class AsmUtil {
return ACC_PRIVATE; return ACC_PRIVATE;
} }
if (memberVisibility == Visibilities.LOCAL && memberDescriptor instanceof CallableMemberDescriptor) { if (memberVisibility == DescriptorVisibilities.LOCAL && memberDescriptor instanceof CallableMemberDescriptor) {
return ACC_PUBLIC; return ACC_PUBLIC;
} }
@@ -564,7 +564,7 @@ public class AsmUtil {
} }
} }
if (memberDescriptor instanceof CallableDescriptor && memberVisibility == Visibilities.PROTECTED) { if (memberDescriptor instanceof CallableDescriptor && memberVisibility == DescriptorVisibilities.PROTECTED) {
for (CallableDescriptor overridden : DescriptorUtils.getAllOverriddenDescriptors((CallableDescriptor) memberDescriptor)) { for (CallableDescriptor overridden : DescriptorUtils.getAllOverriddenDescriptors((CallableDescriptor) memberDescriptor)) {
if (isJvmInterface(overridden.getContainingDeclaration())) { if (isJvmInterface(overridden.getContainingDeclaration())) {
return ACC_PUBLIC; return ACC_PUBLIC;
@@ -572,7 +572,7 @@ public class AsmUtil {
} }
} }
if (!Visibilities.isPrivate(memberVisibility)) { if (!DescriptorVisibilities.isPrivate(memberVisibility)) {
return null; return null;
} }
@@ -321,7 +321,7 @@ class CollectionStubMethodGenerator(
) )
child.modality = Modality.FINAL child.modality = Modality.FINAL
child.visibility = Visibilities.PUBLIC child.visibility = DescriptorVisibilities.PUBLIC
val typeParameters = descriptor.typeConstructor.parameters val typeParameters = descriptor.typeConstructor.parameters
val newTypeParameters = ArrayList<TypeParameterDescriptor>(typeParameters.size) val newTypeParameters = ArrayList<TypeParameterDescriptor>(typeParameters.size)
DescriptorSubstitutor.substituteTypeParameters(typeParameters, TypeSubstitution.EMPTY, child, newTypeParameters) DescriptorSubstitutor.substituteTypeParameters(typeParameters, TypeSubstitution.EMPTY, child, newTypeParameters)
@@ -268,7 +268,7 @@ class DefaultParameterValueSubstitutor(val state: GenerationState) {
if (CodegenBinding.canHaveOuter(state.bindingContext, classDescriptor)) return false if (CodegenBinding.canHaveOuter(state.bindingContext, classDescriptor)) return false
if (Visibilities.isPrivate(constructorDescriptor.visibility)) return false if (DescriptorVisibilities.isPrivate(constructorDescriptor.visibility)) return false
if (constructorDescriptor.valueParameters.isEmpty()) return false if (constructorDescriptor.valueParameters.isEmpty()) return false
if (classOrObject is KtClass && hasSecondaryConstructorsWithNoParameters(classOrObject)) return false if (classOrObject is KtClass && hasSecondaryConstructorsWithNoParameters(classOrObject)) return false
@@ -2181,7 +2181,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
} }
else if (isBackingFieldMovedFromCompanion && else if (isBackingFieldMovedFromCompanion &&
(forceField || (forceField ||
(Visibilities.isPrivate(propertyDescriptor.getVisibility()) && (DescriptorVisibilities.isPrivate(propertyDescriptor.getVisibility()) &&
isDefaultAccessor(propertyDescriptor.getGetter()) && isDefaultAccessor(propertyDescriptor.getSetter())))) { isDefaultAccessor(propertyDescriptor.getGetter()) && isDefaultAccessor(propertyDescriptor.getSetter())))) {
fieldAccessorKind = JvmCodegenUtil.isDebuggerContext(context) ? AccessorKind.NORMAL : AccessorKind.IN_CLASS_COMPANION; fieldAccessorKind = JvmCodegenUtil.isDebuggerContext(context) ? AccessorKind.NORMAL : AccessorKind.IN_CLASS_COMPANION;
} }
@@ -2254,7 +2254,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
skipPropertyAccessors = forceField; skipPropertyAccessors = forceField;
if (JvmCodegenUtil.isDebuggerContext(context) if (JvmCodegenUtil.isDebuggerContext(context)
&& Visibilities.isPrivate(propertyDescriptor.getVisibility()) && DescriptorVisibilities.isPrivate(propertyDescriptor.getVisibility())
&& bindingContext.get(BACKING_FIELD_REQUIRED, propertyDescriptor) == Boolean.TRUE && bindingContext.get(BACKING_FIELD_REQUIRED, propertyDescriptor) == Boolean.TRUE
) { ) {
skipPropertyAccessors = true; skipPropertyAccessors = true;
@@ -1152,7 +1152,7 @@ public class FunctionCodegen {
// $default methods are never private to be accessible from other class files (e.g. inner) without the need of synthetic accessors // $default methods are never private to be accessible from other class files (e.g. inner) without the need of synthetic accessors
// $default methods are never protected to be accessible from subclass nested classes // $default methods are never protected to be accessible from subclass nested classes
int visibilityFlag = int visibilityFlag =
Visibilities.isPrivate(functionDescriptor.getVisibility()) || isInlineOnlyPrivateInBytecode(functionDescriptor) DescriptorVisibilities.isPrivate(functionDescriptor.getVisibility()) || isInlineOnlyPrivateInBytecode(functionDescriptor)
? AsmUtil.NO_FLAG_PACKAGE_PRIVATE : Opcodes.ACC_PUBLIC; ? AsmUtil.NO_FLAG_PACKAGE_PRIVATE : Opcodes.ACC_PUBLIC;
int flags = visibilityFlag | getDeprecatedAccessFlag(functionDescriptor) | ACC_SYNTHETIC; int flags = visibilityFlag | getDeprecatedAccessFlag(functionDescriptor) | ACC_SYNTHETIC;
if (!(functionDescriptor instanceof ConstructorDescriptor && if (!(functionDescriptor instanceof ConstructorDescriptor &&
@@ -1685,7 +1685,7 @@ public class FunctionCodegen {
} else { } else {
switch (kind) { switch (kind) {
case DEFAULT_IMPLS: return true; case DEFAULT_IMPLS: return true;
case IMPLEMENTATION: return !Visibilities.isPrivate(memberDescriptor.getVisibility()) && !isDefault && !isSynthetic; case IMPLEMENTATION: return !DescriptorVisibilities.isPrivate(memberDescriptor.getVisibility()) && !isDefault && !isSynthetic;
default: return false; default: return false;
} }
} }
@@ -817,7 +817,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
} }
if (properVisibilityForCompanionObjectInstanceField && if (properVisibilityForCompanionObjectInstanceField &&
JvmCodegenUtil.isCompanionObjectInInterfaceNotIntrinsic(companionObjectDescriptor) && JvmCodegenUtil.isCompanionObjectInInterfaceNotIntrinsic(companionObjectDescriptor) &&
Visibilities.isPrivate(companionObjectDescriptor.getVisibility())) { DescriptorVisibilities.isPrivate(companionObjectDescriptor.getVisibility())) {
fieldAccessFlags |= ACC_SYNTHETIC; fieldAccessFlags |= ACC_SYNTHETIC;
} }
StackValue.Field field = StackValue.singleton(companionObjectDescriptor, typeMapper); StackValue.Field field = StackValue.singleton(companionObjectDescriptor, typeMapper);
@@ -65,7 +65,7 @@ class InterfaceImplBodyCodegen(
if (memberDescriptor !is CallableMemberDescriptor) continue if (memberDescriptor !is CallableMemberDescriptor) continue
if (memberDescriptor.kind.isReal) continue if (memberDescriptor.kind.isReal) continue
if (memberDescriptor.visibility == Visibilities.INVISIBLE_FAKE) continue if (memberDescriptor.visibility == DescriptorVisibilities.INVISIBLE_FAKE) continue
if (memberDescriptor.modality == Modality.ABSTRACT) continue if (memberDescriptor.modality == Modality.ABSTRACT) continue
val implementation = findImplementationFromInterface(memberDescriptor) ?: continue val implementation = findImplementationFromInterface(memberDescriptor) ?: continue
@@ -221,7 +221,7 @@ public class JvmCodegenUtil {
if (DescriptorPsiUtilsKt.hasBody(accessor)) return false; if (DescriptorPsiUtilsKt.hasBody(accessor)) return false;
// If the accessor is private or final, it can't be overridden in the subclass and thus we can use direct access // If the accessor is private or final, it can't be overridden in the subclass and thus we can use direct access
return Visibilities.isPrivate(accessor.getVisibility()) || accessor.getModality() == FINAL; return DescriptorVisibilities.isPrivate(accessor.getVisibility()) || accessor.getModality() == FINAL;
} }
public static boolean isDebuggerContext(@NotNull CodegenContext context) { public static boolean isDebuggerContext(@NotNull CodegenContext context) {
@@ -345,7 +345,7 @@ public class JvmCodegenUtil {
public static boolean isNonIntrinsicPrivateCompanionObjectInInterface(@NotNull DeclarationDescriptorWithVisibility companionObject) { public static boolean isNonIntrinsicPrivateCompanionObjectInInterface(@NotNull DeclarationDescriptorWithVisibility companionObject) {
return isCompanionObjectInInterfaceNotIntrinsic(companionObject) && return isCompanionObjectInInterfaceNotIntrinsic(companionObject) &&
Visibilities.isPrivate(companionObject.getVisibility()); DescriptorVisibilities.isPrivate(companionObject.getVisibility());
} }
public static boolean isDeclarationOfBigArityFunctionInvoke(@Nullable DeclarationDescriptor descriptor) { public static boolean isDeclarationOfBigArityFunctionInvoke(@Nullable DeclarationDescriptor descriptor) {
@@ -86,7 +86,7 @@ class JvmRuntimeTypes(
packageFragment, classKind, false, false, Name.identifier(name), SourceElement.NO_SOURCE, LockBasedStorageManager.NO_LOCKS packageFragment, classKind, false, false, Name.identifier(name), SourceElement.NO_SOURCE, LockBasedStorageManager.NO_LOCKS
).apply { ).apply {
modality = Modality.FINAL modality = Modality.FINAL
visibility = Visibilities.PUBLIC visibility = DescriptorVisibilities.PUBLIC
setTypeParameterDescriptors(emptyList()) setTypeParameterDescriptors(emptyList())
createTypeConstructor() createTypeConstructor()
} }
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl; import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl;
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil; import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil;
import org.jetbrains.kotlin.load.java.DescriptorsJvmAbiUtil; import org.jetbrains.kotlin.load.java.DescriptorsJvmAbiUtil;
import org.jetbrains.kotlin.load.java.JavaVisibilities; import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities;
import org.jetbrains.kotlin.load.java.JvmAbi; import org.jetbrains.kotlin.load.java.JvmAbi;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.name.SpecialNames;
@@ -469,7 +469,7 @@ public abstract class MemberCodegen<T extends KtPureElement/* TODO: & KtDeclarat
Name.special("<clinit>"), SYNTHESIZED, KotlinSourceElementKt.toSourceElement(element)); Name.special("<clinit>"), SYNTHESIZED, KotlinSourceElementKt.toSourceElement(element));
clInit.initialize(null, null, Collections.emptyList(), Collections.emptyList(), clInit.initialize(null, null, Collections.emptyList(), Collections.emptyList(),
DescriptorUtilsKt.getModule(descriptor).getBuiltIns().getUnitType(), DescriptorUtilsKt.getModule(descriptor).getBuiltIns().getUnitType(),
Modality.FINAL, Visibilities.PRIVATE); Modality.FINAL, DescriptorVisibilities.PRIVATE);
return clInit; return clInit;
} }
@@ -882,7 +882,7 @@ public abstract class MemberCodegen<T extends KtPureElement/* TODO: & KtDeclarat
!isCompanionObject(accessor.getContainingDeclaration()); !isCompanionObject(accessor.getContainingDeclaration());
boolean forceField = forceFieldForCompanionProperty || boolean forceField = forceFieldForCompanionProperty ||
syntheticBackingField || syntheticBackingField ||
original.getVisibility() == JavaVisibilities.PROTECTED_STATIC_VISIBILITY; original.getVisibility() == JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY;
StackValue property = codegen.intermediateValueForProperty( StackValue property = codegen.intermediateValueForProperty(
original, forceField, syntheticBackingField, accessor.getSuperCallTarget(), original, forceField, syntheticBackingField, accessor.getSuperCallTarget(),
forceFieldForCompanionProperty, StackValue.none(), null, forceFieldForCompanionProperty, StackValue.none(), null,
@@ -224,7 +224,7 @@ class MultifileClassCodegenImpl(
} }
private fun shouldGenerateInFacade(descriptor: MemberDescriptor): Boolean { private fun shouldGenerateInFacade(descriptor: MemberDescriptor): Boolean {
if (Visibilities.isPrivate(descriptor.visibility)) return false if (DescriptorVisibilities.isPrivate(descriptor.visibility)) return false
if (AsmUtil.getVisibilityAccessFlag(descriptor) == Opcodes.ACC_PRIVATE) return false if (AsmUtil.getVisibilityAccessFlag(descriptor) == Opcodes.ACC_PRIVATE) return false
if (!state.classBuilderMode.generateBodies) return true if (!state.classBuilderMode.generateBodies) return true
@@ -160,7 +160,7 @@ public class PropertyCodegen {
private void genBackingFieldAndAnnotations(@NotNull PropertyDescriptor descriptor) { private void genBackingFieldAndAnnotations(@NotNull PropertyDescriptor descriptor) {
// Fields and '$annotations' methods for non-private const properties are generated in the multi-file facade // Fields and '$annotations' methods for non-private const properties are generated in the multi-file facade
boolean isBackingFieldOwner = descriptor.isConst() && !Visibilities.isPrivate(descriptor.getVisibility()) boolean isBackingFieldOwner = descriptor.isConst() && !DescriptorVisibilities.isPrivate(descriptor.getVisibility())
? !(context instanceof MultifileClassPartContext) ? !(context instanceof MultifileClassPartContext)
: CodegenContextUtil.isImplementationOwner(context, descriptor); : CodegenContextUtil.isImplementationOwner(context, descriptor);
@@ -218,7 +218,7 @@ public class PropertyCodegen {
// and setter, in this case, the property can always be accessed through the accessor 'access<property name>$cp' and avoid some // and setter, in this case, the property can always be accessed through the accessor 'access<property name>$cp' and avoid some
// useless indirection by using others accessors. // useless indirection by using others accessors.
if (isCompanionObject(descriptor.getContainingDeclaration())) { if (isCompanionObject(descriptor.getContainingDeclaration())) {
if (Visibilities.isPrivate(descriptor.getVisibility()) && isDefaultGetterAndSetter) { if (DescriptorVisibilities.isPrivate(descriptor.getVisibility()) && isDefaultGetterAndSetter) {
return false; return false;
} }
return true; return true;
@@ -228,14 +228,14 @@ public class PropertyCodegen {
if (isTopLevelInJvmMultifileClass(descriptor)) return true; if (isTopLevelInJvmMultifileClass(descriptor)) return true;
// Private class properties have accessors only in cases when those accessors are non-trivial // Private class properties have accessors only in cases when those accessors are non-trivial
if (Visibilities.isPrivate(descriptor.getVisibility())) { if (DescriptorVisibilities.isPrivate(descriptor.getVisibility())) {
return !isDefaultAccessor; return !isDefaultAccessor;
} }
// Non-private properties with private setter should not be generated for trivial properties // Non-private properties with private setter should not be generated for trivial properties
// as the class will use direct field access instead // as the class will use direct field access instead
//noinspection ConstantConditions //noinspection ConstantConditions
if (accessor != null && accessor.isSetter() && Visibilities.isPrivate(descriptor.getSetter().getVisibility())) { if (accessor != null && accessor.isSetter() && DescriptorVisibilities.isPrivate(descriptor.getSetter().getVisibility())) {
return !isDefaultAccessor; return !isDefaultAccessor;
} }
@@ -254,12 +254,12 @@ public class PropertyCodegen {
if (hasJvmFieldAnnotation(descriptor)) return false; if (hasJvmFieldAnnotation(descriptor)) return false;
if (kind == OwnerKind.ERASED_INLINE_CLASS) return false; if (kind == OwnerKind.ERASED_INLINE_CLASS) return false;
Visibility visibility = descriptor.getVisibility(); DescriptorVisibility visibility = descriptor.getVisibility();
if (InlineClassesUtilsKt.isInlineClass(descriptor.getContainingDeclaration())) { if (InlineClassesUtilsKt.isInlineClass(descriptor.getContainingDeclaration())) {
return visibility.isPublicAPI(); return visibility.isPublicAPI();
} }
else { else {
return !Visibilities.isPrivate(visibility); return !DescriptorVisibilities.isPrivate(visibility);
} }
} }
@@ -512,7 +512,7 @@ public class PropertyCodegen {
private void generateAccessor(@Nullable KtPropertyAccessor accessor, @NotNull PropertyAccessorDescriptor descriptor) { private void generateAccessor(@Nullable KtPropertyAccessor accessor, @NotNull PropertyAccessorDescriptor descriptor) {
if (context instanceof MultifileClassFacadeContext && if (context instanceof MultifileClassFacadeContext &&
(Visibilities.isPrivate(descriptor.getVisibility()) || (DescriptorVisibilities.isPrivate(descriptor.getVisibility()) ||
AsmUtil.getVisibilityAccessFlag(descriptor) == Opcodes.ACC_PRIVATE)) { AsmUtil.getVisibilityAccessFlag(descriptor) == Opcodes.ACC_PRIVATE)) {
return; return;
} }
@@ -106,7 +106,7 @@ public class SamWrapperCodegen {
SimpleFunctionDescriptor erasedInterfaceFunction = samType.getOriginalAbstractMethod().copy( SimpleFunctionDescriptor erasedInterfaceFunction = samType.getOriginalAbstractMethod().copy(
classDescriptor, classDescriptor,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC, DescriptorVisibilities.PUBLIC,
CallableMemberDescriptor.Kind.SYNTHESIZED, CallableMemberDescriptor.Kind.SYNTHESIZED,
/*copyOverrides=*/ false /*copyOverrides=*/ false
); );
@@ -268,12 +268,12 @@ public class SamWrapperCodegen {
if (!(descriptor instanceof CallableMemberDescriptor)) continue; if (!(descriptor instanceof CallableMemberDescriptor)) continue;
CallableMemberDescriptor member = (CallableMemberDescriptor) descriptor; CallableMemberDescriptor member = (CallableMemberDescriptor) descriptor;
if (member.getModality() == Modality.ABSTRACT || if (member.getModality() == Modality.ABSTRACT ||
Visibilities.isPrivate(member.getVisibility()) || DescriptorVisibilities.isPrivate(member.getVisibility()) ||
member.getVisibility() == Visibilities.INVISIBLE_FAKE || member.getVisibility() == DescriptorVisibilities.INVISIBLE_FAKE ||
DescriptorUtils.isMethodOfAny(member)) continue; DescriptorUtils.isMethodOfAny(member)) continue;
for (Map.Entry<FunctionDescriptor, FunctionDescriptor> entry : CodegenUtil.INSTANCE.copyFunctions( for (Map.Entry<FunctionDescriptor, FunctionDescriptor> entry : CodegenUtil.INSTANCE.copyFunctions(
member, member, classDescriptor, Modality.OPEN, Visibilities.PUBLIC, CallableMemberDescriptor.Kind.DECLARATION, false member, member, classDescriptor, Modality.OPEN, DescriptorVisibilities.PUBLIC, CallableMemberDescriptor.Kind.DECLARATION, false
).entrySet()) { ).entrySet()) {
ClassBodyCodegen.generateDelegationToDefaultImpl(entry.getKey(), entry.getValue(), receiverType, functionCodegen, state, false); ClassBodyCodegen.generateDelegationToDefaultImpl(entry.getKey(), entry.getValue(), receiverType, functionCodegen, state, false);
} }
@@ -616,7 +616,7 @@ class CodegenAnnotatingVisitor extends KtVisitorVoid {
String nameForClassOrPackageMember = getNameForClassOrPackageMember(functionDescriptor); String nameForClassOrPackageMember = getNameForClassOrPackageMember(functionDescriptor);
if (functionDescriptor instanceof SimpleFunctionDescriptor && functionDescriptor.isSuspend() && if (functionDescriptor instanceof SimpleFunctionDescriptor && functionDescriptor.isSuspend() &&
!functionDescriptor.getVisibility().equals(Visibilities.LOCAL)) { !functionDescriptor.getVisibility().equals(DescriptorVisibilities.LOCAL)) {
if (nameForClassOrPackageMember != null) { if (nameForClassOrPackageMember != null) {
nameStack.push(nameForClassOrPackageMember); nameStack.push(nameForClassOrPackageMember);
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper; import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper;
import org.jetbrains.kotlin.config.JvmDefaultMode; import org.jetbrains.kotlin.config.JvmDefaultMode;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.load.java.JavaVisibilities; import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities;
import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor; import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.psi.KtFile;
@@ -625,7 +625,7 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
} }
if (descriptorContext == null && if (descriptorContext == null &&
JavaVisibilities.PROTECTED_STATIC_VISIBILITY == descriptor.getVisibility() && JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY == descriptor.getVisibility() &&
(!(descriptor.getOriginal() instanceof SamConstructorDescriptor))) { (!(descriptor.getOriginal() instanceof SamConstructorDescriptor))) {
//seems we need static receiver in resolved call //seems we need static receiver in resolved call
descriptorContext = ExpressionCodegen.getParentContextSubclassOf((ClassDescriptor) enclosed, this); descriptorContext = ExpressionCodegen.getParentContextSubclassOf((ClassDescriptor) enclosed, this);
@@ -672,7 +672,7 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
PropertySetterDescriptor setter = propertyDescriptor.getSetter(); PropertySetterDescriptor setter = propertyDescriptor.getSetter();
int setterAccessFlag = propertyAccessFlag; int setterAccessFlag = propertyAccessFlag;
if (setter != null && setter.getVisibility().normalize() != Visibilities.INVISIBLE_FAKE) { if (setter != null && setter.getVisibility().normalize() != DescriptorVisibilities.INVISIBLE_FAKE) {
setterAccessFlag = propertyAccessFlag | getVisibilityAccessFlag(setter); setterAccessFlag = propertyAccessFlag | getVisibilityAccessFlag(setter);
} }
boolean setterAccessorRequired = isAccessorRequired(setterAccessFlag, unwrappedDescriptor, descriptorContext, boolean setterAccessorRequired = isAccessorRequired(setterAccessFlag, unwrappedDescriptor, descriptorContext,
@@ -94,7 +94,7 @@ abstract class AbstractCoroutineCodegen(
}, },
builtIns.nullableAnyType, builtIns.nullableAnyType,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC, DescriptorVisibilities.PUBLIC,
userDataForDoResume userDataForDoResume
) )
} }
@@ -220,7 +220,7 @@ class CoroutineCodegenForLambda private constructor(
state.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) state.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
), ),
funDescriptor.modality, funDescriptor.modality,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
} }
@@ -816,4 +816,4 @@ private object FailingFunctionGenerationStrategy : FunctionGenerationStrategy()
fun reportSuspensionPointInsideMonitor(element: KtElement, state: GenerationState, stackTraceElement: String) { fun reportSuspensionPointInsideMonitor(element: KtElement, state: GenerationState, stackTraceElement: String) {
state.diagnostics.report(ErrorsJvm.SUSPENSION_POINT_INSIDE_MONITOR.on(element, stackTraceElement)) state.diagnostics.report(ErrorsJvm.SUSPENSION_POINT_INSIDE_MONITOR.on(element, stackTraceElement))
} }
@@ -494,7 +494,7 @@ fun Method.getImplForOpenMethod(ownerInternalName: String) =
fun FunctionDescriptor.isSuspendLambdaOrLocalFunction() = this.isSuspend && when (this) { fun FunctionDescriptor.isSuspendLambdaOrLocalFunction() = this.isSuspend && when (this) {
is AnonymousFunctionDescriptor -> this.isSuspendLambda is AnonymousFunctionDescriptor -> this.isSuspendLambda
is SimpleFunctionDescriptor -> this.visibility == Visibilities.LOCAL is SimpleFunctionDescriptor -> this.visibility == DescriptorVisibilities.LOCAL
else -> false else -> false
} }
@@ -31,7 +31,7 @@ internal class FictitiousArrayConstructor(arrayClass: ClassDescriptor) : SimpleF
return FictitiousArrayConstructor(arrayClass).apply { return FictitiousArrayConstructor(arrayClass).apply {
this.initialize( this.initialize(
null, null, arrayConstructor.typeParameters, arrayConstructor.valueParameters, arrayClass.defaultType, null, null, arrayConstructor.typeParameters, arrayConstructor.valueParameters, arrayClass.defaultType,
Modality.FINAL, Visibilities.PUBLIC Modality.FINAL, DescriptorVisibilities.PUBLIC
) )
this.isInline = true this.isInline = true
} }
@@ -63,15 +63,15 @@ class JvmSerializerExtension @JvmOverloads constructor(
override fun shouldUseTypeTable(): Boolean = useTypeTable override fun shouldUseTypeTable(): Boolean = useTypeTable
override fun shouldSerializeFunction(descriptor: FunctionDescriptor): Boolean { override fun shouldSerializeFunction(descriptor: FunctionDescriptor): Boolean {
return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != Visibilities.PRIVATE return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != DescriptorVisibilities.PRIVATE
} }
override fun shouldSerializeProperty(descriptor: PropertyDescriptor): Boolean { override fun shouldSerializeProperty(descriptor: PropertyDescriptor): Boolean {
return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != Visibilities.PRIVATE return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != DescriptorVisibilities.PRIVATE
} }
override fun shouldSerializeTypeAlias(descriptor: TypeAliasDescriptor): Boolean { override fun shouldSerializeTypeAlias(descriptor: TypeAliasDescriptor): Boolean {
return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != Visibilities.PRIVATE return classBuilderMode != ClassBuilderMode.ABI || descriptor.visibility != DescriptorVisibilities.PRIVATE
} }
override fun shouldSerializeNestedClass(descriptor: ClassDescriptor): Boolean { override fun shouldSerializeNestedClass(descriptor: ClassDescriptor): Boolean {
@@ -233,7 +233,7 @@ class JvmSerializerExtension @JvmOverloads constructor(
private fun FunctionDescriptor.needsInlineParameterNullCheckRequirement(): Boolean = private fun FunctionDescriptor.needsInlineParameterNullCheckRequirement(): Boolean =
isInline && !isSuspend && !isParamAssertionsDisabled && isInline && !isSuspend && !isParamAssertionsDisabled &&
!Visibilities.isPrivate(visibility) && !DescriptorVisibilities.isPrivate(visibility) &&
(valueParameters.any { it.type.isFunctionType } || extensionReceiverParameter?.type?.isFunctionType == true) (valueParameters.any { it.type.isFunctionType } || extensionReceiverParameter?.type?.isFunctionType == true)
override fun serializeProperty( override fun serializeProperty(
@@ -202,7 +202,7 @@ class BuilderFactoryForDuplicateSignatureDiagnostics(
fun processMember(member: DeclarationDescriptor?) { fun processMember(member: DeclarationDescriptor?) {
if (member !is CallableMemberDescriptor) return if (member !is CallableMemberDescriptor) return
// a member of super is not visible: no override // a member of super is not visible: no override
if (member.visibility == Visibilities.INVISIBLE_FAKE) return if (member.visibility == DescriptorVisibilities.INVISIBLE_FAKE) return
// if a signature clashes with a SAM-adapter or something like that, there's no harm // if a signature clashes with a SAM-adapter or something like that, there's no harm
if (isOrOverridesSamAdapter(member)) return if (isOrOverridesSamAdapter(member)) return
@@ -231,7 +231,7 @@ class BuilderFactoryForDuplicateSignatureDiagnostics(
descriptor.getParentJavaStaticClassScope()?.run { descriptor.getParentJavaStaticClassScope()?.run {
getContributedDescriptors(DescriptorKindFilter.FUNCTIONS) getContributedDescriptors(DescriptorKindFilter.FUNCTIONS)
.filter { .filter {
it is FunctionDescriptor && Visibilities.isVisibleIgnoringReceiver(it, descriptor) it is FunctionDescriptor && DescriptorVisibilities.isVisibleIgnoringReceiver(it, descriptor)
} }
.forEach(::processMember) .forEach(::processMember)
} }
@@ -449,7 +449,7 @@ class KotlinTypeMapper @JvmOverloads constructor(
else else
mapClass(ownerForDefault) mapClass(ownerForDefault)
if (isInterface && (superCall || descriptor.visibility == Visibilities.PRIVATE || isAccessor(descriptor))) { if (isInterface && (superCall || descriptor.visibility == DescriptorVisibilities.PRIVATE || isAccessor(descriptor))) {
thisClass = mapClass(functionParent) thisClass = mapClass(functionParent)
dispatchReceiverKotlinType = functionParent.defaultType dispatchReceiverKotlinType = functionParent.defaultType
if (declarationOwner is JavaClassDescriptor || if (declarationOwner is JavaClassDescriptor ||
@@ -495,7 +495,7 @@ class KotlinTypeMapper @JvmOverloads constructor(
isInterfaceMember = true isInterfaceMember = true
} }
else -> { else -> {
val isPrivateFunInvocation = Visibilities.isPrivate(functionDescriptor.visibility) && !functionDescriptor.isSuspend val isPrivateFunInvocation = DescriptorVisibilities.isPrivate(functionDescriptor.visibility) && !functionDescriptor.isSuspend
invokeOpcode = if (superCall || isPrivateFunInvocation) INVOKESPECIAL else INVOKEVIRTUAL invokeOpcode = if (superCall || isPrivateFunInvocation) INVOKESPECIAL else INVOKEVIRTUAL
isInterfaceMember = false isInterfaceMember = false
} }
@@ -677,7 +677,7 @@ class KotlinTypeMapper @JvmOverloads constructor(
newName = sanitizeNameIfNeeded(newName, languageVersionSettings) newName = sanitizeNameIfNeeded(newName, languageVersionSettings)
if (isTopLevelDeclaration(descriptor)) { if (isTopLevelDeclaration(descriptor)) {
if (Visibilities.isPrivate(descriptor.visibility) && descriptor !is ConstructorDescriptor && "<clinit>" != newName) { if (DescriptorVisibilities.isPrivate(descriptor.visibility) && descriptor !is ConstructorDescriptor && "<clinit>" != newName) {
val partName = getPartSimpleNameForMangling(descriptor) val partName = getPartSimpleNameForMangling(descriptor)
if (partName != null) return "$newName$$partName" if (partName != null) return "$newName$$partName"
} }
@@ -685,7 +685,7 @@ class KotlinTypeMapper @JvmOverloads constructor(
} }
return if (descriptor !is ConstructorDescriptor && return if (descriptor !is ConstructorDescriptor &&
descriptor.visibility === Visibilities.INTERNAL && descriptor.visibility === DescriptorVisibilities.INTERNAL &&
!descriptor.isPublishedApi() !descriptor.isPublishedApi()
) { ) {
InternalNameMapper.mangleInternalName(newName, getModuleName(descriptor)) InternalNameMapper.mangleInternalName(newName, getModuleName(descriptor))
@@ -1297,7 +1297,7 @@ class KotlinTypeMapper @JvmOverloads constructor(
val visibility = descriptor.visibility val visibility = descriptor.visibility
return if (!publicFacade || return if (!publicFacade ||
isNonConstProperty(descriptor) || isNonConstProperty(descriptor) ||
Visibilities.isPrivate(visibility) || DescriptorVisibilities.isPrivate(visibility) ||
isAccessor/*Cause of KT-9603*/) { isAccessor/*Cause of KT-9603*/) {
JvmFileClassUtil.getFileClassInternalName(file) JvmFileClassUtil.getFileClassInternalName(file)
} else { } else {
@@ -8,16 +8,15 @@ package org.jetbrains.kotlin.fir.backend.jvm
import org.jetbrains.kotlin.fir.JavaVisibilities import org.jetbrains.kotlin.fir.JavaVisibilities
import org.jetbrains.kotlin.fir.Visibility import org.jetbrains.kotlin.fir.Visibility
import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
import org.jetbrains.kotlin.load.java.JavaVisibilities as OldJavaVisibilities
object FirJvmVisibilityConverter : Fir2IrVisibilityConverter() { object FirJvmVisibilityConverter : Fir2IrVisibilityConverter() {
override fun convertPlatformVisibility(visibility: Visibility): OldVisibility { override fun convertPlatformVisibility(visibility: Visibility): OldVisibility {
return when (visibility) { return when (visibility) {
JavaVisibilities.PackageVisibility -> OldJavaVisibilities.PACKAGE_VISIBILITY JavaVisibilities.PackageVisibility -> org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PACKAGE_VISIBILITY
JavaVisibilities.ProtectedStaticVisibility -> OldJavaVisibilities.PROTECTED_STATIC_VISIBILITY JavaVisibilities.ProtectedStaticVisibility -> org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY
JavaVisibilities.ProtectedAndPackage -> OldJavaVisibilities.PROTECTED_AND_PACKAGE JavaVisibilities.ProtectedAndPackage -> org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE
else -> error("Unknown visibility: $this") else -> error("Unknown visibility: $this")
} }
} }
@@ -56,7 +56,7 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
@OptIn(ObsoleteDescriptorBasedAPI::class) @OptIn(ObsoleteDescriptorBasedAPI::class)
class Fir2IrDeclarationStorage( class Fir2IrDeclarationStorage(
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.fir.Visibilities import org.jetbrains.kotlin.fir.Visibilities
import org.jetbrains.kotlin.fir.Visibility import org.jetbrains.kotlin.fir.Visibility
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities as OldVisibilities
abstract class Fir2IrVisibilityConverter { abstract class Fir2IrVisibilityConverter {
object Default : Fir2IrVisibilityConverter() { object Default : Fir2IrVisibilityConverter() {
@@ -19,14 +19,14 @@ abstract class Fir2IrVisibilityConverter {
fun convertToOldVisibility(visibility: Visibility): OldVisibility { fun convertToOldVisibility(visibility: Visibility): OldVisibility {
return when (visibility) { return when (visibility) {
Visibilities.Private -> OldVisibilities.PRIVATE Visibilities.Private -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE
Visibilities.PrivateToThis -> OldVisibilities.PRIVATE_TO_THIS Visibilities.PrivateToThis -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE_TO_THIS
Visibilities.Protected -> OldVisibilities.PROTECTED Visibilities.Protected -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PROTECTED
Visibilities.Internal -> OldVisibilities.INTERNAL Visibilities.Internal -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.INTERNAL
Visibilities.Public -> OldVisibilities.PUBLIC Visibilities.Public -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC
Visibilities.Local -> OldVisibilities.LOCAL Visibilities.Local -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.LOCAL
Visibilities.InvisibleFake -> OldVisibilities.INVISIBLE_FAKE Visibilities.InvisibleFake -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.INVISIBLE_FAKE
Visibilities.Unknown -> OldVisibilities.UNKNOWN Visibilities.Unknown -> org.jetbrains.kotlin.descriptors.DescriptorVisibilities.UNKNOWN
else -> convertPlatformVisibility(visibility) else -> convertPlatformVisibility(visibility)
} }
} }
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtPropertyDelegate import org.jetbrains.kotlin.psi.KtPropertyDelegate
import org.jetbrains.kotlin.psi2ir.generators.hasNoSideEffects import org.jetbrains.kotlin.psi2ir.generators.hasNoSideEffects
import org.jetbrains.kotlin.utils.SmartList import org.jetbrains.kotlin.utils.SmartList
import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities as OldVisibilities
class CallAndReferenceGenerator( class CallAndReferenceGenerator(
private val components: Fir2IrComponents, private val components: Fir2IrComponents,
@@ -254,7 +254,7 @@ class CallAndReferenceGenerator(
IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE, IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE,
irAdapterSymbol, irAdapterSymbol,
adaptee.name, adaptee.name,
OldVisibilities.LOCAL, org.jetbrains.kotlin.descriptors.DescriptorVisibilities.LOCAL,
Modality.FINAL, Modality.FINAL,
returnType, returnType,
isInline = firAdaptee.isInline, isInline = firAdaptee.isInline,
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.util.DataClassMembersGenerator import org.jetbrains.kotlin.ir.util.DataClassMembersGenerator
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities as OldVisibilities
/** /**
* A generator that generates synthetic members of data class as well as part of inline class. * A generator that generates synthetic members of data class as well as part of inline class.
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.backend.generators
import org.jetbrains.kotlin.backend.common.ir.isFinalClass import org.jetbrains.kotlin.backend.common.ir.isFinalClass
import org.jetbrains.kotlin.backend.common.ir.isOverridable import org.jetbrains.kotlin.backend.common.ir.isOverridable
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities as OldVisibilities
import org.jetbrains.kotlin.fir.Visibilities import org.jetbrains.kotlin.fir.Visibilities
import org.jetbrains.kotlin.fir.backend.* import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter
@@ -142,7 +142,7 @@ internal class DelegatedMemberGenerator(
private fun IrDeclaration.isOverridable(): Boolean { private fun IrDeclaration.isOverridable(): Boolean {
return when (this) { return when (this) {
is IrSimpleFunction -> this.isOverridable is IrSimpleFunction -> this.isOverridable
is IrProperty -> visibility != OldVisibilities.PRIVATE && modality != Modality.FINAL && (parent as? IrClass)?.isFinalClass != true is IrProperty -> visibility != org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE && modality != Modality.FINAL && (parent as? IrClass)?.isFinalClass != true
else -> false else -> false
} }
} }
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.ir.types.IrErrorType
import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.IrTypeProjection import org.jetbrains.kotlin.ir.types.IrTypeProjection
import org.jetbrains.kotlin.load.java.JavaVisibilities import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class FakeOverrideGenerator( class FakeOverrideGenerator(
@@ -46,7 +46,7 @@ class FakeOverrideGenerator(
private fun FirCallableMemberDeclaration<*>.allowsToHaveFakeOverrideIn(klass: FirClass<*>): Boolean { private fun FirCallableMemberDeclaration<*>.allowsToHaveFakeOverrideIn(klass: FirClass<*>): Boolean {
if (!allowsToHaveFakeOverride) return false if (!allowsToHaveFakeOverride) return false
if (this.visibility != JavaVisibilities.PACKAGE_VISIBILITY) return true if (this.visibility != JavaDescriptorVisibilities.PACKAGE_VISIBILITY) return true
return this.symbol.callableId.packageName == klass.symbol.classId.packageFqName return this.symbol.callableId.packageName == klass.symbol.classId.packageFqName
} }
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
class Fir2IrLazyClass( class Fir2IrLazyClass(
components: Fir2IrComponents, components: Fir2IrComponents,
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.ir.util.parentClassOrNull
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
class Fir2IrLazyConstructor( class Fir2IrLazyConstructor(
components: Fir2IrComponents, components: Fir2IrComponents,
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.isInterface import org.jetbrains.kotlin.ir.util.isInterface
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
class Fir2IrLazyProperty( class Fir2IrLazyProperty(
components: Fir2IrComponents, components: Fir2IrComponents,
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
class Fir2IrLazySimpleFunction( class Fir2IrLazySimpleFunction(
components: Fir2IrComponents, components: Fir2IrComponents,
@@ -40,9 +40,7 @@ import org.jetbrains.kotlin.load.java.typeEnhancement.TypeComponentPosition
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.types.Variance.* import org.jetbrains.kotlin.types.Variance.*
import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibility as OldVisibility
import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility
import org.jetbrains.kotlin.load.java.JavaVisibilities as OldJavaVisibilities
internal val JavaModifierListOwner.modality: Modality internal val JavaModifierListOwner.modality: Modality
get() = when { get() = when {
@@ -527,16 +525,16 @@ private fun JavaType.toFirResolvedTypeRef(
} }
fun OldVisibility.toFirVisibility(): Visibility = when (this) { fun OldVisibility.toFirVisibility(): Visibility = when (this) {
OldVisibilities.PRIVATE -> Visibilities.Private org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE -> Visibilities.Private
OldVisibilities.PRIVATE_TO_THIS -> Visibilities.PrivateToThis org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE_TO_THIS -> Visibilities.PrivateToThis
OldVisibilities.PROTECTED -> Visibilities.Protected org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PROTECTED -> Visibilities.Protected
OldVisibilities.INTERNAL -> Visibilities.Internal org.jetbrains.kotlin.descriptors.DescriptorVisibilities.INTERNAL -> Visibilities.Internal
OldVisibilities.PUBLIC -> Visibilities.Public org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC -> Visibilities.Public
OldVisibilities.LOCAL -> Visibilities.Local org.jetbrains.kotlin.descriptors.DescriptorVisibilities.LOCAL -> Visibilities.Local
OldVisibilities.INVISIBLE_FAKE -> Visibilities.InvisibleFake org.jetbrains.kotlin.descriptors.DescriptorVisibilities.INVISIBLE_FAKE -> Visibilities.InvisibleFake
OldVisibilities.UNKNOWN -> Visibilities.Unknown org.jetbrains.kotlin.descriptors.DescriptorVisibilities.UNKNOWN -> Visibilities.Unknown
OldJavaVisibilities.PACKAGE_VISIBILITY -> JavaVisibilities.PackageVisibility org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PACKAGE_VISIBILITY -> JavaVisibilities.PackageVisibility
OldJavaVisibilities.PROTECTED_AND_PACKAGE -> JavaVisibilities.ProtectedAndPackage org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE -> JavaVisibilities.ProtectedAndPackage
OldJavaVisibilities.PROTECTED_STATIC_VISIBILITY -> JavaVisibilities.ProtectedStaticVisibility org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY -> JavaVisibilities.ProtectedStaticVisibility
else -> error("Unknown visiblity: $this") else -> error("Unknown visiblity: $this")
} }
@@ -23,7 +23,7 @@ import com.intellij.psi.PsiTypeParameter
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.asJava.KtLightClassMarker import org.jetbrains.kotlin.asJava.KtLightClassMarker
import org.jetbrains.kotlin.asJava.isSyntheticValuesOrValueOfMethod import org.jetbrains.kotlin.asJava.isSyntheticValuesOrValueOfMethod
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.load.java.structure.* import org.jetbrains.kotlin.load.java.structure.*
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -111,7 +111,7 @@ class JavaClassImpl(psiClass: PsiClass) : JavaClassifierImpl<PsiClass>(psiClass)
override val isFinal: Boolean override val isFinal: Boolean
get() = JavaElementUtil.isFinal(this) get() = JavaElementUtil.isFinal(this)
override val visibility: Visibility override val visibility: DescriptorVisibility
get() = JavaElementUtil.getVisibility(this) get() = JavaElementUtil.getVisibility(this)
override val lightClassOriginKind: LightClassOriginKind? override val lightClassOriginKind: LightClassOriginKind?
@@ -20,9 +20,9 @@ import com.intellij.codeInsight.ExternalAnnotationsManager;
import com.intellij.psi.*; import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.Visibilities; import org.jetbrains.kotlin.descriptors.DescriptorVisibilities;
import org.jetbrains.kotlin.descriptors.Visibility; import org.jetbrains.kotlin.descriptors.DescriptorVisibility;
import org.jetbrains.kotlin.load.java.JavaVisibilities; import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities;
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation; import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
@@ -50,18 +50,18 @@ import static org.jetbrains.kotlin.load.java.structure.impl.JavaElementCollectio
} }
@NotNull @NotNull
public static Visibility getVisibility(@NotNull JavaModifierListOwnerImpl owner) { public static DescriptorVisibility getVisibility(@NotNull JavaModifierListOwnerImpl owner) {
PsiModifierListOwner psiOwner = owner.getPsi(); PsiModifierListOwner psiOwner = owner.getPsi();
if (psiOwner.hasModifierProperty(PsiModifier.PUBLIC)) { if (psiOwner.hasModifierProperty(PsiModifier.PUBLIC)) {
return Visibilities.PUBLIC; return DescriptorVisibilities.PUBLIC;
} }
if (psiOwner.hasModifierProperty(PsiModifier.PRIVATE)) { if (psiOwner.hasModifierProperty(PsiModifier.PRIVATE)) {
return Visibilities.PRIVATE; return DescriptorVisibilities.PRIVATE;
} }
if (psiOwner.hasModifierProperty(PsiModifier.PROTECTED)) { if (psiOwner.hasModifierProperty(PsiModifier.PROTECTED)) {
return owner.isStatic() ? JavaVisibilities.PROTECTED_STATIC_VISIBILITY : JavaVisibilities.PROTECTED_AND_PACKAGE; return owner.isStatic() ? JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY : JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE;
} }
return JavaVisibilities.PACKAGE_VISIBILITY; return JavaDescriptorVisibilities.PACKAGE_VISIBILITY;
} }
@NotNull @NotNull
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiMember; import com.intellij.psi.PsiMember;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.Visibility; import org.jetbrains.kotlin.descriptors.DescriptorVisibility;
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation; import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
import org.jetbrains.kotlin.load.java.structure.JavaClass; import org.jetbrains.kotlin.load.java.structure.JavaClass;
import org.jetbrains.kotlin.load.java.structure.JavaMember; import org.jetbrains.kotlin.load.java.structure.JavaMember;
@@ -76,7 +76,7 @@ public abstract class JavaMemberImpl<Psi extends PsiMember> extends JavaElementI
@NotNull @NotNull
@Override @Override
public Visibility getVisibility() { public DescriptorVisibility getVisibility() {
return JavaElementUtil.getVisibility(this); return JavaElementUtil.getVisibility(this);
} }
@@ -21,8 +21,8 @@ import com.intellij.psi.PsiParameter;
import com.intellij.psi.impl.compiled.ClsParameterImpl; import com.intellij.psi.impl.compiled.ClsParameterImpl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.Visibilities; import org.jetbrains.kotlin.descriptors.DescriptorVisibilities;
import org.jetbrains.kotlin.descriptors.Visibility; import org.jetbrains.kotlin.descriptors.DescriptorVisibility;
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation; import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
import org.jetbrains.kotlin.load.java.structure.JavaType; import org.jetbrains.kotlin.load.java.structure.JavaType;
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter; import org.jetbrains.kotlin.load.java.structure.JavaValueParameter;
@@ -60,8 +60,8 @@ public class JavaValueParameterImpl extends JavaElementImpl<PsiParameter>
@NotNull @NotNull
@Override @Override
public Visibility getVisibility() { public DescriptorVisibility getVisibility() {
return Visibilities.LOCAL; return DescriptorVisibilities.LOCAL;
} }
@NotNull @NotNull
@@ -16,9 +16,9 @@
package org.jetbrains.kotlin.load.java.structure.impl.classFiles package org.jetbrains.kotlin.load.java.structure.impl.classFiles
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.load.java.JavaVisibilities import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.load.java.structure.JavaModifierListOwner import org.jetbrains.kotlin.load.java.structure.JavaModifierListOwner
import org.jetbrains.kotlin.load.java.structure.MapBasedJavaAnnotationOwner import org.jetbrains.kotlin.load.java.structure.MapBasedJavaAnnotationOwner
import org.jetbrains.org.objectweb.asm.Opcodes 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 isAbstract get() = isSet(Opcodes.ACC_ABSTRACT)
override val isStatic get() = isSet(Opcodes.ACC_STATIC) override val isStatic get() = isSet(Opcodes.ACC_STATIC)
override val isFinal get() = isSet(Opcodes.ACC_FINAL) override val isFinal get() = isSet(Opcodes.ACC_FINAL)
override val visibility: Visibility override val visibility: DescriptorVisibility
get() = when { get() = when {
isSet(Opcodes.ACC_PRIVATE) -> Visibilities.PRIVATE isSet(Opcodes.ACC_PRIVATE) -> DescriptorVisibilities.PRIVATE
isSet(Opcodes.ACC_PROTECTED) -> isSet(Opcodes.ACC_PROTECTED) ->
if (isStatic) JavaVisibilities.PROTECTED_STATIC_VISIBILITY else JavaVisibilities.PROTECTED_AND_PACKAGE if (isStatic) JavaDescriptorVisibilities.PROTECTED_STATIC_VISIBILITY else JavaDescriptorVisibilities.PROTECTED_AND_PACKAGE
isSet(Opcodes.ACC_PUBLIC) -> Visibilities.PUBLIC isSet(Opcodes.ACC_PUBLIC) -> DescriptorVisibilities.PUBLIC
else -> JavaVisibilities.PACKAGE_VISIBILITY else -> JavaDescriptorVisibilities.PACKAGE_VISIBILITY
} }
override val isDeprecatedInJavaDoc get() = isSet(Opcodes.ACC_DEPRECATED) override val isDeprecatedInJavaDoc get() = isSet(Opcodes.ACC_DEPRECATED)
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.resolve.jvm.checkers
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtExpression
@@ -70,7 +70,7 @@ class JavaTypeAccessibilityChecker : AdditionalTypeChecker {
val declarationDescriptor = type.constructor.declarationDescriptor val declarationDescriptor = type.constructor.declarationDescriptor
if (declarationDescriptor is JavaClassDescriptor) { if (declarationDescriptor is JavaClassDescriptor) {
if (!Visibilities.isVisibleIgnoringReceiver(declarationDescriptor, scopeOwner)) { if (!DescriptorVisibilities.isVisibleIgnoringReceiver(declarationDescriptor, scopeOwner)) {
inaccessibleClasses.add(declarationDescriptor) inaccessibleClasses.add(declarationDescriptor)
} }
} }
@@ -81,4 +81,4 @@ class JavaTypeAccessibilityChecker : AdditionalTypeChecker {
} }
} }
} }
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.resolve.jvm.checkers
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.MemberDescriptor import org.jetbrains.kotlin.descriptors.MemberDescriptor
import org.jetbrains.kotlin.descriptors.VariableDescriptor import org.jetbrains.kotlin.descriptors.VariableDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.*
import org.jetbrains.kotlin.descriptors.annotations.KotlinRetention import org.jetbrains.kotlin.descriptors.annotations.KotlinRetention
import org.jetbrains.kotlin.diagnostics.reportDiagnosticOnce import org.jetbrains.kotlin.diagnostics.reportDiagnosticOnce
@@ -34,7 +34,7 @@ class JvmAnnotationsTargetNonExistentAccessorChecker : DeclarationChecker {
if (descriptor !is MemberDescriptor) return if (descriptor !is MemberDescriptor) return
if (declaration !is KtParameter && declaration !is KtProperty) return if (declaration !is KtParameter && declaration !is KtProperty) return
if (!Visibilities.isPrivate(descriptor.visibility) && !isSpecialStaticProperty(descriptor)) return if (!DescriptorVisibilities.isPrivate(descriptor.visibility) && !isSpecialStaticProperty(descriptor)) return
val hasGetterWithBody = declaration is KtProperty && declaration.getter?.hasBody() == true val hasGetterWithBody = declaration is KtProperty && declaration.getter?.hasBody() == true
val hasSetterWithBody = declaration is KtProperty && declaration.setter?.hasBody() == true val hasSetterWithBody = declaration is KtProperty && declaration.setter?.hasBody() == true
@@ -63,7 +63,7 @@ class JvmFieldApplicabilityChecker : DeclarationChecker {
declaration.hasDelegate() -> DELEGATE declaration.hasDelegate() -> DELEGATE
!descriptor.hasBackingField(context.trace.bindingContext) -> return !descriptor.hasBackingField(context.trace.bindingContext) -> return
descriptor.isOverridable -> NOT_FINAL descriptor.isOverridable -> NOT_FINAL
Visibilities.isPrivate(descriptor.visibility) -> PRIVATE DescriptorVisibilities.isPrivate(descriptor.visibility) -> PRIVATE
declaration.hasCustomAccessor() -> CUSTOM_ACCESSOR declaration.hasCustomAccessor() -> CUSTOM_ACCESSOR
descriptor.overriddenDescriptors.isNotEmpty() -> OVERRIDES descriptor.overriddenDescriptors.isNotEmpty() -> OVERRIDES
descriptor.isLateInit -> LATEINIT descriptor.isLateInit -> LATEINIT
@@ -92,7 +92,7 @@ class JvmFieldApplicabilityChecker : DeclarationChecker {
)) { )) {
if (next !is PropertyDescriptor) continue if (next !is PropertyDescriptor) continue
if (next.visibility != Visibilities.PUBLIC || next.isVar || next.modality != Modality.FINAL) return false if (next.visibility != DescriptorVisibilities.PUBLIC || next.isVar || next.modality != Modality.FINAL) return false
if (!DescriptorsJvmAbiUtil.hasJvmFieldAnnotation(next)) return false if (!DescriptorsJvmAbiUtil.hasJvmFieldAnnotation(next)) return false
} }
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.resolve.jvm.checkers
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.annotations.hasJvmStaticAnnotation import org.jetbrains.kotlin.resolve.annotations.hasJvmStaticAnnotation
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
@@ -32,7 +32,7 @@ class ProtectedInSuperClassCompanionCallChecker : CallChecker {
val targetDescriptor = resolvedCall.resultingDescriptor.original val targetDescriptor = resolvedCall.resultingDescriptor.original
// Protected non-JVM static // Protected non-JVM static
if (targetDescriptor.visibility != Visibilities.PROTECTED) return if (targetDescriptor.visibility != DescriptorVisibilities.PROTECTED) return
if (targetDescriptor.hasJvmStaticAnnotation()) return if (targetDescriptor.hasJvmStaticAnnotation()) return
val containerDescriptor = targetDescriptor.containingDeclaration val containerDescriptor = targetDescriptor.containingDeclaration
// Declared in companion object // Declared in companion object
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.resolve.jvm.checkers package org.jetbrains.kotlin.resolve.jvm.checkers
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
@@ -43,7 +43,7 @@ object ProtectedSyntheticExtensionCallChecker : CallChecker {
val from = context.scope.ownerDescriptor val from = context.scope.ownerDescriptor
// Already reported // Already reported
if (!Visibilities.isVisibleIgnoringReceiver(descriptor, from)) return if (!DescriptorVisibilities.isVisibleIgnoringReceiver(descriptor, from)) return
if (resolvedCall.dispatchReceiver != null && resolvedCall.extensionReceiver !is ReceiverValue) return if (resolvedCall.dispatchReceiver != null && resolvedCall.extensionReceiver !is ReceiverValue) return
@@ -53,7 +53,7 @@ object ProtectedSyntheticExtensionCallChecker : CallChecker {
context.languageVersionSettings context.languageVersionSettings
) )
if (receiverTypes.none { Visibilities.isVisible(getReceiverValueWithSmartCast(null, it), sourceFunction, from) }) { if (receiverTypes.none { DescriptorVisibilities.isVisible(getReceiverValueWithSmartCast(null, it), sourceFunction, from) }) {
context.trace.report(Errors.INVISIBLE_MEMBER.on(reportOn, descriptor, descriptor.visibility, from)) context.trace.report(Errors.INVISIBLE_MEMBER.on(reportOn, descriptor, descriptor.visibility, from))
} }
} }
@@ -50,7 +50,7 @@ class LocalFunInlineChecker : DeclarationChecker {
if (InlineUtil.isInline(descriptor) && if (InlineUtil.isInline(descriptor) &&
declaration is KtNamedFunction && declaration is KtNamedFunction &&
descriptor is FunctionDescriptor && descriptor is FunctionDescriptor &&
descriptor.visibility == Visibilities.LOCAL) { descriptor.visibility == DescriptorVisibilities.LOCAL) {
context.trace.report(Errors.NOT_YET_SUPPORTED_IN_INLINE.on(declaration, "Local inline functions")) context.trace.report(Errors.NOT_YET_SUPPORTED_IN_INLINE.on(declaration, "Local inline functions"))
} }
} }
@@ -117,7 +117,7 @@ class JvmStaticChecker(jvmTarget: JvmTarget, languageVersionSettings: LanguageVe
diagnosticHolder: DiagnosticSink, diagnosticHolder: DiagnosticSink,
declaration: KtDeclaration declaration: KtDeclaration
) { ) {
if (descriptor.visibility != Visibilities.PUBLIC) { if (descriptor.visibility != DescriptorVisibilities.PUBLIC) {
diagnosticHolder.report(ErrorsJvm.JVM_STATIC_ON_NON_PUBLIC_MEMBER.on(declaration)) diagnosticHolder.report(ErrorsJvm.JVM_STATIC_ON_NON_PUBLIC_MEMBER.on(declaration))
} else if (descriptor is PropertyDescriptor) { } else if (descriptor is PropertyDescriptor) {
descriptor.setter?.let { checkVisibility(it, diagnosticHolder, declaration) } descriptor.setter?.let { checkVisibility(it, diagnosticHolder, declaration) }
@@ -234,7 +234,7 @@ class OverloadsAnnotationChecker: DeclarationChecker {
ErrorsJvm.OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_WARNING ErrorsJvm.OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_WARNING
diagnosticHolder.report(diagnostic.on(annotationEntry)) diagnosticHolder.report(diagnostic.on(annotationEntry))
} else if (!descriptor.visibility.isPublicAPI && descriptor.visibility != Visibilities.INTERNAL) { } else if (!descriptor.visibility.isPublicAPI && descriptor.visibility != DescriptorVisibilities.INTERNAL) {
diagnosticHolder.report(ErrorsJvm.OVERLOADS_PRIVATE.on(annotationEntry)) diagnosticHolder.report(ErrorsJvm.OVERLOADS_PRIVATE.on(annotationEntry))
} else if (descriptor.valueParameters.none { it.declaresDefaultValue() || it.isActualParameterWithCorrespondingExpectedDefault }) { } else if (descriptor.valueParameters.none { it.declaresDefaultValue() || it.isActualParameterWithCorrespondingExpectedDefault }) {
diagnosticHolder.report(ErrorsJvm.OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS.on(annotationEntry)) diagnosticHolder.report(ErrorsJvm.OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS.on(annotationEntry))
@@ -97,7 +97,7 @@ public class SignaturesPropagationData {
autoValueParameters, autoValueParameters,
autoReturnType, autoReturnType,
Modality.OPEN, Modality.OPEN,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
); );
return autoMethodDescriptor; return autoMethodDescriptor;
} }
@@ -278,15 +278,15 @@ class JavaSyntheticPropertiesScope(storageManager: StorageManager, private val l
} }
private class MyPropertyDescriptor( private class MyPropertyDescriptor(
containingDeclaration: DeclarationDescriptor, containingDeclaration: DeclarationDescriptor,
original: PropertyDescriptor?, original: PropertyDescriptor?,
annotations: Annotations, annotations: Annotations,
modality: Modality, modality: Modality,
visibility: Visibility, visibility: DescriptorVisibility,
isVar: Boolean, isVar: Boolean,
name: Name, name: Name,
kind: CallableMemberDescriptor.Kind, kind: CallableMemberDescriptor.Kind,
source: SourceElement source: SourceElement
) : SyntheticJavaPropertyDescriptor, PropertyDescriptorImpl( ) : SyntheticJavaPropertyDescriptor, PropertyDescriptorImpl(
containingDeclaration, original, annotations, modality, visibility, isVar, name, kind, source, containingDeclaration, original, annotations, modality, visibility, isVar, name, kind, source,
/* lateInit = */ false, /* isConst = */ false, /* isExpect = */ false, /* isActual = */ false, /* isExternal = */ false, /* lateInit = */ false, /* isConst = */ false, /* isExpect = */ false, /* isActual = */ false, /* isExternal = */ false,
@@ -372,13 +372,13 @@ class JavaSyntheticPropertiesScope(storageManager: StorageManager, private val l
} }
override fun createSubstitutedCopy( override fun createSubstitutedCopy(
newOwner: DeclarationDescriptor, newOwner: DeclarationDescriptor,
newModality: Modality, newModality: Modality,
newVisibility: Visibility, newVisibility: DescriptorVisibility,
original: PropertyDescriptor?, original: PropertyDescriptor?,
kind: CallableMemberDescriptor.Kind, kind: CallableMemberDescriptor.Kind,
newName: Name, newName: Name,
source: SourceElement source: SourceElement
): PropertyDescriptorImpl { ): PropertyDescriptorImpl {
return MyPropertyDescriptor(newOwner, this, annotations, newModality, newVisibility, isVar, newName, kind, this.source).apply { return MyPropertyDescriptor(newOwner, this, annotations, newModality, newVisibility, isVar, newName, kind, this.source).apply {
getMethod = this@MyPropertyDescriptor.getMethod getMethod = this@MyPropertyDescriptor.getMethod
@@ -32,20 +32,20 @@ fun FunctionDescriptor.hasJavaOriginInHierarchy(): Boolean {
original.overriddenDescriptors.any { it.hasJavaOriginInHierarchy() } original.overriddenDescriptors.any { it.hasJavaOriginInHierarchy() }
} }
fun Visibility.isVisibleOutside() = this != Visibilities.PRIVATE && this != Visibilities.PRIVATE_TO_THIS && this != Visibilities.INVISIBLE_FAKE fun DescriptorVisibility.isVisibleOutside() = this != DescriptorVisibilities.PRIVATE && this != DescriptorVisibilities.PRIVATE_TO_THIS && this != DescriptorVisibilities.INVISIBLE_FAKE
fun syntheticVisibility(originalDescriptor: DeclarationDescriptorWithVisibility, isUsedForExtension: Boolean): Visibility { fun syntheticVisibility(originalDescriptor: DeclarationDescriptorWithVisibility, isUsedForExtension: Boolean): DescriptorVisibility {
val originalVisibility = originalDescriptor.visibility val originalVisibility = originalDescriptor.visibility
return when (originalVisibility) { return when (originalVisibility) {
Visibilities.PUBLIC -> Visibilities.PUBLIC DescriptorVisibilities.PUBLIC -> DescriptorVisibilities.PUBLIC
else -> object : Visibility(originalVisibility.name, originalVisibility.isPublicAPI) { else -> object : DescriptorVisibility(originalVisibility.name, originalVisibility.isPublicAPI) {
override fun isVisible( override fun isVisible(
receiver: ReceiverValue?, receiver: ReceiverValue?,
what: DeclarationDescriptorWithVisibility, what: DeclarationDescriptorWithVisibility,
from: DeclarationDescriptor from: DeclarationDescriptor
) = originalVisibility.isVisible( ) = originalVisibility.isVisible(
if (isUsedForExtension) Visibilities.ALWAYS_SUITABLE_RECEIVER else receiver, originalDescriptor, from) if (isUsedForExtension) DescriptorVisibilities.ALWAYS_SUITABLE_RECEIVER else receiver, originalDescriptor, from)
override fun mustCheckInImports() override fun mustCheckInImports()
= throw UnsupportedOperationException("Should never be called for this visibility") = throw UnsupportedOperationException("Should never be called for this visibility")
@@ -69,4 +69,4 @@ fun <D : CallableDescriptor> ResolvedCall<D>.isResolvedWithSamConversions(): Boo
return this.resultingDescriptor is SamAdapterDescriptor<*> || return this.resultingDescriptor is SamAdapterDescriptor<*> ||
this.resultingDescriptor is SamConstructorDescriptor || this.resultingDescriptor is SamConstructorDescriptor ||
this.resultingDescriptor is SamAdapterExtensionFunctionDescriptor this.resultingDescriptor is SamAdapterExtensionFunctionDescriptor
} }
@@ -487,9 +487,9 @@ class ControlFlowInformationProvider private constructor(
val receiverValue = expression.getResolvedCall(trace.bindingContext)?.getDispatchReceiverWithSmartCast() val receiverValue = expression.getResolvedCall(trace.bindingContext)?.getDispatchReceiverWithSmartCast()
if (Visibilities.isVisible(receiverValue, variableDescriptor, descriptor) if (DescriptorVisibilities.isVisible(receiverValue, variableDescriptor, descriptor)
&& setterDescriptor != null && setterDescriptor != null
&& !Visibilities.isVisible(receiverValue, setterDescriptor, descriptor) && !DescriptorVisibilities.isVisible(receiverValue, setterDescriptor, descriptor)
) { ) {
report( report(
Errors.INVISIBLE_SETTER.on( Errors.INVISIBLE_SETTER.on(
@@ -1315,4 +1315,4 @@ fun ParameterDescriptor.index(): Int =
is ReceiverParameterDescriptor -> -1 is ReceiverParameterDescriptor -> -1
is ValueParameterDescriptor -> index is ValueParameterDescriptor -> index
else -> error("expected either receiver or value parameter, but got: $this") else -> error("expected either receiver or value parameter, but got: $this")
} }
@@ -42,7 +42,7 @@ sealed class LocalVariableAccessorDescriptor(
val returnType = val returnType =
if (isGetter) correspondingVariable.type else correspondingVariable.builtIns.unitType if (isGetter) correspondingVariable.type else correspondingVariable.builtIns.unitType
@Suppress("LeakingThis") @Suppress("LeakingThis")
initialize(null, null, emptyList(), valueParameters, returnType, Modality.FINAL, Visibilities.LOCAL) initialize(null, null, emptyList(), valueParameters, returnType, Modality.FINAL, DescriptorVisibilities.LOCAL)
} }
private fun createValueParameter(name: Name, type: KotlinType): ValueParameterDescriptorImpl { private fun createValueParameter(name: Name, type: KotlinType): ValueParameterDescriptorImpl {
@@ -92,8 +92,8 @@ public class LocalVariableDescriptor extends VariableDescriptorWithInitializerIm
@NotNull @NotNull
@Override @Override
public Visibility getVisibility() { public DescriptorVisibility getVisibility() {
return Visibilities.LOCAL; return DescriptorVisibilities.LOCAL;
} }
@Nullable @Nullable
@@ -123,9 +123,9 @@ public interface Errors {
//Elements with "INVISIBLE_REFERENCE" error are marked as unresolved, unlike elements with "INVISIBLE_MEMBER" error //Elements with "INVISIBLE_REFERENCE" error are marked as unresolved, unlike elements with "INVISIBLE_MEMBER" error
//"INVISIBLE_REFERENCE" is used for invisible classes references and references in import //"INVISIBLE_REFERENCE" is used for invisible classes references and references in import
DiagnosticFactory3<KtSimpleNameExpression, DeclarationDescriptor, Visibility, DeclarationDescriptor> INVISIBLE_REFERENCE = DiagnosticFactory3<KtSimpleNameExpression, DeclarationDescriptor, DescriptorVisibility, DeclarationDescriptor> INVISIBLE_REFERENCE =
DiagnosticFactory3.create(ERROR); DiagnosticFactory3.create(ERROR);
DiagnosticFactory3<PsiElement, DeclarationDescriptor, Visibility, DeclarationDescriptor> INVISIBLE_MEMBER = DiagnosticFactory3.create(ERROR, CALL_ELEMENT); DiagnosticFactory3<PsiElement, DeclarationDescriptor, DescriptorVisibility, DeclarationDescriptor> INVISIBLE_MEMBER = DiagnosticFactory3.create(ERROR, CALL_ELEMENT);
DiagnosticFactory1<KtElement, DeclarationDescriptor> DEPRECATED_ACCESS_BY_SHORT_NAME = DiagnosticFactory1.create(WARNING); DiagnosticFactory1<KtElement, DeclarationDescriptor> DEPRECATED_ACCESS_BY_SHORT_NAME = DiagnosticFactory1.create(WARNING);
DiagnosticFactory1<PsiElement, ConstructorDescriptor> PROTECTED_CONSTRUCTOR_NOT_IN_SUPER_CALL = DiagnosticFactory1.create(ERROR); DiagnosticFactory1<PsiElement, ConstructorDescriptor> PROTECTED_CONSTRUCTOR_NOT_IN_SUPER_CALL = DiagnosticFactory1.create(ERROR);
@@ -496,9 +496,9 @@ public interface Errors {
DiagnosticFactory2<KtNamedDeclaration, CallableMemberDescriptor, DeclarationDescriptor> OVERRIDING_FINAL_MEMBER = DiagnosticFactory2<KtNamedDeclaration, CallableMemberDescriptor, DeclarationDescriptor> OVERRIDING_FINAL_MEMBER =
DiagnosticFactory2.create(ERROR, OVERRIDE_MODIFIER); DiagnosticFactory2.create(ERROR, OVERRIDE_MODIFIER);
DiagnosticFactory3<KtModifierListOwner, Visibility, CallableMemberDescriptor, DeclarationDescriptor> CANNOT_WEAKEN_ACCESS_PRIVILEGE = DiagnosticFactory3<KtModifierListOwner, DescriptorVisibility, CallableMemberDescriptor, DeclarationDescriptor> CANNOT_WEAKEN_ACCESS_PRIVILEGE =
DiagnosticFactory3.create(ERROR, VISIBILITY_MODIFIER); DiagnosticFactory3.create(ERROR, VISIBILITY_MODIFIER);
DiagnosticFactory3<KtModifierListOwner, Visibility, CallableMemberDescriptor, DeclarationDescriptor> CANNOT_CHANGE_ACCESS_PRIVILEGE = DiagnosticFactory3<KtModifierListOwner, DescriptorVisibility, CallableMemberDescriptor, DeclarationDescriptor> CANNOT_CHANGE_ACCESS_PRIVILEGE =
DiagnosticFactory3.create(ERROR, VISIBILITY_MODIFIER); DiagnosticFactory3.create(ERROR, VISIBILITY_MODIFIER);
DiagnosticFactory2<KtNamedDeclaration, CallableMemberDescriptor, DeclarationWithDiagnosticComponents> RETURN_TYPE_MISMATCH_ON_OVERRIDE = DiagnosticFactory2<KtNamedDeclaration, CallableMemberDescriptor, DeclarationWithDiagnosticComponents> RETURN_TYPE_MISMATCH_ON_OVERRIDE =
DiagnosticFactory2.create(ERROR, DECLARATION_RETURN_TYPE); DiagnosticFactory2.create(ERROR, DECLARATION_RETURN_TYPE);
@@ -1029,7 +1029,7 @@ public interface Errors {
DiagnosticFactory0<KtTypeParameterList> LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING = DiagnosticFactory0.create(WARNING); DiagnosticFactory0<KtTypeParameterList> LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING = DiagnosticFactory0.create(WARNING);
DiagnosticFactory0<KtTypeParameterList> LOCAL_VARIABLE_WITH_TYPE_PARAMETERS = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<KtTypeParameterList> LOCAL_VARIABLE_WITH_TYPE_PARAMETERS = DiagnosticFactory0.create(ERROR);
DiagnosticFactory3<KtExpression, DeclarationDescriptor, Visibility, DeclarationDescriptor> INVISIBLE_SETTER = DiagnosticFactory3.create(ERROR); DiagnosticFactory3<KtExpression, DeclarationDescriptor, DescriptorVisibility, DeclarationDescriptor> INVISIBLE_SETTER = DiagnosticFactory3.create(ERROR);
DiagnosticFactory1<PsiElement, KtKeywordToken> VAL_OR_VAR_ON_LOOP_PARAMETER = DiagnosticFactory1.create(ERROR); DiagnosticFactory1<PsiElement, KtKeywordToken> VAL_OR_VAR_ON_LOOP_PARAMETER = DiagnosticFactory1.create(ERROR);
DiagnosticFactory1<PsiElement, KtKeywordToken> VAL_OR_VAR_ON_FUN_PARAMETER = DiagnosticFactory1.create(ERROR); DiagnosticFactory1<PsiElement, KtKeywordToken> VAL_OR_VAR_ON_FUN_PARAMETER = DiagnosticFactory1.create(ERROR);
@@ -99,7 +99,7 @@ object Renderers {
} }
@JvmField @JvmField
val VISIBILITY = Renderer<Visibility> { val VISIBILITY = Renderer<DescriptorVisibility> {
it.externalDisplayName it.externalDisplayName
} }
@@ -134,7 +134,7 @@ object Renderers {
@JvmField @JvmField
val NAME_OF_CONTAINING_DECLARATION_OR_FILE = Renderer<DeclarationDescriptor> { val NAME_OF_CONTAINING_DECLARATION_OR_FILE = Renderer<DeclarationDescriptor> {
if (DescriptorUtils.isTopLevelDeclaration(it) && it is DeclarationDescriptorWithVisibility && it.visibility == Visibilities.PRIVATE) { if (DescriptorUtils.isTopLevelDeclaration(it) && it is DeclarationDescriptorWithVisibility && it.visibility == DescriptorVisibilities.PRIVATE) {
"file" "file"
} else { } else {
val containingDeclaration = it.containingDeclaration val containingDeclaration = it.containingDeclaration
@@ -37,18 +37,18 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
* This class has its own synthetic declaration inside. * This class has its own synthetic declaration inside.
*/ */
class SyntheticClassOrObjectDescriptor( class SyntheticClassOrObjectDescriptor(
c: LazyClassContext, c: LazyClassContext,
parentClassOrObject: KtPureClassOrObject, parentClassOrObject: KtPureClassOrObject,
containingDeclaration: DeclarationDescriptor, containingDeclaration: DeclarationDescriptor,
name: Name, name: Name,
source: SourceElement, source: SourceElement,
outerScope: LexicalScope, outerScope: LexicalScope,
private val modality: Modality, private val modality: Modality,
private val visibility: Visibility, private val visibility: DescriptorVisibility,
override val annotations: Annotations, override val annotations: Annotations,
constructorVisibility: Visibility, constructorVisibility: DescriptorVisibility,
private val kind: ClassKind, private val kind: ClassKind,
private val isCompanionObject: Boolean private val isCompanionObject: Boolean
) : ClassDescriptorBase(c.storageManager, containingDeclaration, name, source, false), ClassDescriptorWithResolutionScopes { ) : ClassDescriptorBase(c.storageManager, containingDeclaration, name, source, false), ClassDescriptorWithResolutionScopes {
val syntheticDeclaration: KtPureClassOrObject = SyntheticDeclaration(parentClassOrObject, name.asString()) val syntheticDeclaration: KtPureClassOrObject = SyntheticDeclaration(parentClassOrObject, name.asString())
@@ -116,7 +116,7 @@ class SyntheticClassOrObjectDescriptor(
override fun toString(): String = "synthetic class " + name.toString() + " in " + containingDeclaration override fun toString(): String = "synthetic class " + name.toString() + " in " + containingDeclaration
private fun createUnsubstitutedPrimaryConstructor(constructorVisibility: Visibility): ClassConstructorDescriptor { private fun createUnsubstitutedPrimaryConstructor(constructorVisibility: DescriptorVisibility): ClassConstructorDescriptor {
val constructor = DescriptorFactory.createPrimaryConstructorForObject(thisDescriptor, source) val constructor = DescriptorFactory.createPrimaryConstructorForObject(thisDescriptor, source)
constructor.visibility = constructorVisibility constructor.visibility = constructorVisibility
constructor.returnType = getDefaultType() constructor.returnType = getDefaultType()
@@ -114,7 +114,7 @@ object DataClassDescriptorResolver {
parameterDescriptors, parameterDescriptors,
classDescriptor.defaultType, classDescriptor.defaultType,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
trace.record(BindingContext.DATA_CLASS_COPY_FUNCTION, classDescriptor, functionDescriptor) trace.record(BindingContext.DATA_CLASS_COPY_FUNCTION, classDescriptor, functionDescriptor)
@@ -601,7 +601,7 @@ class DeclarationsChecker(
} }
private fun checkPrivateExpectedDeclaration(declaration: KtDeclaration, descriptor: MemberDescriptor) { private fun checkPrivateExpectedDeclaration(declaration: KtDeclaration, descriptor: MemberDescriptor) {
if (descriptor.isExpect && Visibilities.isPrivate(descriptor.visibility)) { if (descriptor.isExpect && DescriptorVisibilities.isPrivate(descriptor.visibility)) {
trace.report(EXPECTED_PRIVATE_DECLARATION.on(declaration.modifierList?.getModifier(KtTokens.PRIVATE_KEYWORD) ?: declaration)) trace.report(EXPECTED_PRIVATE_DECLARATION.on(declaration.modifierList?.getModifier(KtTokens.PRIVATE_KEYWORD) ?: declaration))
} }
} }
@@ -884,15 +884,15 @@ class DeclarationsChecker(
} }
} else { } else {
if (propertyDescriptor.isOverridable if (propertyDescriptor.isOverridable
&& accessorDescriptor.visibility == Visibilities.PRIVATE && accessorDescriptor.visibility == DescriptorVisibilities.PRIVATE
&& propertyDescriptor.visibility != Visibilities.PRIVATE) { && propertyDescriptor.visibility != DescriptorVisibilities.PRIVATE) {
if (propertyDescriptor.modality == Modality.ABSTRACT) { if (propertyDescriptor.modality == Modality.ABSTRACT) {
reportVisibilityModifierDiagnostics(tokens.values, Errors.PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY) reportVisibilityModifierDiagnostics(tokens.values, Errors.PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY)
} else { } else {
reportVisibilityModifierDiagnostics(tokens.values, Errors.PRIVATE_SETTER_FOR_OPEN_PROPERTY) reportVisibilityModifierDiagnostics(tokens.values, Errors.PRIVATE_SETTER_FOR_OPEN_PROPERTY)
} }
} else { } else {
val compare = Visibilities.compare(accessorDescriptor.visibility, propertyDescriptor.visibility) val compare = DescriptorVisibilities.compare(accessorDescriptor.visibility, propertyDescriptor.visibility)
if (compare == null || compare > 0) { if (compare == null || compare > 0) {
reportVisibilityModifierDiagnostics(tokens.values, Errors.SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY) reportVisibilityModifierDiagnostics(tokens.values, Errors.SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY)
} }
@@ -78,7 +78,7 @@ class DelegationResolver<T : CallableMemberDescriptor> private constructor(
.setOwner(ownerDescriptor) .setOwner(ownerDescriptor)
.setDispatchReceiverParameter(ownerDescriptor.thisAsReceiverParameter) .setDispatchReceiverParameter(ownerDescriptor.thisAsReceiverParameter)
.setModality(newModality) .setModality(newModality)
.setVisibility(Visibilities.INHERITED) .setVisibility(DescriptorVisibilities.INHERITED)
.setKind(DELEGATION) .setKind(DELEGATION)
.setCopyOverrides(false) .setCopyOverrides(false)
.build() as T .build() as T
@@ -263,29 +263,29 @@ public class DescriptorResolver {
} }
} }
public static Visibility getDefaultVisibility(KtModifierListOwner modifierListOwner, DeclarationDescriptor containingDescriptor) { public static DescriptorVisibility getDefaultVisibility(KtModifierListOwner modifierListOwner, DeclarationDescriptor containingDescriptor) {
Visibility defaultVisibility; DescriptorVisibility defaultVisibility;
if (containingDescriptor instanceof ClassDescriptor) { if (containingDescriptor instanceof ClassDescriptor) {
KtModifierList modifierList = modifierListOwner.getModifierList(); KtModifierList modifierList = modifierListOwner.getModifierList();
defaultVisibility = modifierList != null && modifierList.hasModifier(OVERRIDE_KEYWORD) defaultVisibility = modifierList != null && modifierList.hasModifier(OVERRIDE_KEYWORD)
? Visibilities.INHERITED ? DescriptorVisibilities.INHERITED
: Visibilities.DEFAULT_VISIBILITY; : DescriptorVisibilities.DEFAULT_VISIBILITY;
} }
else if (containingDescriptor instanceof FunctionDescriptor || containingDescriptor instanceof PropertyDescriptor) { else if (containingDescriptor instanceof FunctionDescriptor || containingDescriptor instanceof PropertyDescriptor) {
defaultVisibility = Visibilities.LOCAL; defaultVisibility = DescriptorVisibilities.LOCAL;
} }
else { else {
defaultVisibility = Visibilities.DEFAULT_VISIBILITY; defaultVisibility = DescriptorVisibilities.DEFAULT_VISIBILITY;
} }
return defaultVisibility; return defaultVisibility;
} }
public static Modality getDefaultModality(DeclarationDescriptor containingDescriptor, Visibility visibility, boolean isBodyPresent) { public static Modality getDefaultModality(DeclarationDescriptor containingDescriptor, DescriptorVisibility visibility, boolean isBodyPresent) {
Modality defaultModality; Modality defaultModality;
if (containingDescriptor instanceof ClassDescriptor) { if (containingDescriptor instanceof ClassDescriptor) {
boolean isTrait = ((ClassDescriptor) containingDescriptor).getKind() == ClassKind.INTERFACE; boolean isTrait = ((ClassDescriptor) containingDescriptor).getKind() == ClassKind.INTERFACE;
boolean isDefinitelyAbstract = isTrait && !isBodyPresent; boolean isDefinitelyAbstract = isTrait && !isBodyPresent;
Modality basicModality = isTrait && !Visibilities.isPrivate(visibility) ? Modality.OPEN : Modality.FINAL; Modality basicModality = isTrait && !DescriptorVisibilities.isPrivate(visibility) ? Modality.OPEN : Modality.FINAL;
defaultModality = isDefinitelyAbstract ? Modality.ABSTRACT : basicModality; defaultModality = isDefinitelyAbstract ? Modality.ABSTRACT : basicModality;
} }
else { else {
@@ -720,7 +720,7 @@ public class DescriptorResolver {
} }
KtModifierList modifierList = typeAlias.getModifierList(); KtModifierList modifierList = typeAlias.getModifierList();
Visibility visibility = resolveVisibilityFromModifiers(typeAlias, getDefaultVisibility(typeAlias, containingDeclaration)); DescriptorVisibility visibility = resolveVisibilityFromModifiers(typeAlias, getDefaultVisibility(typeAlias, containingDeclaration));
Annotations allAnnotations = annotationResolver.resolveAnnotationsWithArguments(scope, modifierList, trace); Annotations allAnnotations = annotationResolver.resolveAnnotationsWithArguments(scope, modifierList, trace);
Name name = KtPsiUtil.safeName(typeAlias.getName()); Name name = KtPsiUtil.safeName(typeAlias.getName());
@@ -874,7 +874,7 @@ public class DescriptorResolver {
KtModifierList modifierList = variableDeclaration.getModifierList(); KtModifierList modifierList = variableDeclaration.getModifierList();
boolean isVar = variableDeclaration.isVar(); boolean isVar = variableDeclaration.isVar();
Visibility visibility = resolveVisibilityFromModifiers(variableDeclaration, getDefaultVisibility(variableDeclaration, container)); DescriptorVisibility visibility = resolveVisibilityFromModifiers(variableDeclaration, getDefaultVisibility(variableDeclaration, container));
Modality modality = container instanceof ClassDescriptor Modality modality = container instanceof ClassDescriptor
? resolveMemberModalityFromModifiers(variableDeclaration, ? resolveMemberModalityFromModifiers(variableDeclaration,
getDefaultModality(container, visibility, propertyInfo.getHasBody()), getDefaultModality(container, visibility, propertyInfo.getHasBody()),
@@ -1032,7 +1032,7 @@ public class DescriptorResolver {
return type; return type;
} }
if (!Visibilities.isPrivate(descriptor.getVisibility())) { if (!DescriptorVisibilities.isPrivate(descriptor.getVisibility())) {
if (type.getConstructor().getSupertypes().size() == 1) { if (type.getConstructor().getSupertypes().size() == 1) {
return type.getConstructor().getSupertypes().iterator().next(); return type.getConstructor().getSupertypes().iterator().next();
} }
@@ -50,7 +50,7 @@ class ExposedVisibilityChecker(private val trace: BindingTrace? = null) {
fun checkDeclarationWithVisibility( fun checkDeclarationWithVisibility(
modifierListOwner: KtModifierListOwner, modifierListOwner: KtModifierListOwner,
descriptor: DeclarationDescriptorWithVisibility, descriptor: DeclarationDescriptorWithVisibility,
visibility: Visibility visibility: DescriptorVisibility
): Boolean { ): Boolean {
return when { return when {
modifierListOwner is KtFunction && modifierListOwner is KtFunction &&
@@ -78,7 +78,7 @@ class ExposedVisibilityChecker(private val trace: BindingTrace? = null) {
function: KtFunction, function: KtFunction,
functionDescriptor: FunctionDescriptor, functionDescriptor: FunctionDescriptor,
// for checking situation with modified basic visibility // for checking situation with modified basic visibility
visibility: Visibility = functionDescriptor.visibility visibility: DescriptorVisibility = functionDescriptor.visibility
): Boolean { ): Boolean {
val functionVisibility = functionDescriptor.effectiveVisibility(visibility) val functionVisibility = functionDescriptor.effectiveVisibility(visibility)
var result = true var result = true
@@ -116,7 +116,7 @@ class ExposedVisibilityChecker(private val trace: BindingTrace? = null) {
property: KtProperty, property: KtProperty,
propertyDescriptor: PropertyDescriptor, propertyDescriptor: PropertyDescriptor,
// for checking situation with modified basic visibility // for checking situation with modified basic visibility
visibility: Visibility = propertyDescriptor.visibility visibility: DescriptorVisibility = propertyDescriptor.visibility
): Boolean { ): Boolean {
val propertyVisibility = propertyDescriptor.effectiveVisibility(visibility) val propertyVisibility = propertyDescriptor.effectiveVisibility(visibility)
val restricting = propertyDescriptor.type.leastPermissiveDescriptor(propertyVisibility) val restricting = propertyDescriptor.type.leastPermissiveDescriptor(propertyVisibility)
@@ -83,7 +83,7 @@ object FunctionsFromAny {
functionFromAny.valueParameters.map { it.copy(functionDescriptor, it.name, it.index) }, functionFromAny.valueParameters.map { it.copy(functionDescriptor, it.name, it.index) },
functionFromAny.returnType, functionFromAny.returnType,
Modality.OPEN, Modality.OPEN,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
return functionDescriptor return functionDescriptor
@@ -98,4 +98,4 @@ object FunctionsFromAny {
return declaredFunctions.none(checkParameters) && return declaredFunctions.none(checkParameters) &&
fromSupertypes.none { checkParameters(it) && it.modality == Modality.FINAL } fromSupertypes.none { checkParameters(it) && it.modality == Modality.FINAL }
} }
} }
@@ -75,7 +75,7 @@ object InlineClassDescriptorResolver {
createValueParametersForSpecializedEquals(functionDescriptor, inlinedValue), createValueParametersForSpecializedEquals(functionDescriptor, inlinedValue),
owner.builtIns.booleanType, owner.builtIns.booleanType,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
return functionDescriptor return functionDescriptor
@@ -102,7 +102,7 @@ object InlineClassDescriptorResolver {
if (isBoxMethod) listOf(createValueParameterForBoxing(functionDescriptor, inlinedValue)) else emptyList(), if (isBoxMethod) listOf(createValueParameterForBoxing(functionDescriptor, inlinedValue)) else emptyList(),
if (isBoxMethod) owner.defaultType else inlinedValue.returnType, if (isBoxMethod) owner.defaultType else inlinedValue.returnType,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
return functionDescriptor return functionDescriptor
@@ -141,4 +141,4 @@ object InlineClassDescriptorResolver {
false, false, false, null, SourceElement.NO_SOURCE false, false, false, null, SourceElement.NO_SOURCE
) )
} }
} }
@@ -167,7 +167,7 @@ class LocalVariableResolver(
containingDeclaration, containingDeclaration,
annotationResolver.resolveAnnotationsWithArguments(scope, variable.modifierList, trace), annotationResolver.resolveAnnotationsWithArguments(scope, variable.modifierList, trace),
Modality.FINAL, Modality.FINAL,
Visibilities.INTERNAL, DescriptorVisibilities.INTERNAL,
variable.isVar, variable.isVar,
KtPsiUtil.safeName(variable.name), KtPsiUtil.safeName(variable.name),
CallableMemberDescriptor.Kind.DECLARATION, CallableMemberDescriptor.Kind.DECLARATION,
@@ -207,7 +207,7 @@ class LocalVariableResolver(
private fun initializeWithDefaultGetterSetter(propertyDescriptor: PropertyDescriptorImpl) { private fun initializeWithDefaultGetterSetter(propertyDescriptor: PropertyDescriptorImpl) {
var getter = propertyDescriptor.getter var getter = propertyDescriptor.getter
if (getter == null && !Visibilities.isPrivate(propertyDescriptor.visibility)) { if (getter == null && !DescriptorVisibilities.isPrivate(propertyDescriptor.visibility)) {
getter = DescriptorFactory.createDefaultGetter(propertyDescriptor, Annotations.EMPTY) getter = DescriptorFactory.createDefaultGetter(propertyDescriptor, Annotations.EMPTY)
getter.initialize(propertyDescriptor.type) getter.initialize(propertyDescriptor.type)
} }
@@ -32,7 +32,7 @@ class MissingSupertypesResolver(
* Type parameters are skipped here in favor to explicit checks for bounds, local declarations are ignored for optimization * Type parameters are skipped here in favor to explicit checks for bounds, local declarations are ignored for optimization
*/ */
if (supertypeDeclaration !is ClassDescriptor || supertypeDeclaration.isExpect) continue if (supertypeDeclaration !is ClassDescriptor || supertypeDeclaration.isExpect) continue
if (supertypeDeclaration.visibility == Visibilities.LOCAL) continue if (supertypeDeclaration.visibility == DescriptorVisibilities.LOCAL) continue
val superTypeClassId = supertypeDeclaration.classId ?: continue val superTypeClassId = supertypeDeclaration.classId ?: continue
val dependency = moduleDescriptor.findClassAcrossModuleDependencies(superTypeClassId) val dependency = moduleDescriptor.findClassAcrossModuleDependencies(superTypeClassId)
@@ -134,19 +134,19 @@ public class ModifiersChecker {
} }
@NotNull @NotNull
public static Visibility resolveVisibilityFromModifiers( public static DescriptorVisibility resolveVisibilityFromModifiers(
@NotNull KtModifierListOwner modifierListOwner, @NotNull KtModifierListOwner modifierListOwner,
@NotNull Visibility defaultVisibility @NotNull DescriptorVisibility defaultVisibility
) { ) {
return resolveVisibilityFromModifiers(modifierListOwner.getModifierList(), defaultVisibility); return resolveVisibilityFromModifiers(modifierListOwner.getModifierList(), defaultVisibility);
} }
public static Visibility resolveVisibilityFromModifiers(@Nullable KtModifierList modifierList, @NotNull Visibility defaultVisibility) { public static DescriptorVisibility resolveVisibilityFromModifiers(@Nullable KtModifierList modifierList, @NotNull DescriptorVisibility defaultVisibility) {
if (modifierList == null) return defaultVisibility; if (modifierList == null) return defaultVisibility;
if (modifierList.hasModifier(PRIVATE_KEYWORD)) return Visibilities.PRIVATE; if (modifierList.hasModifier(PRIVATE_KEYWORD)) return DescriptorVisibilities.PRIVATE;
if (modifierList.hasModifier(PUBLIC_KEYWORD)) return Visibilities.PUBLIC; if (modifierList.hasModifier(PUBLIC_KEYWORD)) return DescriptorVisibilities.PUBLIC;
if (modifierList.hasModifier(PROTECTED_KEYWORD)) return Visibilities.PROTECTED; if (modifierList.hasModifier(PROTECTED_KEYWORD)) return DescriptorVisibilities.PROTECTED;
if (modifierList.hasModifier(INTERNAL_KEYWORD)) return Visibilities.INTERNAL; if (modifierList.hasModifier(INTERNAL_KEYWORD)) return DescriptorVisibilities.INTERNAL;
return defaultVisibility; return defaultVisibility;
} }
@@ -232,7 +232,7 @@ class OverloadResolver(
private fun DeclarationDescriptor.isPrivate() = private fun DeclarationDescriptor.isPrivate() =
this is DeclarationDescriptorWithVisibility && this is DeclarationDescriptorWithVisibility &&
Visibilities.isPrivate(this.visibility) DescriptorVisibilities.isPrivate(this.visibility)
private fun checkOverloadsInClass(members: Collection<CallableMemberDescriptor>) { private fun checkOverloadsInClass(members: Collection<CallableMemberDescriptor>) {
if (members.size == 1) return if (members.size == 1) return
@@ -504,7 +504,7 @@ class OverrideResolver(
private fun checkVisibilityForMember(declaration: KtDeclaration, memberDescriptor: CallableMemberDescriptor) { private fun checkVisibilityForMember(declaration: KtDeclaration, memberDescriptor: CallableMemberDescriptor) {
val visibility = memberDescriptor.visibility val visibility = memberDescriptor.visibility
for (descriptor in memberDescriptor.overriddenDescriptors) { for (descriptor in memberDescriptor.overriddenDescriptors) {
val compare = Visibilities.compare(visibility, descriptor.visibility) val compare = DescriptorVisibilities.compare(visibility, descriptor.visibility)
if (compare == null) { if (compare == null) {
trace.report( trace.report(
CANNOT_CHANGE_ACCESS_PRIVILEGE.on( CANNOT_CHANGE_ACCESS_PRIVILEGE.on(
@@ -601,7 +601,7 @@ class OverrideResolver(
val relevantDirectlyOverridden = val relevantDirectlyOverridden =
getRelevantDirectlyOverridden(overriddenDeclarationsByDirectParent, allFilteredOverriddenDeclarations) getRelevantDirectlyOverridden(overriddenDeclarationsByDirectParent, allFilteredOverriddenDeclarations)
if (descriptor.visibility === Visibilities.INVISIBLE_FAKE) { if (descriptor.visibility === DescriptorVisibilities.INVISIBLE_FAKE) {
checkInvisibleFakeOverride(descriptor, relevantDirectlyOverridden, reportingStrategy) checkInvisibleFakeOverride(descriptor, relevantDirectlyOverridden, reportingStrategy)
return return
} }
@@ -811,10 +811,10 @@ internal fun isVisible(
val visibility = descriptor.visibility val visibility = descriptor.visibility
if (position == QualifierPosition.IMPORT) { if (position == QualifierPosition.IMPORT) {
if (Visibilities.isPrivate(visibility)) return Visibilities.inSameFile(descriptor, shouldBeVisibleFrom) if (DescriptorVisibilities.isPrivate(visibility)) return DescriptorVisibilities.inSameFile(descriptor, shouldBeVisibleFrom)
if (!visibility.mustCheckInImports()) return true if (!visibility.mustCheckInImports()) return true
} }
return Visibilities.isVisibleIgnoringReceiver(descriptor, shouldBeVisibleFrom) return DescriptorVisibilities.isVisibleIgnoringReceiver(descriptor, shouldBeVisibleFrom)
} }
internal enum class QualifierPosition { internal enum class QualifierPosition {
@@ -88,7 +88,7 @@ class ShadowedExtensionChecker(val typeSpecificityComparator: TypeSpecificityCom
} }
private fun DeclarationDescriptorWithVisibility.isPublic() = private fun DeclarationDescriptorWithVisibility.isPublic() =
visibility.normalize() == Visibilities.PUBLIC visibility.normalize() == DescriptorVisibilities.PUBLIC
private fun isExtensionFunctionShadowedByMemberFunction(extension: FunctionDescriptor, member: FunctionDescriptor): Boolean { private fun isExtensionFunctionShadowedByMemberFunction(extension: FunctionDescriptor, member: FunctionDescriptor): Boolean {
// Permissive check: // Permissive check:
@@ -324,7 +324,7 @@ class TypeResolver(
type: KotlinType, type: KotlinType,
source: SourceElement source: SourceElement
) : VariableDescriptorImpl(containingDeclaration, annotations, name, type, source) { ) : VariableDescriptorImpl(containingDeclaration, annotations, name, type, source) {
override fun getVisibility() = Visibilities.LOCAL override fun getVisibility() = DescriptorVisibilities.LOCAL
override fun substitute(substitutor: TypeSubstitutor): VariableDescriptor? { override fun substitute(substitutor: TypeSubstitutor): VariableDescriptor? {
throw UnsupportedOperationException("Should not be called for descriptor of type ${this::class.java}") throw UnsupportedOperationException("Should not be called for descriptor of type ${this::class.java}")
@@ -87,13 +87,13 @@ class VarianceCheckerCore(
} }
fun checkMember(member: KtCallableDeclaration, descriptor: CallableMemberDescriptor) = fun checkMember(member: KtCallableDeclaration, descriptor: CallableMemberDescriptor) =
Visibilities.isPrivate(descriptor.visibility) || checkCallableDeclaration(context, member, descriptor) DescriptorVisibilities.isPrivate(descriptor.visibility) || checkCallableDeclaration(context, member, descriptor)
private fun TypeParameterDescriptor.varianceWithManual() = private fun TypeParameterDescriptor.varianceWithManual() =
if (manualVariance != null && this.original == manualVariance.descriptor) manualVariance.variance else variance if (manualVariance != null && this.original == manualVariance.descriptor) manualVariance.variance else variance
fun recordPrivateToThisIfNeeded(descriptor: CallableMemberDescriptor) { fun recordPrivateToThisIfNeeded(descriptor: CallableMemberDescriptor) {
if (isIrrelevant(descriptor) || descriptor.visibility != Visibilities.PRIVATE) return if (isIrrelevant(descriptor) || descriptor.visibility != DescriptorVisibilities.PRIVATE) return
val psiElement = descriptor.source.getPsi() as? KtCallableDeclaration ?: return val psiElement = descriptor.source.getPsi() as? KtCallableDeclaration ?: return
@@ -185,11 +185,11 @@ class VarianceCheckerCore(
private fun recordPrivateToThis(descriptor: CallableMemberDescriptor) { private fun recordPrivateToThis(descriptor: CallableMemberDescriptor) {
when (descriptor) { when (descriptor) {
is FunctionDescriptorImpl -> descriptor.visibility = Visibilities.PRIVATE_TO_THIS is FunctionDescriptorImpl -> descriptor.visibility = DescriptorVisibilities.PRIVATE_TO_THIS
is PropertyDescriptorImpl -> { is PropertyDescriptorImpl -> {
descriptor.visibility = Visibilities.PRIVATE_TO_THIS descriptor.visibility = DescriptorVisibilities.PRIVATE_TO_THIS
for (accessor in descriptor.accessors) { for (accessor in descriptor.accessors) {
(accessor as PropertyAccessorDescriptorImpl).visibility = Visibilities.PRIVATE_TO_THIS (accessor as PropertyAccessorDescriptorImpl).visibility = DescriptorVisibilities.PRIVATE_TO_THIS
} }
} }
else -> throw IllegalStateException("Unexpected descriptor type: ${descriptor::class.java.name}") else -> throw IllegalStateException("Unexpected descriptor type: ${descriptor::class.java.name}")
@@ -177,14 +177,14 @@ class CandidateResolver(
} }
private fun CallCandidateResolutionContext<*>.checkVisibilityWithoutReceiver() = checkAndReport { private fun CallCandidateResolutionContext<*>.checkVisibilityWithoutReceiver() = checkAndReport {
checkVisibilityWithDispatchReceiver(Visibilities.ALWAYS_SUITABLE_RECEIVER, null) checkVisibilityWithDispatchReceiver(DescriptorVisibilities.ALWAYS_SUITABLE_RECEIVER, null)
} }
private fun CallCandidateResolutionContext<*>.checkVisibilityWithDispatchReceiver( private fun CallCandidateResolutionContext<*>.checkVisibilityWithDispatchReceiver(
receiverArgument: ReceiverValue?, receiverArgument: ReceiverValue?,
smartCastType: KotlinType? smartCastType: KotlinType?
): ResolutionStatus { ): ResolutionStatus {
val invisibleMember = Visibilities.findInvisibleMember( val invisibleMember = DescriptorVisibilities.findInvisibleMember(
getReceiverValueWithSmartCast(receiverArgument, smartCastType), candidateDescriptor, scope.ownerDescriptor getReceiverValueWithSmartCast(receiverArgument, smartCastType), candidateDescriptor, scope.ownerDescriptor
) )
return if (invisibleMember != null) { return if (invisibleMember != null) {
@@ -204,7 +204,7 @@ class CandidateResolver(
private fun CallCandidateResolutionContext<*>.isCandidateVisible( private fun CallCandidateResolutionContext<*>.isCandidateVisible(
receiverArgument: ReceiverValue?, receiverArgument: ReceiverValue?,
smartCastType: KotlinType? smartCastType: KotlinType?
) = Visibilities.findInvisibleMember( ) = DescriptorVisibilities.findInvisibleMember(
getReceiverValueWithSmartCast(receiverArgument, smartCastType), getReceiverValueWithSmartCast(receiverArgument, smartCastType),
candidateDescriptor, scope.ownerDescriptor candidateDescriptor, scope.ownerDescriptor
) == null ) == null
@@ -474,7 +474,7 @@ class CandidateResolver(
if (!context.isDebuggerContext if (!context.isDebuggerContext
&& candidateCall.dispatchReceiver != null && candidateCall.dispatchReceiver != null
// Do not report error if it's already reported when checked without receiver // Do not report error if it's already reported when checked without receiver
&& context.isCandidateVisible(receiverArgument = Visibilities.ALWAYS_SUITABLE_RECEIVER, smartCastType = null)) { && context.isCandidateVisible(receiverArgument = DescriptorVisibilities.ALWAYS_SUITABLE_RECEIVER, smartCastType = null)) {
resultStatus = resultStatus.combine( resultStatus = resultStatus.combine(
context.checkVisibilityWithDispatchReceiver( context.checkVisibilityWithDispatchReceiver(
candidateCall.dispatchReceiver, candidateCall.smartCastDispatchReceiverType candidateCall.dispatchReceiver, candidateCall.smartCastDispatchReceiverType
@@ -259,7 +259,7 @@ internal class InlineChecker(private val descriptor: FunctionDescriptor) : CallC
val isInlineFunPublicOrPublishedApi = inlineFunEffectiveVisibility.publicApi val isInlineFunPublicOrPublishedApi = inlineFunEffectiveVisibility.publicApi
if (isInlineFunPublicOrPublishedApi && if (isInlineFunPublicOrPublishedApi &&
!isCalledFunPublicOrPublishedApi && !isCalledFunPublicOrPublishedApi &&
calledDescriptor.visibility !== Visibilities.LOCAL) { calledDescriptor.visibility !== DescriptorVisibilities.LOCAL) {
context.trace.report(NON_PUBLIC_CALL_FROM_PUBLIC_INLINE.on(expression, calledDescriptor, descriptor)) context.trace.report(NON_PUBLIC_CALL_FROM_PUBLIC_INLINE.on(expression, calledDescriptor, descriptor))
} else { } else {
checkPrivateClassMemberAccess(calledDescriptor, expression, context) checkPrivateClassMemberAccess(calledDescriptor, expression, context)
@@ -267,8 +267,8 @@ internal class InlineChecker(private val descriptor: FunctionDescriptor) : CallC
if (calledDescriptor !is ConstructorDescriptor && if (calledDescriptor !is ConstructorDescriptor &&
isInlineFunPublicOrPublishedApi && isInlineFunPublicOrPublishedApi &&
inlineFunEffectiveVisibility.toVisibility() !== Visibilities.PROTECTED && inlineFunEffectiveVisibility.toVisibility() !== DescriptorVisibilities.PROTECTED &&
calledFunEffectiveVisibility.toVisibility() === Visibilities.PROTECTED) { calledFunEffectiveVisibility.toVisibility() === DescriptorVisibilities.PROTECTED) {
if (prohibitProtectedCallFromInline) { if (prohibitProtectedCallFromInline) {
context.trace.report(PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR.on(expression, calledDescriptor)) context.trace.report(PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR.on(expression, calledDescriptor))
} else { } else {
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.resolve.calls.checkers
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.psi.KtConstructorCalleeExpression import org.jetbrains.kotlin.psi.KtConstructorCalleeExpression
@@ -35,9 +35,9 @@ object ProtectedConstructorCallChecker : CallChecker {
val actualConstructor = (descriptor as? TypeAliasConstructorDescriptor)?.underlyingConstructorDescriptor ?: descriptor val actualConstructor = (descriptor as? TypeAliasConstructorDescriptor)?.underlyingConstructorDescriptor ?: descriptor
if (actualConstructor.visibility.normalize() != Visibilities.PROTECTED) return if (actualConstructor.visibility.normalize() != DescriptorVisibilities.PROTECTED) return
// Error already reported // Error already reported
if (!Visibilities.isVisibleWithAnyReceiver(descriptor, scopeOwner)) return if (!DescriptorVisibilities.isVisibleWithAnyReceiver(descriptor, scopeOwner)) return
val calleeExpression = resolvedCall.call.calleeExpression val calleeExpression = resolvedCall.call.calleeExpression
@@ -55,7 +55,7 @@ object ProtectedConstructorCallChecker : CallChecker {
// And without ProtectedConstructorCallChecker such calls would be allowed only because they are performed within subclass // And without ProtectedConstructorCallChecker such calls would be allowed only because they are performed within subclass
// of constructor owner // of constructor owner
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
if (Visibilities.findInvisibleMember(Visibilities.FALSE_IF_PROTECTED, descriptor, scopeOwner) == actualConstructor.original) { if (DescriptorVisibilities.findInvisibleMember(DescriptorVisibilities.FALSE_IF_PROTECTED, descriptor, scopeOwner) == actualConstructor.original) {
context.trace.report(Errors.PROTECTED_CONSTRUCTOR_NOT_IN_SUPER_CALL.on(reportOn, descriptor)) context.trace.report(Errors.PROTECTED_CONSTRUCTOR_NOT_IN_SUPER_CALL.on(reportOn, descriptor))
} }
} }
@@ -130,7 +130,7 @@ private fun isAccessedBeforeAllClosureWriters(
private fun DeclarationDescriptorWithVisibility.isInvisibleFromOtherModules(): Boolean { private fun DeclarationDescriptorWithVisibility.isInvisibleFromOtherModules(): Boolean {
if (Visibilities.INVISIBLE_FROM_OTHER_MODULES.contains(visibility)) return true if (DescriptorVisibilities.INVISIBLE_FROM_OTHER_MODULES.contains(visibility)) return true
val containingDeclaration = containingDeclaration val containingDeclaration = containingDeclaration
return containingDeclaration is DeclarationDescriptorWithVisibility && containingDeclaration.isInvisibleFromOtherModules() return containingDeclaration is DeclarationDescriptorWithVisibility && containingDeclaration.isInvisibleFromOtherModules()
@@ -89,7 +89,7 @@ class DynamicCallableDescriptors(private val storageManager: StorageManager, bui
owner, owner,
Annotations.EMPTY, Annotations.EMPTY,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC, DescriptorVisibilities.PUBLIC,
true, true,
name, name,
CallableMemberDescriptor.Kind.DECLARATION, CallableMemberDescriptor.Kind.DECLARATION,
@@ -132,7 +132,7 @@ class DynamicCallableDescriptors(private val storageManager: StorageManager, bui
createValueParameters(functionDescriptor, call), createValueParameters(functionDescriptor, call),
dynamicType, dynamicType,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
functionDescriptor.setHasSynthesizedParameterNames(true) functionDescriptor.setHasSynthesizedParameterNames(true)
functionDescriptor.isOperator = isConventionCall(call) functionDescriptor.isOperator = isConventionCall(call)
@@ -105,8 +105,8 @@ class ExplicitApiDeclarationChecker : DeclarationChecker {
val callableMemberDescriptor = descriptor as? CallableMemberDescriptor val callableMemberDescriptor = descriptor as? CallableMemberDescriptor
val visibility = callableMemberDescriptor?.effectiveVisibility()?.toVisibility() val visibility = callableMemberDescriptor?.effectiveVisibility()?.toVisibility()
return (checkForPublicApi && visibility?.isPublicAPI == true) || (checkForInternal && visibility == Visibilities.INTERNAL) || return (checkForPublicApi && visibility?.isPublicAPI == true) || (checkForInternal && visibility == DescriptorVisibilities.INTERNAL) ||
(checkForPrivate && visibility == Visibilities.PRIVATE) (checkForPrivate && visibility == DescriptorVisibilities.PRIVATE)
} }
fun returnTypeCheckIsApplicable(element: KtCallableDeclaration): Boolean { fun returnTypeCheckIsApplicable(element: KtCallableDeclaration): Boolean {
@@ -120,4 +120,4 @@ class ExplicitApiDeclarationChecker : DeclarationChecker {
return true return true
} }
} }
} }
@@ -47,7 +47,7 @@ object InlineClassDeclarationChecker : DeclarationChecker {
} }
val primaryConstructorVisibility = descriptor.unsubstitutedPrimaryConstructor?.visibility val primaryConstructorVisibility = descriptor.unsubstitutedPrimaryConstructor?.visibility
if (primaryConstructorVisibility != null && primaryConstructorVisibility != Visibilities.PUBLIC) { if (primaryConstructorVisibility != null && primaryConstructorVisibility != DescriptorVisibilities.PUBLIC) {
trace.report(Errors.NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS.on(primaryConstructor.visibilityModifier() ?: inlineKeyword)) trace.report(Errors.NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS.on(primaryConstructor.visibilityModifier() ?: inlineKeyword))
return return
} }
@@ -173,4 +173,4 @@ class ReservedMembersAndConstructsForInlineClass : DeclarationChecker {
} }
} }
} }
} }
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
object KClassWithIncorrectTypeArgumentChecker : DeclarationChecker { object KClassWithIncorrectTypeArgumentChecker : DeclarationChecker {
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
if (descriptor !is CallableMemberDescriptor || descriptor.visibility == Visibilities.LOCAL) return if (descriptor !is CallableMemberDescriptor || descriptor.visibility == DescriptorVisibilities.LOCAL) return
if (declaration !is KtCallableDeclaration || declaration.typeReference != null) return if (declaration !is KtCallableDeclaration || declaration.typeReference != null) return
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
@@ -32,7 +32,7 @@ object PublishedApiUsageChecker {
descriptor: DeclarationDescriptor, descriptor: DeclarationDescriptor,
trace: BindingTrace trace: BindingTrace
) { ) {
if (descriptor !is DeclarationDescriptorWithVisibility || descriptor.visibility == Visibilities.INTERNAL) return if (descriptor !is DeclarationDescriptorWithVisibility || descriptor.visibility == DescriptorVisibilities.INTERNAL) return
// Don't report the diagnostic twice // Don't report the diagnostic twice
if (descriptor is PropertyAccessorDescriptor) return if (descriptor is PropertyAccessorDescriptor) return
@@ -45,7 +45,7 @@ class ResultClassInReturnTypeChecker : DeclarationChecker {
} }
val visibility = (declarationDescriptor as DeclarationDescriptorWithVisibility).visibility val visibility = (declarationDescriptor as DeclarationDescriptorWithVisibility).visibility
return !Visibilities.isPrivate(visibility) && visibility != Visibilities.LOCAL return !DescriptorVisibilities.isPrivate(visibility) && visibility != DescriptorVisibilities.LOCAL
} }
return true return true
@@ -51,8 +51,8 @@ class FunctionImportedFromObject(
override fun getOriginal() = _original as FunctionDescriptor override fun getOriginal() = _original as FunctionDescriptor
override fun copy( override fun copy(
newOwner: DeclarationDescriptor?, modality: Modality?, visibility: Visibility?, newOwner: DeclarationDescriptor?, modality: Modality?, visibility: DescriptorVisibility?,
kind: CallableMemberDescriptor.Kind?, copyOverrides: Boolean kind: CallableMemberDescriptor.Kind?, copyOverrides: Boolean
): FunctionDescriptor { ): FunctionDescriptor {
throw UnsupportedOperationException("copy() should not be called on ${this::class.java.simpleName}, was called for $this") throw UnsupportedOperationException("copy() should not be called on ${this::class.java.simpleName}, was called for $this")
} }
@@ -71,8 +71,8 @@ class PropertyImportedFromObject(
override fun getOriginal() = _original as PropertyDescriptor override fun getOriginal() = _original as PropertyDescriptor
override fun copy( override fun copy(
newOwner: DeclarationDescriptor?, modality: Modality?, visibility: Visibility?, newOwner: DeclarationDescriptor?, modality: Modality?, visibility: DescriptorVisibility?,
kind: CallableMemberDescriptor.Kind?, copyOverrides: Boolean kind: CallableMemberDescriptor.Kind?, copyOverrides: Boolean
): FunctionDescriptor { ): FunctionDescriptor {
throw UnsupportedOperationException("copy() should not be called on ${this::class.java.simpleName}, was called for $this") throw UnsupportedOperationException("copy() should not be called on ${this::class.java.simpleName}, was called for $this")
} }
@@ -142,7 +142,7 @@ class InlineAnalyzerExtension(
return return
} }
if (Visibilities.isPrivate(callableDescriptor.visibility)) { if (DescriptorVisibilities.isPrivate(callableDescriptor.visibility)) {
return return
} }
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.resolve.inline
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.MemberDescriptor import org.jetbrains.kotlin.descriptors.MemberDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils
@@ -31,7 +31,7 @@ fun MemberDescriptor.isInlineOnly(): Boolean =
(hasInlineOnlyAnnotation() || DescriptorUtils.getDirectMember(this).hasInlineOnlyAnnotation()) (hasInlineOnlyAnnotation() || DescriptorUtils.getDirectMember(this).hasInlineOnlyAnnotation())
private fun MemberDescriptor.isPrivateInlineSuspend(): Boolean = private fun MemberDescriptor.isPrivateInlineSuspend(): Boolean =
this is FunctionDescriptor && isSuspend && isInline && visibility == Visibilities.PRIVATE this is FunctionDescriptor && isSuspend && isInline && visibility == DescriptorVisibilities.PRIVATE
fun MemberDescriptor.isInlineWithReified(): Boolean = fun MemberDescriptor.isInlineWithReified(): Boolean =
this is CallableMemberDescriptor && (hasReifiedParameters() || DescriptorUtils.getDirectMember(this).hasReifiedParameters()) this is CallableMemberDescriptor && (hasReifiedParameters() || DescriptorUtils.getDirectMember(this).hasReifiedParameters())
@@ -269,7 +269,7 @@ class FileScopeFactory(
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? { override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? {
if (name in excludedNames) return null if (name in excludedNames) return null
val classifier = scope.getContributedClassifier(name, location) ?: return null val classifier = scope.getContributedClassifier(name, location) ?: return null
val visible = Visibilities.isVisibleIgnoringReceiver(classifier as DeclarationDescriptorWithVisibility, fromDescriptor) val visible = DescriptorVisibilities.isVisibleIgnoringReceiver(classifier as DeclarationDescriptorWithVisibility, fromDescriptor)
return classifier.takeIf { filteringKind == if (visible) FilteringKind.VISIBLE_CLASSES else FilteringKind.INVISIBLE_CLASSES } return classifier.takeIf { filteringKind == if (visible) FilteringKind.VISIBLE_CLASSES else FilteringKind.INVISIBLE_CLASSES }
} }
@@ -240,7 +240,7 @@ class LazyImportScope(
val visibility = (descriptor as DeclarationDescriptorWithVisibility).visibility val visibility = (descriptor as DeclarationDescriptorWithVisibility).visibility
val includeVisible = filteringKind == FilteringKind.VISIBLE_CLASSES val includeVisible = filteringKind == FilteringKind.VISIBLE_CLASSES
if (!visibility.mustCheckInImports()) return includeVisible if (!visibility.mustCheckInImports()) return includeVisible
return Visibilities.isVisibleIgnoringReceiver(descriptor, components.moduleDescriptor) == includeVisible return DescriptorVisibilities.isVisibleIgnoringReceiver(descriptor, components.moduleDescriptor) == includeVisible
} }
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? { override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? {
@@ -56,8 +56,8 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import static kotlin.collections.CollectionsKt.firstOrNull; import static kotlin.collections.CollectionsKt.firstOrNull;
import static org.jetbrains.kotlin.descriptors.Visibilities.PRIVATE; import static org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PRIVATE;
import static org.jetbrains.kotlin.descriptors.Visibilities.PUBLIC; import static org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC;
import static org.jetbrains.kotlin.diagnostics.Errors.*; import static org.jetbrains.kotlin.diagnostics.Errors.*;
import static org.jetbrains.kotlin.lexer.KtTokens.INNER_KEYWORD; import static org.jetbrains.kotlin.lexer.KtTokens.INNER_KEYWORD;
import static org.jetbrains.kotlin.resolve.BindingContext.TYPE; import static org.jetbrains.kotlin.resolve.BindingContext.TYPE;
@@ -79,7 +79,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
private final LazyClassTypeConstructor typeConstructor; private final LazyClassTypeConstructor typeConstructor;
private final NotNullLazyValue<Modality> modality; private final NotNullLazyValue<Modality> modality;
private final Visibility visibility; private final DescriptorVisibility visibility;
private final ClassKind kind; private final ClassKind kind;
private final boolean isInner; private final boolean isInner;
private final boolean isData; private final boolean isData;
@@ -149,7 +149,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
} }
boolean isLocal = classOrObject != null && KtPsiUtil.isLocal(classOrObject); boolean isLocal = classOrObject != null && KtPsiUtil.isLocal(classOrObject);
this.visibility = isLocal ? Visibilities.LOCAL : resolveVisibilityFromModifiers(modifierList, Visibilities.DEFAULT_VISIBILITY); this.visibility = isLocal ? DescriptorVisibilities.LOCAL : resolveVisibilityFromModifiers(modifierList, DescriptorVisibilities.DEFAULT_VISIBILITY);
this.isInner = modifierList != null && modifierList.hasModifier(INNER_KEYWORD) && !isIllegalInner(this); this.isInner = modifierList != null && modifierList.hasModifier(INNER_KEYWORD) && !isIllegalInner(this);
this.isData = modifierList != null && modifierList.hasModifier(KtTokens.DATA_KEYWORD); this.isData = modifierList != null && modifierList.hasModifier(KtTokens.DATA_KEYWORD);
@@ -292,7 +292,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
) { ) {
{ {
initialize(null, null, Collections.emptyList(), Collections.emptyList(), initialize(null, null, Collections.emptyList(), Collections.emptyList(),
null, Modality.FINAL, Visibilities.PRIVATE); null, Modality.FINAL, DescriptorVisibilities.PRIVATE);
} }
@NotNull @NotNull
@@ -513,7 +513,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
@NotNull @NotNull
@Override @Override
public Visibility getVisibility() { public DescriptorVisibility getVisibility() {
return visibility; return visibility;
} }
@@ -38,7 +38,7 @@ class LazyTypeAliasDescriptor(
annotations: Annotations, annotations: Annotations,
name: Name, name: Name,
sourceElement: SourceElement, sourceElement: SourceElement,
visibility: Visibility visibility: DescriptorVisibility
) : AbstractTypeAliasDescriptor(containingDeclaration, annotations, name, sourceElement, visibility), ) : AbstractTypeAliasDescriptor(containingDeclaration, annotations, name, sourceElement, visibility),
TypeAliasDescriptor { TypeAliasDescriptor {
override val constructors: Collection<TypeAliasConstructorDescriptor> by storageManager.createLazyValue { override val constructors: Collection<TypeAliasConstructorDescriptor> by storageManager.createLazyValue {
@@ -122,7 +122,7 @@ class LazyTypeAliasDescriptor(
annotations: Annotations, annotations: Annotations,
name: Name, name: Name,
sourceElement: SourceElement, sourceElement: SourceElement,
visibility: Visibility visibility: DescriptorVisibility
): LazyTypeAliasDescriptor = ): LazyTypeAliasDescriptor =
LazyTypeAliasDescriptor( LazyTypeAliasDescriptor(
storageManager, trace, storageManager, trace,
@@ -230,7 +230,7 @@ public class ControlStructureTypingUtils {
valueParameters, valueParameters,
returnType, returnType,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
); );
return function; return function;
} }
@@ -628,7 +628,7 @@ class DoubleColonExpressionResolver(
createValueParametersForInvokeInFunctionType(functionDescriptor, type.arguments.dropLast(1)), createValueParametersForInvokeInFunctionType(functionDescriptor, type.arguments.dropLast(1)),
type.arguments.last().type, type.arguments.last().type,
Modality.FINAL, Modality.FINAL,
Visibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
context.trace.record(BindingContext.FUNCTION, expression, functionDescriptor) context.trace.record(BindingContext.FUNCTION, expression, functionDescriptor)
@@ -826,7 +826,7 @@ class DoubleColonExpressionResolver(
): Boolean { ): Boolean {
val receiver = receiverTypeFor(descriptor, lhs)?.let(::TransientReceiver) val receiver = receiverTypeFor(descriptor, lhs)?.let(::TransientReceiver)
val setter = descriptor.setter val setter = descriptor.setter
return descriptor.isVar && (setter == null || Visibilities.isVisible(receiver, setter, scopeOwnerDescriptor)) return descriptor.isVar && (setter == null || DescriptorVisibilities.isVisible(receiver, setter, scopeOwnerDescriptor))
} }
fun createKCallableTypeForReference( fun createKCallableTypeForReference(
@@ -239,7 +239,7 @@ public class ExpressionTypingUtils {
public static boolean isLocalFunction(@Nullable DeclarationDescriptor descriptor) { public static boolean isLocalFunction(@Nullable DeclarationDescriptor descriptor) {
if (descriptor != null && descriptor.getClass() == SimpleFunctionDescriptorImpl.class) { if (descriptor != null && descriptor.getClass() == SimpleFunctionDescriptorImpl.class) {
return ((SimpleFunctionDescriptorImpl) descriptor).getVisibility() == Visibilities.LOCAL; return ((SimpleFunctionDescriptorImpl) descriptor).getVisibility() == DescriptorVisibilities.LOCAL;
} }
return false; return false;
} }
@@ -109,8 +109,8 @@ fun getNonPrivateTraitMembersForDelegation(
): CallableMemberDescriptor? { ): CallableMemberDescriptor? {
val traitMember = findInterfaceImplementation(descriptor, returnImplNotDelegate) val traitMember = findInterfaceImplementation(descriptor, returnImplNotDelegate)
if (traitMember == null || if (traitMember == null ||
Visibilities.isPrivate(traitMember.visibility) || DescriptorVisibilities.isPrivate(traitMember.visibility) ||
traitMember.visibility == Visibilities.INVISIBLE_FAKE traitMember.visibility == DescriptorVisibilities.INVISIBLE_FAKE
) return null ) return null
return traitMember return traitMember
} }
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.backend.common package org.jetbrains.kotlin.backend.common
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
@@ -311,7 +311,7 @@ class CheckIrElementVisitor(
if (declaration is IrOverridableDeclaration<*>) { if (declaration is IrOverridableDeclaration<*>) {
for (overriddenSymbol in declaration.overriddenSymbols) { for (overriddenSymbol in declaration.overriddenSymbols) {
val overriddenDeclaration = overriddenSymbol.owner as? IrDeclarationWithVisibility ?: continue val overriddenDeclaration = overriddenSymbol.owner as? IrDeclarationWithVisibility ?: continue
if (overriddenDeclaration.visibility == Visibilities.PRIVATE) { if (overriddenDeclaration.visibility == DescriptorVisibilities.PRIVATE) {
reportError(declaration, "Overrides private declaration $overriddenDeclaration") reportError(declaration, "Overrides private declaration $overriddenDeclaration")
} }
} }
@@ -9,8 +9,8 @@ import org.jetbrains.kotlin.backend.common.CommonBackendContext
import org.jetbrains.kotlin.backend.common.deepCopyWithVariables import org.jetbrains.kotlin.backend.common.deepCopyWithVariables
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
@@ -86,7 +86,7 @@ val IrCall.isSuspend get() = (symbol.owner as? IrSimpleFunction)?.isSuspend == t
val IrFunctionReference.isSuspend get() = (symbol.owner as? IrSimpleFunction)?.isSuspend == true val IrFunctionReference.isSuspend get() = (symbol.owner as? IrSimpleFunction)?.isSuspend == true
val IrSimpleFunction.isOverridable: Boolean val IrSimpleFunction.isOverridable: Boolean
get() = visibility != Visibilities.PRIVATE && modality != Modality.FINAL && (parent as? IrClass)?.isFinalClass != true get() = visibility != DescriptorVisibilities.PRIVATE && modality != Modality.FINAL && (parent as? IrClass)?.isFinalClass != true
val IrSimpleFunction.isOverridableOrOverrides: Boolean get() = isOverridable || overriddenSymbols.isNotEmpty() val IrSimpleFunction.isOverridableOrOverrides: Boolean get() = isOverridable || overriddenSymbols.isNotEmpty()
@@ -456,7 +456,7 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
irClass.declarations irClass.declarations
.flatMap { it.toList() } .flatMap { it.toList() }
.filter { it !in overriddenFunctions } .filter { it !in overriddenFunctions }
.filter { it.visibility != Visibilities.PRIVATE } .filter { it.visibility != DescriptorVisibilities.PRIVATE }
} }
.toMutableSet() .toMutableSet()
@@ -468,7 +468,7 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
irFunction.factory.buildFun { irFunction.factory.buildFun {
origin = IrDeclarationOrigin.FAKE_OVERRIDE origin = IrDeclarationOrigin.FAKE_OVERRIDE
name = irFunction.name name = irFunction.name
visibility = Visibilities.PUBLIC visibility = DescriptorVisibilities.PUBLIC
modality = irFunction.modality modality = irFunction.modality
returnType = irFunction.returnType returnType = irFunction.returnType
isInline = irFunction.isInline isInline = irFunction.isInline
@@ -499,16 +499,16 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
@OptIn(ObsoleteDescriptorBasedAPI::class) @OptIn(ObsoleteDescriptorBasedAPI::class)
fun IrFactory.createStaticFunctionWithReceivers( fun IrFactory.createStaticFunctionWithReceivers(
irParent: IrDeclarationParent, irParent: IrDeclarationParent,
name: Name, name: Name,
oldFunction: IrFunction, oldFunction: IrFunction,
dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type, dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type,
origin: IrDeclarationOrigin = oldFunction.origin, origin: IrDeclarationOrigin = oldFunction.origin,
modality: Modality = Modality.FINAL, modality: Modality = Modality.FINAL,
visibility: Visibility = oldFunction.visibility, visibility: DescriptorVisibility = oldFunction.visibility,
isFakeOverride: Boolean = oldFunction.isFakeOverride, isFakeOverride: Boolean = oldFunction.isFakeOverride,
copyMetadata: Boolean = true, copyMetadata: Boolean = true,
typeParametersFromContext: List<IrTypeParameter> = listOf() typeParametersFromContext: List<IrTypeParameter> = listOf()
): IrSimpleFunction { ): IrSimpleFunction {
val descriptor = (oldFunction.descriptor as? DescriptorWithContainerSource)?.let { val descriptor = (oldFunction.descriptor as? DescriptorWithContainerSource)?.let {
WrappedFunctionDescriptorWithContainerSource() WrappedFunctionDescriptorWithContainerSource()

Some files were not shown because too many files have changed in this diff Show More