From 678b1101cbcb9e8b1fa9871e84f5f27113a30881 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 14 May 2018 13:45:34 +0200 Subject: [PATCH] Add class kind utils --- .../src/org/jetbrains/kotlin/ir/util/IrUtils.kt | 9 ++++++++- .../kotlin/backend/jvm/codegen/irCodegenUtils.kt | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index aa20e2ff1a6..08ff0e79951 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -269,4 +269,11 @@ fun IrSimpleFunction.resolveFakeOverride(): IrSimpleFunction? { realOverrides.toList().forEach { excludeRepeated(it) } return realOverrides.singleOrNull { it.modality != Modality.ABSTRACT } -} \ No newline at end of file +} + +val IrClass.isAnnotationClass get() = kind == ClassKind.ANNOTATION_CLASS +val IrClass.isEnumClass get() = kind == ClassKind.ENUM_CLASS +val IrClass.isEnumEntry get() = kind == ClassKind.ENUM_ENTRY +val IrClass.isInterface get() = kind == ClassKind.INTERFACE +val IrClass.isClass get() = kind == ClassKind.CLASS +val IrClass.isObject get() = kind == ClassKind.OBJECT \ No newline at end of file diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt index 2b62d19883f..9e29f392171 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt @@ -6,10 +6,13 @@ package org.jetbrains.kotlin.backend.jvm.codegen import org.jetbrains.kotlin.codegen.FrameMapBase +import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner import org.jetbrains.kotlin.ir.symbols.IrSymbol +import org.jetbrains.kotlin.ir.util.isAnnotationClass +import org.jetbrains.kotlin.ir.util.isInterface import org.jetbrains.org.objectweb.asm.Type class IrFrameMap : FrameMapBase() @@ -23,4 +26,6 @@ fun IrFrameMap.enter(irDeclaration: IrSymbolOwner, type: Type): Int { fun IrFrameMap.leave(irDeclaration: IrSymbolOwner): Int { return leave(irDeclaration.symbol) -} \ No newline at end of file +} + +val IrClass.isJvmInterface get() = isAnnotationClass || isInterface \ No newline at end of file