IR: fixes after rebase
This commit is contained in:
@@ -12,9 +12,14 @@ import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
|
||||
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext
|
||||
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
||||
import org.jetbrains.kotlin.types.model.SimpleTypeMarker
|
||||
import org.jetbrains.kotlin.types.model.TypeArgumentMarker
|
||||
import org.jetbrains.kotlin.types.model.TypeConstructorMarker
|
||||
|
||||
class IrTypeCheckerContext(override val irBuiltIns: IrBuiltIns) : IrTypeSystemContext, AbstractTypeCheckerContext() {
|
||||
|
||||
override fun anyType(): SimpleTypeMarker =
|
||||
irBuiltIns.anyType as IrSimpleType
|
||||
|
||||
override fun substitutionSupertypePolicy(type: SimpleTypeMarker): SupertypesPolicy.DoCustomTransform {
|
||||
require(type is IrSimpleType)
|
||||
val parameters = extractTypeParameters((type.classifier as IrClassSymbol).owner).map { it.symbol }
|
||||
@@ -60,4 +65,26 @@ class IrTypeCheckerContext(override val irBuiltIns: IrBuiltIns) : IrTypeSystemCo
|
||||
// TODO remove 'Exact' annotation only
|
||||
return removeAnnotations()
|
||||
}
|
||||
|
||||
override fun KotlinTypeMarker.isUninferredParameter(): Boolean = false
|
||||
|
||||
override fun captureFromExpression(type: KotlinTypeMarker): KotlinTypeMarker? =
|
||||
error("Captured type is unsupported in IR")
|
||||
|
||||
override fun SimpleTypeMarker.isPrimitiveType(): Boolean {
|
||||
// TODO this is currently used in overload resolution only
|
||||
return false
|
||||
}
|
||||
|
||||
override fun KotlinTypeMarker.argumentsCount(): Int =
|
||||
when (this) {
|
||||
is IrSimpleType -> arguments.size
|
||||
else -> 0
|
||||
}
|
||||
|
||||
override fun KotlinTypeMarker.getArgument(index: Int): TypeArgumentMarker =
|
||||
when (this) {
|
||||
is IrSimpleType -> arguments[index]
|
||||
else -> error("Type $this has no arguments")
|
||||
}
|
||||
}
|
||||
@@ -65,13 +65,6 @@ interface IrTypeSystemContext : TypeSystemInferenceExtensionContext {
|
||||
|
||||
override fun SimpleTypeMarker.typeConstructor() = (this as IrSimpleType).classifier
|
||||
|
||||
override fun SimpleTypeMarker.argumentsCount(): Int = (this as IrSimpleType).arguments.size
|
||||
|
||||
override fun SimpleTypeMarker.getArgument(index: Int): TypeArgumentMarker {
|
||||
val simpleType = this as IrSimpleType
|
||||
return simpleType.arguments[index]
|
||||
}
|
||||
|
||||
override fun KotlinTypeMarker.asTypeArgument() = this as IrTypeArgument
|
||||
|
||||
override fun CapturedTypeMarker.lowerType(): KotlinTypeMarker? = error("Captured Type is not valid for IrTypes")
|
||||
@@ -328,6 +321,14 @@ interface IrTypeSystemContext : TypeSystemInferenceExtensionContext {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun intersectTypes(types: List<KotlinTypeMarker>): KotlinTypeMarker =
|
||||
makeTypeIntersection(types as List<IrType>)
|
||||
|
||||
override fun TypeConstructorMarker.isCapturedTypeConstructor(): Boolean = false
|
||||
|
||||
override fun createErrorTypeWithCustomConstructor(debugName: String, constructor: TypeConstructorMarker): KotlinTypeMarker =
|
||||
TODO("IrTypeSystemContext doesn't support constraint system resolution")
|
||||
|
||||
override fun CapturedTypeMarker.captureStatus(): CaptureStatus =
|
||||
error("Captured type is unsupported in IR")
|
||||
}
|
||||
|
||||
fun extractTypeParameters(klass: IrDeclarationParent): List<IrTypeParameter> {
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrTypeOperatorCallImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
|
||||
Reference in New Issue
Block a user