IR: make IrSymbol.isPublicApi an extension
This commit is contained in:
+2
-2
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.backend.common.lower
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.*
|
import org.jetbrains.kotlin.backend.common.*
|
||||||
import org.jetbrains.kotlin.backend.common.ir.*
|
import org.jetbrains.kotlin.backend.common.ir.*
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||||
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.builders.*
|
import org.jetbrains.kotlin.ir.builders.*
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
||||||
@@ -78,7 +78,7 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
// Suppress since it is used in native
|
// Suppress since it is used in native
|
||||||
@Suppress("MemberVisibilityCanBePrivate")
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
protected fun IrCall.isReturnIfSuspendedCall() =
|
protected fun IrCall.isReturnIfSuspendedCall() =
|
||||||
symbol.isPublicApi && context.ir.symbols.returnIfSuspended.signature == symbol.signature
|
symbol.signature == context.ir.symbols.returnIfSuspended.signature
|
||||||
|
|
||||||
private fun tryTransformSuspendFunction(element: IrElement) =
|
private fun tryTransformSuspendFunction(element: IrElement) =
|
||||||
|
|
||||||
|
|||||||
@@ -323,8 +323,8 @@ class IrInterpreter(private val irBuiltIns: IrBuiltIns, private val bodyMap: Map
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun IrFunction.trySubstituteFunctionBody(): ExecutionResult? {
|
private fun IrFunction.trySubstituteFunctionBody(): ExecutionResult? {
|
||||||
if (!this.symbol.isPublicApi) return null
|
val signature = this.symbol.signature ?: return null
|
||||||
val body = bodyMap[this.symbol.signature]
|
val body = bodyMap[signature]
|
||||||
|
|
||||||
return body?.let {
|
return body?.let {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ interface IrSymbol {
|
|||||||
val isBound: Boolean
|
val isBound: Boolean
|
||||||
|
|
||||||
val signature: IdSignature?
|
val signature: IdSignature?
|
||||||
|
|
||||||
val isPublicApi: Boolean
|
|
||||||
get() = signature != null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val IrSymbol.isPublicApi: Boolean
|
||||||
|
get() = signature != null
|
||||||
|
|
||||||
interface IrBindableSymbol<out D : DeclarationDescriptor, B : IrSymbolOwner> : IrSymbol {
|
interface IrBindableSymbol<out D : DeclarationDescriptor, B : IrSymbolOwner> : IrSymbol {
|
||||||
override val owner: B
|
override val owner: B
|
||||||
|
|
||||||
|
|||||||
-3
@@ -19,9 +19,6 @@ class DescriptorlessExternalPackageFragmentSymbol : IrExternalPackageFragmentSym
|
|||||||
private var _owner: IrExternalPackageFragment? = null
|
private var _owner: IrExternalPackageFragment? = null
|
||||||
override val owner get() = _owner!!
|
override val owner get() = _owner!!
|
||||||
|
|
||||||
override val isPublicApi: Boolean
|
|
||||||
get() = TODO("Not yet implemented")
|
|
||||||
|
|
||||||
override val signature: IdSignature?
|
override val signature: IdSignature?
|
||||||
get() = TODO("Not yet implemented")
|
get() = TODO("Not yet implemented")
|
||||||
|
|
||||||
|
|||||||
@@ -98,8 +98,8 @@ fun IrType.isCollection(): Boolean = isNotNullClassType(IdSignatureValues.collec
|
|||||||
fun IrType.isNothing(): Boolean = isNotNullClassType(IdSignatureValues.nothing)
|
fun IrType.isNothing(): Boolean = isNotNullClassType(IdSignatureValues.nothing)
|
||||||
|
|
||||||
fun IrType.isPrimitiveType(hasQuestionMark: Boolean = false): Boolean =
|
fun IrType.isPrimitiveType(hasQuestionMark: Boolean = false): Boolean =
|
||||||
(this is IrSimpleType && hasQuestionMark == this.hasQuestionMark) &&
|
(this is IrSimpleType && hasQuestionMark == this.hasQuestionMark) &&
|
||||||
classOrNull?.takeIf(IrClassSymbol::isPublicApi)?.signature in idSignatureToPrimitiveType
|
classOrNull?.signature in idSignatureToPrimitiveType
|
||||||
|
|
||||||
fun IrType.isNullablePrimitiveType(): Boolean = isPrimitiveType(true)
|
fun IrType.isNullablePrimitiveType(): Boolean = isPrimitiveType(true)
|
||||||
|
|
||||||
|
|||||||
@@ -1112,8 +1112,8 @@ fun SymbolTable.noUnboundLeft(message: String) {
|
|||||||
val unbound = this.allUnbound
|
val unbound = this.allUnbound
|
||||||
assert(unbound.isEmpty()) {
|
assert(unbound.isEmpty()) {
|
||||||
"$message\n" +
|
"$message\n" +
|
||||||
unbound.map {
|
unbound.joinToString("\n") {
|
||||||
"$it ${if (it.isPublicApi) it.signature.toString() else "NON-PUBLIC API $it"}"
|
"$it ${it.signature?.toString() ?: "NON-PUBLIC API $it"}"
|
||||||
}.joinToString("\n")
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-4
@@ -29,13 +29,16 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrPropertySymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrPropertySymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.types.getClass
|
import org.jetbrains.kotlin.ir.types.getClass
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
class FakeOverrideGlobalDeclarationTable(signatureSerializer: IdSignatureSerializer)
|
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||||
: GlobalDeclarationTable(signatureSerializer, signatureSerializer.mangler) {
|
|
||||||
|
|
||||||
|
class FakeOverrideGlobalDeclarationTable(
|
||||||
|
signatureSerializer: IdSignatureSerializer
|
||||||
|
) : GlobalDeclarationTable(signatureSerializer, signatureSerializer.mangler) {
|
||||||
fun clear() = table.clear()
|
fun clear() = table.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
class FakeOverrideDeclarationTable(
|
class FakeOverrideDeclarationTable(
|
||||||
signatureSerializer: IdSignatureSerializer,
|
signatureSerializer: IdSignatureSerializer,
|
||||||
globalTable: FakeOverrideGlobalDeclarationTable = FakeOverrideGlobalDeclarationTable(signatureSerializer)
|
globalTable: FakeOverrideGlobalDeclarationTable = FakeOverrideGlobalDeclarationTable(signatureSerializer)
|
||||||
|
|||||||
+3
-3
@@ -61,15 +61,15 @@ import org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicOperator
|
|||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicType as ProtoDynamicType
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicType as ProtoDynamicType
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrEnumConstructorCall as ProtoEnumConstructorCall
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrEnumConstructorCall as ProtoEnumConstructorCall
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrEnumEntry as ProtoEnumEntry
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrEnumEntry as ProtoEnumEntry
|
||||||
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorCallExpression as ProtoErrorCallExpression
|
||||||
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorDeclaration as ProtoErrorDeclaration
|
||||||
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorExpression as ProtoErrorExpression
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorType as ProtoErrorType
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorType as ProtoErrorType
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression as ProtoExpression
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression as ProtoExpression
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrField as ProtoField
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrField as ProtoField
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunction as ProtoFunction
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunction as ProtoFunction
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionBase as ProtoFunctionBase
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionBase as ProtoFunctionBase
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionExpression as ProtoFunctionExpression
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionExpression as ProtoFunctionExpression
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorExpression as ProtoErrorExpression
|
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorCallExpression as ProtoErrorCallExpression
|
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorDeclaration as ProtoErrorDeclaration
|
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionReference as ProtoFunctionReference
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionReference as ProtoFunctionReference
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrGetClass as ProtoGetClass
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrGetClass as ProtoGetClass
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IrGetEnumValue as ProtoGetEnumValue
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IrGetEnumValue as ProtoGetEnumValue
|
||||||
|
|||||||
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.descriptors.IrAbstractFunctionFactory
|
|||||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.isPublicApi
|
||||||
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
@@ -167,4 +168,4 @@ class JvmIrLinker(
|
|||||||
override val moduleDependencies: Collection<IrModuleDeserializer> = dependencies
|
override val moduleDependencies: Collection<IrModuleDeserializer> = dependencies
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user