Add class kind utils

This commit is contained in:
Mikhael Bogdanov
2018-05-14 13:45:34 +02:00
parent 6590666983
commit 678b1101cb
2 changed files with 14 additions and 2 deletions
@@ -269,4 +269,11 @@ fun IrSimpleFunction.resolveFakeOverride(): IrSimpleFunction? {
realOverrides.toList().forEach { excludeRepeated(it) } realOverrides.toList().forEach { excludeRepeated(it) }
return realOverrides.singleOrNull { it.modality != Modality.ABSTRACT } return realOverrides.singleOrNull { it.modality != Modality.ABSTRACT }
} }
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
@@ -6,10 +6,13 @@
package org.jetbrains.kotlin.backend.jvm.codegen package org.jetbrains.kotlin.backend.jvm.codegen
import org.jetbrains.kotlin.codegen.FrameMapBase 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.IrConstructor
import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner
import org.jetbrains.kotlin.ir.symbols.IrSymbol 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 import org.jetbrains.org.objectweb.asm.Type
class IrFrameMap : FrameMapBase<IrSymbol>() class IrFrameMap : FrameMapBase<IrSymbol>()
@@ -23,4 +26,6 @@ fun IrFrameMap.enter(irDeclaration: IrSymbolOwner, type: Type): Int {
fun IrFrameMap.leave(irDeclaration: IrSymbolOwner): Int { fun IrFrameMap.leave(irDeclaration: IrSymbolOwner): Int {
return leave(irDeclaration.symbol) return leave(irDeclaration.symbol)
} }
val IrClass.isJvmInterface get() = isAnnotationClass || isInterface