Remove CommonBackendContext.getInternalClass
Move to subclasses: getJvmInternalClass, getJsInternalClass and getKonanInternalClass (in Kotlin/Native). The advantage of this is that this API need not be shared between backends any longer, which makes sense because implementation details differ across platforms
This commit is contained in:
-3
@@ -21,9 +21,6 @@ interface LoggingContext {
|
||||
interface CommonBackendContext : BackendContext, LoggingContext {
|
||||
override val ir: Ir<CommonBackendContext>
|
||||
|
||||
//TODO move to builtins
|
||||
fun getInternalClass(name: String): ClassDescriptor
|
||||
|
||||
fun getClass(fqName: FqName): ClassDescriptor
|
||||
|
||||
//TODO move to builtins
|
||||
|
||||
@@ -64,6 +64,8 @@ abstract class Symbols<out T : CommonBackendContext>(val context: T, private val
|
||||
|
||||
abstract val stringBuilder: IrClassSymbol
|
||||
|
||||
abstract val defaultConstructorMarker: IrClassSymbol
|
||||
|
||||
val iterator = symbolTable.referenceClass(
|
||||
builtInsPackage("kotlin", "collections").getContributedClassifier(
|
||||
Name.identifier("Iterator"), NoLookupLocation.FROM_BACKEND
|
||||
@@ -86,8 +88,6 @@ abstract class Symbols<out T : CommonBackendContext>(val context: T, private val
|
||||
val progressionClasses = listOf(charProgression, intProgression, longProgression)
|
||||
val progressionClassesTypes = progressionClasses.map { it.descriptor.defaultType }.toSet()
|
||||
|
||||
val defaultConstructorMarker = symbolTable.referenceClass(context.getInternalClass("DefaultConstructorMarker"))
|
||||
|
||||
val any = symbolTable.referenceClass(builtIns.any)
|
||||
val unit = symbolTable.referenceClass(builtIns.unit)
|
||||
|
||||
|
||||
@@ -252,7 +252,7 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC
|
||||
val jsBind = defineJsBindIntrinsic()
|
||||
|
||||
// TODO move to IntrinsifyCallsLowering
|
||||
val doNotIntrinsifyAnnotationSymbol = context.symbolTable.referenceClass(context.getInternalClass("DoNotIntrinsify"))
|
||||
val doNotIntrinsifyAnnotationSymbol = context.symbolTable.referenceClass(context.getJsInternalClass("DoNotIntrinsify"))
|
||||
|
||||
// TODO move CharSequence-related stiff to IntrinsifyCallsLowering
|
||||
val charSequenceClassSymbol = context.symbolTable.referenceClass(context.getClass(FqName("kotlin.CharSequence")))
|
||||
|
||||
@@ -144,8 +144,8 @@ class JsIrBackendContext(
|
||||
|
||||
fun getOperatorByName(name: Name, type: KotlinType) = operatorMap[name]?.get(type)
|
||||
|
||||
override val ir = object : Ir<CommonBackendContext>(this, irModuleFragment) {
|
||||
override val symbols = object : Symbols<CommonBackendContext>(this@JsIrBackendContext, symbolTable.lazyWrapper) {
|
||||
override val ir = object : Ir<JsIrBackendContext>(this, irModuleFragment) {
|
||||
override val symbols = object : Symbols<JsIrBackendContext>(this@JsIrBackendContext, symbolTable.lazyWrapper) {
|
||||
override val ThrowNullPointerException =
|
||||
symbolTable.referenceSimpleFunction(getFunctions(kotlinPackageFqn.child(Name.identifier("THROW_NPE"))).single())
|
||||
|
||||
@@ -158,12 +158,15 @@ class JsIrBackendContext(
|
||||
override val ThrowUninitializedPropertyAccessException =
|
||||
symbolTable.referenceSimpleFunction(getFunctions(FqName("kotlin.throwUninitializedPropertyAccessException")).single())
|
||||
|
||||
override val defaultConstructorMarker =
|
||||
symbolTable.referenceClass(context.getJsInternalClass("DefaultConstructorMarker"))
|
||||
|
||||
override val stringBuilder
|
||||
get() = TODO("not implemented")
|
||||
override val copyRangeTo: Map<ClassDescriptor, IrSimpleFunctionSymbol>
|
||||
get() = TODO("not implemented")
|
||||
override val coroutineImpl =
|
||||
symbolTable.referenceClass(findClass(coroutinePackage.memberScope, COROUTINE_IMPL_NAME.identifier))
|
||||
symbolTable.referenceClass(findClass(coroutinePackage.memberScope, COROUTINE_IMPL_NAME))
|
||||
override val coroutineSuspendedGetter =
|
||||
symbolTable.referenceSimpleFunction(
|
||||
coroutineIntrinsicsPackage.memberScope.getContributedVariables(
|
||||
@@ -262,8 +265,6 @@ class JsIrBackendContext(
|
||||
}
|
||||
}.toMap()
|
||||
|
||||
private fun findClass(memberScope: MemberScope, className: String) = findClass(memberScope, Name.identifier(className))
|
||||
|
||||
private fun findClass(memberScope: MemberScope, name: Name) =
|
||||
memberScope.getContributedClassifier(name, NoLookupLocation.FROM_BACKEND) as ClassDescriptor
|
||||
|
||||
@@ -273,7 +274,8 @@ class JsIrBackendContext(
|
||||
private fun findFunctions(memberScope: MemberScope, name: Name) =
|
||||
memberScope.getContributedFunctions(name, NoLookupLocation.FROM_BACKEND).toList()
|
||||
|
||||
override fun getInternalClass(name: String) = findClass(internalPackage.memberScope, name)
|
||||
internal fun getJsInternalClass(name: String): ClassDescriptor =
|
||||
findClass(internalPackage.memberScope, Name.identifier(name))
|
||||
|
||||
override fun getClass(fqName: FqName) = findClass(module.getPackage(fqName.parent()).memberScope, fqName.shortName())
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ class JvmBackendContext(
|
||||
return memberScope.getContributedClassifier(name, NoLookupLocation.FROM_BACKEND) as ClassDescriptor
|
||||
}
|
||||
|
||||
override fun getInternalClass(name: String): ClassDescriptor {
|
||||
private fun getJvmInternalClass(name: String): ClassDescriptor {
|
||||
return find(state.module.getPackage(FqName("kotlin.jvm.internal")).memberScope, name)
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ class JvmBackendContext(
|
||||
override fun getInternalFunctions(name: String): List<FunctionDescriptor> {
|
||||
return when (name) {
|
||||
"ThrowUninitializedPropertyAccessException" ->
|
||||
getInternalClass("Intrinsics").staticScope.getContributedFunctions(
|
||||
getJvmInternalClass("Intrinsics").staticScope.getContributedFunctions(
|
||||
Name.identifier("throwUninitializedPropertyAccessException"),
|
||||
NoLookupLocation.FROM_BACKEND
|
||||
).toList()
|
||||
@@ -116,6 +116,9 @@ class JvmBackendContext(
|
||||
override val stringBuilder: IrClassSymbol
|
||||
get() = symbolTable.referenceClass(context.getClass(FqName("java.lang.StringBuilder")))
|
||||
|
||||
override val defaultConstructorMarker: IrClassSymbol =
|
||||
symbolTable.referenceClass(context.getJvmInternalClass("DefaultConstructorMarker"))
|
||||
|
||||
override val copyRangeTo: Map<ClassDescriptor, IrSimpleFunctionSymbol>
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
override val coroutineImpl: IrClassSymbol
|
||||
@@ -124,10 +127,10 @@ class JvmBackendContext(
|
||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||
|
||||
val lambdaClass: IrClassSymbol =
|
||||
symbolTable.referenceClass(context.getInternalClass("Lambda"))
|
||||
symbolTable.referenceClass(context.getJvmInternalClass("Lambda"))
|
||||
|
||||
val functionReference: IrClassSymbol =
|
||||
symbolTable.referenceClass(context.getInternalClass("FunctionReference"))
|
||||
symbolTable.referenceClass(context.getJvmInternalClass("FunctionReference"))
|
||||
|
||||
fun getFunction(parameterCount: Int): IrClassSymbol =
|
||||
symbolTable.referenceClass(context.builtIns.getFunction(parameterCount))
|
||||
|
||||
Reference in New Issue
Block a user