Hi, I tried the `useEsClasses` kotlin compile opti...
# javascript
a
Hi, I tried the
useEsClasses
kotlin compile option on a multi-platform project with a JS target that have Compose HTML 1.5.2, and I'm getting a backend error when trying to compile my code 🧵
Copy code
Problem with `@InternalComposeApi
@StabilityInferred(parameters = 0)
class MovableContent<P : Any?> {
  @Decoy(targetName = "$init$$composable", signature = ["androidx.compose.runtime", "MovableContent.<init>", "3688730527828675109", "0"])
  constructor(content: @Composable Function1<@ParameterName(name = "parameter") P, Unit>, /* var */ $box: MovableContent<P>?) /* primary */ {
    illegalDecoyCallException(fName = "<init>")
    return throwKotlinNothingValueException()
  }

  fun <get-content>(): Function3<@ParameterName(name = "parameter") P, Composer, Int, Unit> {
    return <this>.#content
  }

  private /* final field */ val content: Function3<@ParameterName(name = "parameter") P, Composer, Int, Unit>
  fun <get-$stableprop>(): Int {
    return 0
  }

  /* final field */ val $stable: Int
  @DecoyImplementation(name = "$init$$composable", id = 5347267751589030160L)
  @DecoyImplementationDefaultsBitMask(bitMask = 0)
  constructor(content: Function3<@ParameterName(name = "parameter") P, Composer, Int, Unit>, /* var */ $box: MovableContent<P>?) /* primary */ {
    super/*Any*/()
    { // BLOCK
      <this>.#content = content
      <this>.#$stable = 0
    }
  }

  /* fake */ override operator fun equals(other: Any?): Boolean
  /* fake */ override fun hashCode(): Int
  /* fake */ override fun toString(): String
}

`
Details: Internal error in declaration transformer: java.lang.NullPointerException: null
	at org.jetbrains.kotlin.ir.backend.js.lower.ES6ConstructorLowering.replaceSuperCallsAndThisUsages(ES6ConstructorLowering.kt:247)
	at org.jetbrains.kotlin.ir.backend.js.lower.ES6ConstructorLowering.access$replaceSuperCallsAndThisUsages(ES6ConstructorLowering.kt:52)
	at org.jetbrains.kotlin.ir.backend.js.lower.ES6ConstructorLowering$generateCreateFunction$2$1.invoke(ES6ConstructorLowering.kt:139)
	at org.jetbrains.kotlin.ir.backend.js.lower.ES6ConstructorLowering$generateCreateFunction$2$1.invoke(ES6ConstructorLowering.kt:137)
	at org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl.<init>(IrBlockBodyImpl.kt:34)
	at org.jetbrains.kotlin.ir.declarations.impl.AbstractIrFactoryImpl.createBlockBody(IrFactoryImpl.kt:291)
	at org.jetbrains.kotlin.ir.backend.js.lower.ES6ConstructorLowering.generateCreateFunction(ES6ConstructorLowering.kt:137)
	at org.jetbrains.kotlin.ir.backend.js.lower.ES6ConstructorLowering.transformFlat(ES6ConstructorLowering.kt:61)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer$transformFlatRestricted$1.invoke(Lower.kt:244)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer$transformFlatRestricted$1.invoke(Lower.kt:243)
	at org.jetbrains.kotlin.ir.backend.js.WholeWorldStageController.restrictTo(WholeWorldStageController.kt:29)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer.transformFlatRestricted(Lower.kt:243)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer.access$transformFlatRestricted(Lower.kt:217)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer$Visitor.visitClass(Lower.kt:302)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitClass(IrElementVisitorVoid.kt:111)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer$Visitor.visitClass(Lower.kt:248)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer$Visitor.visitClass(Lower.kt:248)
	at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:73)
	at org.jetbrains.kotlin.ir.visitors.IrVisitorsKt.acceptVoid(IrVisitors.kt:11)
	at org.jetbrains.kotlin.backend.common.DeclarationTransformer.lower(Lower.kt:227)
	at org.jetbrains.kotlin.backend.common.LowerKt.lower(Lower.kt:76)
a
I already work on investigating this issue, as soon as I will know what happened, I'll share the root of the problem and (if it exists) a workaround for the problem.
👍 1