[IR] Read isExpect directly from IrDeclaration without using descriptor

This commit is contained in:
Mikhail Glukhikh
2020-05-19 18:41:44 +03:00
parent 934b040152
commit cacf5f5a4a
3 changed files with 6 additions and 5 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.backend.common.CommonBackendContext
import org.jetbrains.kotlin.backend.common.DeclarationTransformer
import org.jetbrains.kotlin.backend.common.getOrPut
import org.jetbrains.kotlin.backend.common.ir.copyParameterDeclarationsFrom
import org.jetbrains.kotlin.backend.common.ir.isExpect
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
import org.jetbrains.kotlin.backend.common.lower.irBlockBody
import org.jetbrains.kotlin.backend.common.lower.irIfThen
@@ -102,7 +103,7 @@ class EnumClassConstructorLowering(val context: JsCommonBackendContext) : Declar
override fun transformFlat(declaration: IrDeclaration): List<IrDeclaration>? {
(declaration.parent as? IrClass)?.let { irClass ->
if (!irClass.isEnumClass || irClass.descriptor.isExpect || irClass.isEffectivelyExternal()) return null
if (!irClass.isEnumClass || irClass.isExpect || irClass.isEffectivelyExternal()) return null
if (declaration is IrConstructor) {
// Add `name` and `ordinal` parameters to enum class constructors
@@ -317,7 +318,7 @@ class EnumClassConstructorBodyTransformer(val context: JsCommonBackendContext) :
//-------------------------------------------------------
private val IrClass.goodEnum: Boolean
get() = isEnumClass && !descriptor.isExpect && !isEffectivelyExternal()
get() = isEnumClass && !isExpect && !isEffectivelyExternal()
class EnumEntryInstancesLowering(val context: JsIrBackendContext) : DeclarationTransformer {
@@ -552,7 +553,7 @@ private val IrClass.enumEntries: List<IrEnumEntry>
class EnumClassRemoveEntriesLowering(val context: JsIrBackendContext) : DeclarationTransformer {
override fun transformFlat(declaration: IrDeclaration): List<IrDeclaration>? {
// Remove IrEnumEntry nodes from class declarations. Replace them with corresponding class declarations (if they have them).
if (declaration is IrEnumEntry && !declaration.descriptor.isExpect && !declaration.isEffectivelyExternal()) {
if (declaration is IrEnumEntry && !declaration.isExpect && !declaration.isEffectivelyExternal()) {
return listOfNotNull(declaration.correspondingClass)
}
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.js.backend.ast.JsVars
class IrDeclarationToJsTransformer : BaseIrElementToJsNodeTransformer<JsStatement, JsGenerationContext> {
override fun visitSimpleFunction(declaration: IrSimpleFunction, context: JsGenerationContext): JsStatement {
require(!declaration.descriptor.isExpect)
require(!declaration.isExpect)
return declaration.accept(IrFunctionToJsTransformer(), context).makeStmt()
}
@@ -35,7 +35,7 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo
private val es6mode = context.staticContext.backendContext.es6mode
fun generate(): JsStatement {
assert(!irClass.descriptor.isExpect)
assert(!irClass.isExpect)
if (!es6mode) maybeGeneratePrimaryConstructor()
val transformer = IrDeclarationToJsTransformer()