[JS IR BE] use IrMemberAccessExpression.valueArgumentsCount instead of descriptor based IrFunctionSymbol.parameterCount and remove last one

This commit is contained in:
Zalim Bashorov
2018-04-14 06:43:30 +03:00
parent 1fb2b40684
commit 194f5d575a
3 changed files with 8 additions and 13 deletions
@@ -5,11 +5,12 @@
package org.jetbrains.kotlin.ir.backend.js.transformers.irToJs
import org.jetbrains.kotlin.builtins.extractParameterNameFromFunctionTypeArgument
import org.jetbrains.kotlin.ir.backend.js.utils.*
import org.jetbrains.kotlin.ir.backend.js.utils.JsGenerationContext
import org.jetbrains.kotlin.ir.backend.js.utils.Namer
import org.jetbrains.kotlin.ir.backend.js.utils.isSpecial
import org.jetbrains.kotlin.ir.backend.js.utils.name
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrConstructor
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.js.backend.ast.*
@@ -77,7 +78,7 @@ class IrElementToJsExpressionTransformer : BaseIrElementToJsNodeTransformer<JsEx
val callFuncRef = JsNameRef(Namer.CALL_FUNCTION, classNameRef)
val fromPrimary = context.currentFunction is IrConstructor
val thisRef = if (fromPrimary) JsThisRef() else JsNameRef("\$this")
val arguments = translateCallArguments(expression, expression.symbol.parameterCount, context)
val arguments = translateCallArguments(expression, context)
return JsInvocation(callFuncRef, listOf(thisRef) + arguments)
}
@@ -104,7 +105,7 @@ class IrElementToJsExpressionTransformer : BaseIrElementToJsNodeTransformer<JsEx
val extensionReceiver = expression.extensionReceiver?.accept(this, context)
val arguments = translateCallArguments(expression, expression.symbol.parameterCount, context)
val arguments = translateCallArguments(expression, context)
return if (symbol is IrConstructorSymbol) {
JsNew(JsNameRef((symbol.owner.parent as IrClass).name.asString()), arguments)
@@ -63,14 +63,10 @@ fun translateFunction(declaration: IrFunction, name: JsName?, context: JsGenerat
return function
}
fun translateCallArguments(
expression: IrMemberAccessExpression,
parameterCount: Int,
context: JsGenerationContext
): List<JsExpression> {
fun translateCallArguments(expression: IrMemberAccessExpression, context: JsGenerationContext): List<JsExpression> {
val transformer = IrElementToJsExpressionTransformer()
// TODO: map to?
return (0 until parameterCount).map {
return (0 until expression.valueArgumentsCount).map {
val argument = expression.getValueArgument(it)
argument?.accept(transformer, context) ?: JsPrefixOperation(JsUnaryOperator.VOID, JsIntLiteral(1))
}
@@ -8,8 +8,6 @@ package org.jetbrains.kotlin.ir.backend.js.utils
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.ir.symbols.*
val IrFunctionSymbol.parameterCount get() = descriptor.valueParameters.size
val IrFunctionSymbol.kind get() = descriptor.kind
val IrFunctionSymbol.modality get() = descriptor.modality