|
|
|
@@ -5,7 +5,7 @@
|
|
|
|
|
|
|
|
|
|
package org.jetbrains.kotlin.ir.types
|
|
|
|
|
|
|
|
|
|
import org.jetbrains.kotlin.builtins.KotlinBuiltInsNames
|
|
|
|
|
import org.jetbrains.kotlin.builtins.StandardNames
|
|
|
|
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
|
|
|
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
|
|
|
|
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
|
|
|
@@ -32,42 +32,42 @@ private fun classFqNameEquals(symbol: IrClassSymbol, fqName: FqNameUnsafe): Bool
|
|
|
|
|
private fun classFqNameEquals(declaration: IrClass, fqName: FqNameUnsafe): Boolean =
|
|
|
|
|
declaration.name == fqName.shortName() && fqName == declaration.fqNameWhenAvailable?.toUnsafe()
|
|
|
|
|
|
|
|
|
|
fun IrType.isAny(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.any)
|
|
|
|
|
fun IrType.isNullableAny(): Boolean = isNullableClassType(KotlinBuiltInsNames.FqNames.any)
|
|
|
|
|
fun IrType.isAny(): Boolean = isNotNullClassType(StandardNames.FqNames.any)
|
|
|
|
|
fun IrType.isNullableAny(): Boolean = isNullableClassType(StandardNames.FqNames.any)
|
|
|
|
|
|
|
|
|
|
fun IrType.isString(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.string)
|
|
|
|
|
fun IrType.isNullableString(): Boolean = isNullableClassType(KotlinBuiltInsNames.FqNames.string)
|
|
|
|
|
fun IrType.isStringClassType(): Boolean = isClassType(KotlinBuiltInsNames.FqNames.string)
|
|
|
|
|
fun IrType.isArray(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.array)
|
|
|
|
|
fun IrType.isNullableArray(): Boolean = isNullableClassType(KotlinBuiltInsNames.FqNames.array)
|
|
|
|
|
fun IrType.isCollection(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.collection.toUnsafe())
|
|
|
|
|
fun IrType.isNothing(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.nothing)
|
|
|
|
|
fun IrType.isKClass(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.kClass)
|
|
|
|
|
fun IrType.isString(): Boolean = isNotNullClassType(StandardNames.FqNames.string)
|
|
|
|
|
fun IrType.isNullableString(): Boolean = isNullableClassType(StandardNames.FqNames.string)
|
|
|
|
|
fun IrType.isStringClassType(): Boolean = isClassType(StandardNames.FqNames.string)
|
|
|
|
|
fun IrType.isArray(): Boolean = isNotNullClassType(StandardNames.FqNames.array)
|
|
|
|
|
fun IrType.isNullableArray(): Boolean = isNullableClassType(StandardNames.FqNames.array)
|
|
|
|
|
fun IrType.isCollection(): Boolean = isNotNullClassType(StandardNames.FqNames.collection.toUnsafe())
|
|
|
|
|
fun IrType.isNothing(): Boolean = isNotNullClassType(StandardNames.FqNames.nothing)
|
|
|
|
|
fun IrType.isKClass(): Boolean = isNotNullClassType(StandardNames.FqNames.kClass)
|
|
|
|
|
|
|
|
|
|
fun IrType.isPrimitiveType(): Boolean = KotlinBuiltInsNames.FqNames.fqNameToPrimitiveType.keys.any { isNotNullClassType(it) }
|
|
|
|
|
fun IrType.isNullablePrimitiveType(): Boolean = KotlinBuiltInsNames.FqNames.fqNameToPrimitiveType.keys.any { isNullableClassType(it) }
|
|
|
|
|
fun IrType.isPrimitiveType(): Boolean = StandardNames.FqNames.fqNameToPrimitiveType.keys.any { isNotNullClassType(it) }
|
|
|
|
|
fun IrType.isNullablePrimitiveType(): Boolean = StandardNames.FqNames.fqNameToPrimitiveType.keys.any { isNullableClassType(it) }
|
|
|
|
|
|
|
|
|
|
fun IrType.isMarkedNullable() = (this as? IrSimpleType)?.hasQuestionMark ?: false
|
|
|
|
|
|
|
|
|
|
fun IrType.isUnit() = isNotNullClassType(KotlinBuiltInsNames.FqNames.unit)
|
|
|
|
|
fun IrType.isUnit() = isNotNullClassType(StandardNames.FqNames.unit)
|
|
|
|
|
|
|
|
|
|
fun IrType.isBoolean(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._boolean)
|
|
|
|
|
fun IrType.isChar(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._char)
|
|
|
|
|
fun IrType.isByte(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._byte)
|
|
|
|
|
fun IrType.isShort(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._short)
|
|
|
|
|
fun IrType.isInt(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._int)
|
|
|
|
|
fun IrType.isLong(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._long)
|
|
|
|
|
fun IrType.isUByte(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.uByteFqName.toUnsafe())
|
|
|
|
|
fun IrType.isUShort(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.uShortFqName.toUnsafe())
|
|
|
|
|
fun IrType.isUInt(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.uIntFqName.toUnsafe())
|
|
|
|
|
fun IrType.isULong(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.uLongFqName.toUnsafe())
|
|
|
|
|
fun IrType.isFloat(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._float)
|
|
|
|
|
fun IrType.isDouble(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames._double)
|
|
|
|
|
fun IrType.isNumber(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.number)
|
|
|
|
|
fun IrType.isBoolean(): Boolean = isNotNullClassType(StandardNames.FqNames._boolean)
|
|
|
|
|
fun IrType.isChar(): Boolean = isNotNullClassType(StandardNames.FqNames._char)
|
|
|
|
|
fun IrType.isByte(): Boolean = isNotNullClassType(StandardNames.FqNames._byte)
|
|
|
|
|
fun IrType.isShort(): Boolean = isNotNullClassType(StandardNames.FqNames._short)
|
|
|
|
|
fun IrType.isInt(): Boolean = isNotNullClassType(StandardNames.FqNames._int)
|
|
|
|
|
fun IrType.isLong(): Boolean = isNotNullClassType(StandardNames.FqNames._long)
|
|
|
|
|
fun IrType.isUByte(): Boolean = isNotNullClassType(StandardNames.FqNames.uByteFqName.toUnsafe())
|
|
|
|
|
fun IrType.isUShort(): Boolean = isNotNullClassType(StandardNames.FqNames.uShortFqName.toUnsafe())
|
|
|
|
|
fun IrType.isUInt(): Boolean = isNotNullClassType(StandardNames.FqNames.uIntFqName.toUnsafe())
|
|
|
|
|
fun IrType.isULong(): Boolean = isNotNullClassType(StandardNames.FqNames.uLongFqName.toUnsafe())
|
|
|
|
|
fun IrType.isFloat(): Boolean = isNotNullClassType(StandardNames.FqNames._float)
|
|
|
|
|
fun IrType.isDouble(): Boolean = isNotNullClassType(StandardNames.FqNames._double)
|
|
|
|
|
fun IrType.isNumber(): Boolean = isNotNullClassType(StandardNames.FqNames.number)
|
|
|
|
|
|
|
|
|
|
fun IrType.isComparable(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.comparable.toUnsafe())
|
|
|
|
|
fun IrType.isCharSequence(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.charSequence)
|
|
|
|
|
fun IrType.isIterable(): Boolean = isNotNullClassType(KotlinBuiltInsNames.FqNames.iterable.toUnsafe())
|
|
|
|
|
fun IrType.isComparable(): Boolean = isNotNullClassType(StandardNames.FqNames.comparable.toUnsafe())
|
|
|
|
|
fun IrType.isCharSequence(): Boolean = isNotNullClassType(StandardNames.FqNames.charSequence)
|
|
|
|
|
fun IrType.isIterable(): Boolean = isNotNullClassType(StandardNames.FqNames.iterable.toUnsafe())
|
|
|
|
|
fun IrType.isSequence(): Boolean = isNotNullClassType(FqNameUnsafe("kotlin.sequences.Sequence"))
|
|
|
|
|
|
|
|
|
|
fun IrType.isBooleanArray(): Boolean = isNotNullClassType(FqNameUnsafe("kotlin.BooleanArray"))
|
|
|
|
@@ -79,5 +79,5 @@ fun IrType.isLongArray(): Boolean = isNotNullClassType(FqNameUnsafe("kotlin.Long
|
|
|
|
|
fun IrType.isFloatArray(): Boolean = isNotNullClassType(FqNameUnsafe("kotlin.FloatArray"))
|
|
|
|
|
fun IrType.isDoubleArray(): Boolean = isNotNullClassType(FqNameUnsafe("kotlin.DoubleArray"))
|
|
|
|
|
|
|
|
|
|
fun IrType.isKotlinResult(): Boolean = isNotNullClassType(KotlinBuiltInsNames.RESULT_FQ_NAME.toUnsafe())
|
|
|
|
|
fun IrType.isNullableContinuation(): Boolean = isNullableClassType(KotlinBuiltInsNames.CONTINUATION_INTERFACE_FQ_NAME_RELEASE.toUnsafe())
|
|
|
|
|
fun IrType.isKotlinResult(): Boolean = isNotNullClassType(StandardNames.RESULT_FQ_NAME.toUnsafe())
|
|
|
|
|
fun IrType.isNullableContinuation(): Boolean = isNullableClassType(StandardNames.CONTINUATION_INTERFACE_FQ_NAME_RELEASE.toUnsafe())
|
|
|
|
|