JS IR: Don't yield methods with no body

This commit is contained in:
Anton Bannykh
2019-11-26 17:28:25 +03:00
parent 71cc288a14
commit 7152156659
@@ -112,13 +112,16 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo
private fun generateMemberFunction(declaration: IrSimpleFunction): JsStatement? {
val translatedFunction = declaration.run { if (isReal) accept(IrFunctionToJsTransformer(), context) else null }
assert(!declaration.isStaticMethodOfClass)
val memberName = context.getNameForMemberFunction(declaration.realOverrideTarget)
val memberRef = JsNameRef(memberName, classPrototypeRef)
translatedFunction?.let { return jsAssignment(memberRef, it.apply { name = null }).makeStmt() }
if (declaration.isReal && declaration.body != null) {
val translatedFunction = declaration.accept(IrFunctionToJsTransformer(), context)
assert(!declaration.isStaticMethodOfClass)
return jsAssignment(memberRef, translatedFunction.apply { name = null }).makeStmt()
}
// do not generate code like
// interface I { foo() = "OK" }