[JS IR BE] Improve error reporting

This commit is contained in:
Roman Artemev
2019-07-03 20:03:59 +03:00
committed by romanart
parent 940c9e5604
commit b4c68025a7
2 changed files with 5 additions and 6 deletions
@@ -10,6 +10,7 @@ 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.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.util.collectRealOverrides import org.jetbrains.kotlin.ir.util.collectRealOverrides
import org.jetbrains.kotlin.ir.util.render
val IrFunction.realOverrideTarget: IrFunction val IrFunction.realOverrideTarget: IrFunction
get() = when (this) { get() = when (this) {
@@ -21,5 +22,6 @@ val IrFunction.realOverrideTarget: IrFunction
val IrSimpleFunction.realOverrideTarget: IrSimpleFunction val IrSimpleFunction.realOverrideTarget: IrSimpleFunction
get(): IrSimpleFunction { get(): IrSimpleFunction {
val realOverrides = collectRealOverrides() val realOverrides = collectRealOverrides()
return realOverrides.find { it.modality != Modality.ABSTRACT } ?: realOverrides.first() return realOverrides.find { it.modality != Modality.ABSTRACT } ?: realOverrides.firstOrNull() ?:
error("No real override target found for ${this.render()}")
} }
@@ -12,10 +12,7 @@ import org.jetbrains.kotlin.ir.backend.js.JsLoweredDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrLoop import org.jetbrains.kotlin.ir.expressions.IrLoop
import org.jetbrains.kotlin.ir.types.isUnit import org.jetbrains.kotlin.ir.types.isUnit
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
import org.jetbrains.kotlin.ir.util.isEnumClass
import org.jetbrains.kotlin.ir.util.isInlined
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid
@@ -279,7 +276,7 @@ class NameTables(packages: List<IrPackageFragment>) {
if (name == null && signature is ParameterTypeBasedSignature && signature.suggestedName.startsWith("invoke")) if (name == null && signature is ParameterTypeBasedSignature && signature.suggestedName.startsWith("invoke"))
return signature.suggestedName return signature.suggestedName
require(name != null) { require(name != null) {
"Can't find name for member function $function" "Can't find name for member function ${function.render()}"
} }
return name return name
} }