IR: minor refactorings around IrType/IrCapturedType
- use identity in equals/hashCode. It was already effectively working like this because of `constructor === other.constructor` - implement variance and declare it in IrSimpleType - remove obsolete TODO - simplify code in captureFromArguments - use data objects
This commit is contained in:
committed by
Space Team
parent
dec41e8c46
commit
898d3aeea9
+12
-10
@@ -8,8 +8,11 @@ package org.jetbrains.kotlin.backend.common.linkage.partial
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.linkage.partial.ExploredClassifier
|
||||
import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrSimpleType
|
||||
import org.jetbrains.kotlin.ir.types.IrTypeAbbreviation
|
||||
import org.jetbrains.kotlin.ir.types.IrTypeArgument
|
||||
import org.jetbrains.kotlin.ir.types.SimpleTypeNullability
|
||||
|
||||
/**
|
||||
* Replacement for IR types that reference unusable classifier symbols.
|
||||
@@ -17,15 +20,14 @@ import org.jetbrains.kotlin.types.Variance
|
||||
*/
|
||||
internal class PartiallyLinkedMarkerType(
|
||||
builtIns: IrBuiltIns,
|
||||
val unusableClassifier: ExploredClassifier.Unusable
|
||||
val unusableClassifier: ExploredClassifier.Unusable,
|
||||
) : IrSimpleType(null) {
|
||||
override val annotations get() = emptyList<IrConstructorCall>()
|
||||
override val classifier = builtIns.anyClass
|
||||
override val nullability get() = SimpleTypeNullability.MARKED_NULLABLE
|
||||
override val arguments get() = emptyList<IrTypeArgument>()
|
||||
override val annotations: List<IrConstructorCall> get() = emptyList()
|
||||
override val classifier: IrClassSymbol = builtIns.anyClass
|
||||
override val nullability: SimpleTypeNullability get() = SimpleTypeNullability.MARKED_NULLABLE
|
||||
override val arguments: List<IrTypeArgument> get() = emptyList()
|
||||
override val abbreviation: IrTypeAbbreviation? get() = null
|
||||
override val variance get() = Variance.INVARIANT
|
||||
|
||||
override fun equals(other: Any?) = (other as? PartiallyLinkedMarkerType)?.unusableClassifier == unusableClassifier
|
||||
override fun hashCode() = unusableClassifier.hashCode()
|
||||
override fun equals(other: Any?): Boolean = (other as? PartiallyLinkedMarkerType)?.unusableClassifier == unusableClassifier
|
||||
override fun hashCode(): Int = unusableClassifier.hashCode()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user