[JS IR BE] use IrMemberAccessExpression.valueArgumentsCount instead of descriptor based IrFunctionSymbol.parameterCount and remove last one
This commit is contained in:
+6
-5
@@ -5,11 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.backend.js.transformers.irToJs
|
package org.jetbrains.kotlin.ir.backend.js.transformers.irToJs
|
||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.extractParameterNameFromFunctionTypeArgument
|
import org.jetbrains.kotlin.ir.backend.js.utils.JsGenerationContext
|
||||||
import org.jetbrains.kotlin.ir.backend.js.utils.*
|
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.IrClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
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.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||||
import org.jetbrains.kotlin.js.backend.ast.*
|
import org.jetbrains.kotlin.js.backend.ast.*
|
||||||
@@ -77,7 +78,7 @@ class IrElementToJsExpressionTransformer : BaseIrElementToJsNodeTransformer<JsEx
|
|||||||
val callFuncRef = JsNameRef(Namer.CALL_FUNCTION, classNameRef)
|
val callFuncRef = JsNameRef(Namer.CALL_FUNCTION, classNameRef)
|
||||||
val fromPrimary = context.currentFunction is IrConstructor
|
val fromPrimary = context.currentFunction is IrConstructor
|
||||||
val thisRef = if (fromPrimary) JsThisRef() else JsNameRef("\$this")
|
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)
|
return JsInvocation(callFuncRef, listOf(thisRef) + arguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +105,7 @@ class IrElementToJsExpressionTransformer : BaseIrElementToJsNodeTransformer<JsEx
|
|||||||
val extensionReceiver = expression.extensionReceiver?.accept(this, context)
|
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) {
|
return if (symbol is IrConstructorSymbol) {
|
||||||
JsNew(JsNameRef((symbol.owner.parent as IrClass).name.asString()), arguments)
|
JsNew(JsNameRef((symbol.owner.parent as IrClass).name.asString()), arguments)
|
||||||
|
|||||||
+2
-6
@@ -63,14 +63,10 @@ fun translateFunction(declaration: IrFunction, name: JsName?, context: JsGenerat
|
|||||||
return function
|
return function
|
||||||
}
|
}
|
||||||
|
|
||||||
fun translateCallArguments(
|
fun translateCallArguments(expression: IrMemberAccessExpression, context: JsGenerationContext): List<JsExpression> {
|
||||||
expression: IrMemberAccessExpression,
|
|
||||||
parameterCount: Int,
|
|
||||||
context: JsGenerationContext
|
|
||||||
): List<JsExpression> {
|
|
||||||
val transformer = IrElementToJsExpressionTransformer()
|
val transformer = IrElementToJsExpressionTransformer()
|
||||||
// TODO: map to?
|
// TODO: map to?
|
||||||
return (0 until parameterCount).map {
|
return (0 until expression.valueArgumentsCount).map {
|
||||||
val argument = expression.getValueArgument(it)
|
val argument = expression.getValueArgument(it)
|
||||||
argument?.accept(transformer, context) ?: JsPrefixOperation(JsUnaryOperator.VOID, JsIntLiteral(1))
|
argument?.accept(transformer, context) ?: JsPrefixOperation(JsUnaryOperator.VOID, JsIntLiteral(1))
|
||||||
}
|
}
|
||||||
|
|||||||
-2
@@ -8,8 +8,6 @@ package org.jetbrains.kotlin.ir.backend.js.utils
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
import org.jetbrains.kotlin.ir.symbols.*
|
||||||
|
|
||||||
val IrFunctionSymbol.parameterCount get() = descriptor.valueParameters.size
|
|
||||||
|
|
||||||
val IrFunctionSymbol.kind get() = descriptor.kind
|
val IrFunctionSymbol.kind get() = descriptor.kind
|
||||||
|
|
||||||
val IrFunctionSymbol.modality get() = descriptor.modality
|
val IrFunctionSymbol.modality get() = descriptor.modality
|
||||||
|
|||||||
Reference in New Issue
Block a user