[IR] Read isExpect directly from IrDeclaration without using descriptor
This commit is contained in:
+4
-3
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user