From 1c2ac364c70c4cd1b5c0315ae58dc8c2bede1d96 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Tue, 26 Jun 2018 13:49:06 +0300 Subject: [PATCH] IR: add more predicates on IrType (cherry picked from commit 5cf136c) --- .../src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt index 96adb8bcf09..6edaf1ff569 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/irTypePredicates.kt @@ -31,6 +31,7 @@ private fun IrType.isClassType(fqName: FqNameUnsafe, hasQuestionMark: Boolean): private fun classFqNameEquals(descriptor: ClassDescriptor, fqName: FqNameUnsafe): Boolean = descriptor.name == fqName.shortName() && fqName == getFqName(descriptor) +fun IrType.isAny(): Boolean = isBuiltInClassType(KotlinBuiltIns::isAny, hasQuestionMark = false) fun IrType.isNullableAny(): Boolean = isBuiltInClassType(KotlinBuiltIns::isAny, hasQuestionMark = true) fun IrType.isString(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES.string) @@ -42,6 +43,8 @@ fun IrType.isPrimitiveType(): Boolean = fun IrType.isNullablePrimitiveType(): Boolean = isBuiltInClassType(KotlinBuiltIns::isPrimitiveClass, hasQuestionMark = true) +fun IrType.isMarkedNullable() = (this as? IrSimpleType)?.hasQuestionMark ?: false + fun IrType.isUnit() = isNotNullClassType(KotlinBuiltIns.FQ_NAMES.unit) fun IrType.isNullableUnit() = isNullableClassType(KotlinBuiltIns.FQ_NAMES.unit) fun IrType.isUnitOrNullableUnit() = this.isUnit() || this.isNullableUnit() @@ -53,4 +56,5 @@ fun IrType.isShort(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES._shor fun IrType.isInt(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES._int) fun IrType.isLong(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES._long) fun IrType.isFloat(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES._float) -fun IrType.isDouble(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES._double) \ No newline at end of file +fun IrType.isDouble(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES._double) +fun IrType.isNumber(): Boolean = isNotNullClassType(KotlinBuiltIns.FQ_NAMES.number) \ No newline at end of file