[IR] Remove some descriptor usage from Common/JS/JVM backends

- replace descriptor-based builders with pure IR ones
 - fix matchers
 - fix Ir2Js
 - rewrite some inliner-helpers to pure-IR implementations
This commit is contained in:
Roman Artemev
2020-08-26 15:48:13 +03:00
parent 8cb8284957
commit fd88914cf9
12 changed files with 90 additions and 42 deletions
@@ -36,7 +36,7 @@ private class VarargTransformer(
// TODO: Use symbols when builtins symbol table is fixes
val primitiveType = context.intrinsics.primitiveArrays
.mapKeys { it.key.descriptor }[type.classifierOrNull?.descriptor]
.mapKeys { it.key }[type.classifierOrNull]
val intrinsic =
if (primitiveType != null)
@@ -188,7 +188,7 @@ fun breakCrossModuleFieldAccess(
return expression.symbol.owner.transformAccess {
val getter = getter()
IrCallImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, getter.returnType, getter.symbol)
IrCallImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, getter.returnType, getter.symbol, getter.typeParameters.size, getter.valueParameters.size)
} ?: expression
}
@@ -197,7 +197,7 @@ fun breakCrossModuleFieldAccess(
return expression.symbol.owner.transformAccess {
val setter = setter()
IrCallImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, setter.returnType, setter.symbol).apply {
IrCallImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, setter.returnType, setter.symbol, setter.typeParameters.size, setter.valueParameters.size).apply {
putValueArgument(0, expression.value)
}
} ?: expression