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.backend.common
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.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.*
@@ -311,7 +311,7 @@ class CheckIrElementVisitor(
if (declaration is IrOverridableDeclaration<*>) {
for (overriddenSymbol in declaration.overriddenSymbols) {
val overriddenDeclaration = overriddenSymbol.owner as? IrDeclarationWithVisibility ?: continue
if (overriddenDeclaration.visibility == Visibilities.PRIVATE) {
if (overriddenDeclaration.visibility == DescriptorVisibilities.PRIVATE) {
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.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.ir.IrElement
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 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()
@@ -456,7 +456,7 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
irClass.declarations
.flatMap { it.toList() }
.filter { it !in overriddenFunctions }
.filter { it.visibility != Visibilities.PRIVATE }
.filter { it.visibility != DescriptorVisibilities.PRIVATE }
}
.toMutableSet()
@@ -468,7 +468,7 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
irFunction.factory.buildFun {
origin = IrDeclarationOrigin.FAKE_OVERRIDE
name = irFunction.name
visibility = Visibilities.PUBLIC
visibility = DescriptorVisibilities.PUBLIC
modality = irFunction.modality
returnType = irFunction.returnType
isInline = irFunction.isInline
@@ -499,16 +499,16 @@ fun IrClass.addFakeOverridesViaIncorrectHeuristic(implementedMembers: List<IrSim
@OptIn(ObsoleteDescriptorBasedAPI::class)
fun IrFactory.createStaticFunctionWithReceivers(
irParent: IrDeclarationParent,
name: Name,
oldFunction: IrFunction,
dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type,
origin: IrDeclarationOrigin = oldFunction.origin,
modality: Modality = Modality.FINAL,
visibility: Visibility = oldFunction.visibility,
isFakeOverride: Boolean = oldFunction.isFakeOverride,
copyMetadata: Boolean = true,
typeParametersFromContext: List<IrTypeParameter> = listOf()
irParent: IrDeclarationParent,
name: Name,
oldFunction: IrFunction,
dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type,
origin: IrDeclarationOrigin = oldFunction.origin,
modality: Modality = Modality.FINAL,
visibility: DescriptorVisibility = oldFunction.visibility,
isFakeOverride: Boolean = oldFunction.isFakeOverride,
copyMetadata: Boolean = true,
typeParametersFromContext: List<IrTypeParameter> = listOf()
): IrSimpleFunction {
val descriptor = (oldFunction.descriptor as? DescriptorWithContainerSource)?.let {
WrappedFunctionDescriptorWithContainerSource()
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.backend.common.lower
import org.jetbrains.kotlin.backend.common.*
import org.jetbrains.kotlin.backend.common.ir.*
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.builders.*
@@ -449,7 +449,7 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
endOffset = irFunction.endOffset
origin = DECLARATION_ORIGIN_COROUTINE_IMPL
name = Name.identifier("create")
visibility = Visibilities.PROTECTED
visibility = DescriptorVisibilities.PROTECTED
returnType = coroutineClass.defaultType
}.apply {
parent = coroutineClass
@@ -505,7 +505,7 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
endOffset = irFunction.endOffset
origin = DECLARATION_ORIGIN_COROUTINE_IMPL
name = Name.identifier("invoke")
visibility = Visibilities.PROTECTED
visibility = DescriptorVisibilities.PROTECTED
returnType = context.irBuiltIns.anyNType
isSuspend = true
}.apply {
@@ -623,7 +623,7 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
this.origin = DECLARATION_ORIGIN_COROUTINE_IMPL
this.name = name
this.type = type
this.visibility = Visibilities.PRIVATE
this.visibility = DescriptorVisibilities.PRIVATE
this.isFinal = !isMutable
}.also {
it.parent = this
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.backend.common.lower
import org.jetbrains.kotlin.backend.common.ir.ir2string
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
@@ -264,7 +264,7 @@ class ClosureAnnotator(irElement: IrElement, declaration: IrDeclaration) {
private fun processMemberAccess(declaration: IrDeclaration, parentClosure: ClosureBuilder?) {
if (declaration.isLocal) {
if (declaration is IrSimpleFunction && declaration.visibility != Visibilities.LOCAL) {
if (declaration is IrSimpleFunction && declaration.visibility != DescriptorVisibilities.LOCAL) {
return
}
@@ -275,4 +275,4 @@ class ClosureAnnotator(irElement: IrElement, declaration: IrDeclaration) {
}
}
}
}
}
@@ -9,8 +9,8 @@ import org.jetbrains.kotlin.backend.common.*
import org.jetbrains.kotlin.backend.common.descriptors.synthesizedString
import org.jetbrains.kotlin.backend.common.ir.*
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.builders.*
@@ -229,7 +229,7 @@ open class DefaultArgumentStubGenerator(
error("This method should be overridden")
}
protected open fun defaultArgumentStubVisibility(function: IrFunction) = Visibilities.PUBLIC
protected open fun defaultArgumentStubVisibility(function: IrFunction) = DescriptorVisibilities.PUBLIC
protected open fun useConstructorMarker(function: IrFunction) = function is IrConstructor
@@ -415,7 +415,7 @@ open class DefaultParameterInjector(
protected open fun nullConst(startOffset: Int, endOffset: Int, type: IrType): IrExpression =
IrConstImpl.defaultValueForType(startOffset, endOffset, type)
protected open fun defaultArgumentStubVisibility(function: IrFunction) = Visibilities.PUBLIC
protected open fun defaultArgumentStubVisibility(function: IrFunction) = DescriptorVisibilities.PUBLIC
protected open fun useConstructorMarker(function: IrFunction) = function is IrConstructor
@@ -465,12 +465,12 @@ class DefaultParameterPatchOverridenSymbolsLowering(
}
private fun IrFunction.generateDefaultsFunction(
context: CommonBackendContext,
skipInlineMethods: Boolean,
skipExternalMethods: Boolean,
forceSetOverrideSymbols: Boolean,
visibility: Visibility,
useConstructorMarker: Boolean
context: CommonBackendContext,
skipInlineMethods: Boolean,
skipExternalMethods: Boolean,
forceSetOverrideSymbols: Boolean,
visibility: DescriptorVisibility,
useConstructorMarker: Boolean
): IrFunction? {
if (skipInlineMethods && isInline) return null
if (skipExternalMethods && isExternalOrInheritedFromExternal()) return null
@@ -520,11 +520,11 @@ private fun IrFunction.generateDefaultsFunction(
@OptIn(ObsoleteDescriptorBasedAPI::class)
private fun IrFunction.generateDefaultsFunctionImpl(
context: CommonBackendContext,
newOrigin: IrDeclarationOrigin,
newVisibility: Visibility,
isFakeOverride: Boolean,
useConstructorMarker: Boolean
context: CommonBackendContext,
newOrigin: IrDeclarationOrigin,
newVisibility: DescriptorVisibility,
isFakeOverride: Boolean,
useConstructorMarker: Boolean
): IrFunction {
val newFunction = when (this) {
is IrConstructor ->
@@ -12,8 +12,8 @@ import org.jetbrains.kotlin.backend.common.ir.*
import org.jetbrains.kotlin.backend.common.runOnFilePostfix
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.ir.*
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
import org.jetbrains.kotlin.ir.builders.declarations.buildField
@@ -49,14 +49,14 @@ interface LocalNameProvider {
}
interface VisibilityPolicy {
fun forClass(declaration: IrClass, inInlineFunctionScope: Boolean): Visibility =
fun forClass(declaration: IrClass, inInlineFunctionScope: Boolean): DescriptorVisibility =
declaration.visibility
fun forConstructor(declaration: IrConstructor, inInlineFunctionScope: Boolean): Visibility =
Visibilities.PRIVATE
fun forConstructor(declaration: IrConstructor, inInlineFunctionScope: Boolean): DescriptorVisibility =
DescriptorVisibilities.PRIVATE
fun forCapturedField(value: IrValueSymbol): Visibility =
Visibilities.PRIVATE
fun forCapturedField(value: IrValueSymbol): DescriptorVisibility =
DescriptorVisibilities.PRIVATE
companion object {
val DEFAULT = object : VisibilityPolicy {}
@@ -597,7 +597,7 @@ class LocalDeclarationsLowering(
val newDeclaration = context.irFactory.buildFun {
updateFrom(oldDeclaration)
name = newName
visibility = Visibilities.PRIVATE
visibility = DescriptorVisibilities.PRIVATE
modality = Modality.FINAL
}
@@ -721,13 +721,13 @@ class LocalDeclarationsLowering(
}
private fun createFieldForCapturedValue(
startOffset: Int,
endOffset: Int,
name: Name,
visibility: Visibility,
parent: IrClass,
fieldType: IrType,
isCrossinline: Boolean
startOffset: Int,
endOffset: Int,
name: Name,
visibility: DescriptorVisibility,
parent: IrClass,
fieldType: IrType,
isCrossinline: Boolean
): IrField =
context.irFactory.buildField {
this.startOffset = startOffset
@@ -883,7 +883,7 @@ class LocalDeclarationsLowering(
override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Data) {
super.visitSimpleFunction(declaration, data.withInline(declaration.isInline))
if (declaration.visibility == Visibilities.LOCAL) {
if (declaration.visibility == DescriptorVisibilities.LOCAL) {
val enclosingScope = data.currentClass
?: enclosingClass?.scopeWithCounter
// File is required for K/N because file declarations are not split by classes.
@@ -924,4 +924,4 @@ class LocalDeclarationsLowering(
}
// Local inner classes capture anything through outer
internal fun IrClass.isLocalNotInner(): Boolean = visibility == Visibilities.LOCAL && !isInner
internal fun IrClass.isLocalNotInner(): Boolean = visibility == DescriptorVisibilities.LOCAL && !isInner
@@ -14,8 +14,8 @@ import org.jetbrains.kotlin.backend.common.ir.copyTo
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.builders.*
@@ -62,7 +62,7 @@ abstract class SingleAbstractMethodLowering(val context: CommonBackendContext) :
protected val inlineCachedImplementations = mutableMapOf<IrType, IrClass>()
protected var enclosingContainer: IrDeclarationContainer? = null
abstract fun getWrapperVisibility(expression: IrTypeOperatorCall, scopes: List<ScopeWithIr>): Visibility
abstract fun getWrapperVisibility(expression: IrTypeOperatorCall, scopes: List<ScopeWithIr>): DescriptorVisibility
abstract fun getSuperTypeForWrapper(typeOperand: IrType): IrType
@@ -143,14 +143,14 @@ abstract class SingleAbstractMethodLowering(val context: CommonBackendContext) :
// Construct a class that wraps an invokable object into an implementation of an interface:
// class sam$n(private val invokable: F) : Interface { override fun method(...) = invokable(...) }
private fun createObjectProxy(superType: IrType, wrapperVisibility: Visibility, createFor: IrElement): IrClass {
private fun createObjectProxy(superType: IrType, wrapperVisibility: DescriptorVisibility, createFor: IrElement): IrClass {
val superClass = superType.classifierOrFail.owner as IrClass
// The language documentation prohibits casting lambdas to classes, but if it was allowed,
// the `irDelegatingConstructorCall` in the constructor below would need to be modified.
assert(superClass.kind == ClassKind.INTERFACE) { "SAM conversion to an abstract class not allowed" }
val superFqName = superClass.fqNameWhenAvailable!!.asString().replace('.', '_')
val inlinePrefix = if (wrapperVisibility == Visibilities.PUBLIC) "\$i" else ""
val inlinePrefix = if (wrapperVisibility == DescriptorVisibilities.PUBLIC) "\$i" else ""
val wrapperName = Name.identifier("sam$inlinePrefix\$$superFqName$SAM_WRAPPER_SUFFIX")
val superMethod = superClass.functions.single { it.modality == Modality.ABSTRACT }
val extensionReceiversCount = if (superMethod.extensionReceiverParameter == null) 0 else 1
@@ -178,7 +178,7 @@ abstract class SingleAbstractMethodLowering(val context: CommonBackendContext) :
name = Name.identifier(FUNCTION_FIELD_NAME)
type = wrappedFunctionType
origin = subclass.origin
visibility = Visibilities.PRIVATE
visibility = DescriptorVisibilities.PRIVATE
setSourceRange(createFor)
}
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.backend.common.BodyLoweringPass
import org.jetbrains.kotlin.backend.common.CommonBackendContext
import org.jetbrains.kotlin.backend.common.ir.isTopLevel
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.IrGetFieldImpl
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
class PropertyAccessorInlineLowering(private val context: CommonBackendContext) : BodyLoweringPass {
private val IrProperty.isSafeToInline: Boolean get() = isTopLevel || (modality === Modality.FINAL || visibility == Visibilities.PRIVATE) || (parent as IrClass).modality === Modality.FINAL
private val IrProperty.isSafeToInline: Boolean get() = isTopLevel || (modality === Modality.FINAL || visibility == DescriptorVisibilities.PRIVATE) || (parent as IrClass).modality === Modality.FINAL
// TODO: implement general function inlining optimization and replace it with
private inner class AccessorInliner : IrElementTransformerVoid() {
@@ -129,4 +129,4 @@ class PropertyAccessorInlineLowering(private val context: CommonBackendContext)
override fun lower(irBody: IrBody, container: IrDeclaration) {
irBody.transformChildrenVoid(AccessorInliner())
}
}
}
@@ -65,14 +65,14 @@ inline fun IrClass.addField(builder: IrFieldBuilder.() -> Unit) =
declarations.add(field)
}
fun IrClass.addField(fieldName: Name, fieldType: IrType, fieldVisibility: Visibility = Visibilities.PRIVATE): IrField =
fun IrClass.addField(fieldName: Name, fieldType: IrType, fieldVisibility: DescriptorVisibility = DescriptorVisibilities.PRIVATE): IrField =
addField {
name = fieldName
type = fieldType
visibility = fieldVisibility
}
fun IrClass.addField(fieldName: String, fieldType: IrType, fieldVisibility: Visibility = Visibilities.PRIVATE): IrField =
fun IrClass.addField(fieldName: String, fieldType: IrType, fieldVisibility: DescriptorVisibility = DescriptorVisibilities.PRIVATE): IrField =
addField(Name.identifier(fieldName), fieldType, fieldVisibility)
@PublishedApi
@@ -162,14 +162,14 @@ inline fun IrClass.addFunction(builder: IrFunctionBuilder.() -> Unit): IrSimpleF
factory.addFunction(this, builder)
fun IrClass.addFunction(
name: String,
returnType: IrType,
modality: Modality = Modality.FINAL,
visibility: Visibility = Visibilities.PUBLIC,
isStatic: Boolean = false,
isSuspend: Boolean = false,
isFakeOverride: Boolean = false,
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED
name: String,
returnType: IrType,
modality: Modality = Modality.FINAL,
visibility: DescriptorVisibility = DescriptorVisibilities.PUBLIC,
isStatic: Boolean = false,
isSuspend: Boolean = false,
isFakeOverride: Boolean = false,
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED
): IrSimpleFunction =
addFunction {
this.name = Name.identifier(name)