Skip to content

Commit efef951

Browse files
committed
Fix Arguments#arguments method call
- Make Arguments#arguments method id static. This allowed us to call this method without reflection. Previously we used reflection, because the method id was non-static by mistake. - Construct an array of arguments for Arguments#arguments call. This way we don't have to worry about multiple cases of vararg method calls, but we should think about them later.
1 parent 1229622 commit efef951

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/constructor/tree/CgMethodConstructor.kt

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import org.utbot.framework.codegen.model.constructor.util.EnvironmentFieldStateC
2525
import org.utbot.framework.codegen.model.constructor.util.FieldStateCache
2626
import org.utbot.framework.codegen.model.constructor.util.classCgClassId
2727
import org.utbot.framework.codegen.model.constructor.util.needExpectedDeclaration
28-
import org.utbot.framework.codegen.model.constructor.util.newArrayOf
2928
import org.utbot.framework.codegen.model.constructor.util.overridesEquals
3029
import org.utbot.framework.codegen.model.constructor.util.plus
3130
import org.utbot.framework.codegen.model.constructor.util.typeCast
@@ -120,7 +119,7 @@ import org.utbot.framework.plugin.api.UtVoidModel
120119
import org.utbot.framework.plugin.api.onFailure
121120
import org.utbot.framework.plugin.api.onSuccess
122121
import org.utbot.framework.plugin.api.util.booleanClassId
123-
import org.utbot.framework.plugin.api.util.builtinMethodId
122+
import org.utbot.framework.plugin.api.util.builtinStaticMethodId
124123
import org.utbot.framework.plugin.api.util.doubleArrayClassId
125124
import org.utbot.framework.plugin.api.util.doubleClassId
126125
import org.utbot.framework.plugin.api.util.doubleWrapperClassId
@@ -1421,21 +1420,19 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
14211420
argsVariable: CgVariable,
14221421
arguments: List<CgExpression>,
14231422
) {
1423+
val argsArray = newVar(objectArrayClassId, "testCaseObjects") {
1424+
CgAllocateArray(objectArrayClassId, objectClassId, arguments.size)
1425+
}
1426+
for ((i, argument) in arguments.withIndex()) {
1427+
setArgumentsArrayElement(argsArray, i, argument)
1428+
}
14241429
when (testFramework) {
14251430
Junit5 -> {
14261431
+argsVariable[addToListMethodId](
1427-
argumentsClassId[argumentsMethodId](
1428-
newArrayOf(objectClassId, arguments)
1429-
)
1432+
argumentsClassId[argumentsMethodId](argsArray)
14301433
)
14311434
}
14321435
TestNg -> {
1433-
val argsArray = newVar(objectArrayClassId, "testCaseObjects") {
1434-
CgAllocateArray(Array<Any?>::class.java.id, objectClassId, arguments.size)
1435-
}
1436-
for ((i, argument) in arguments.withIndex()) {
1437-
setArgumentsArrayElement(argsArray, i, argument)
1438-
}
14391436
setArgumentsArrayElement(argsVariable, executionIndex, argsArray)
14401437
}
14411438
Junit4 -> error("Parameterized tests are not supported for JUnit4")
@@ -1535,7 +1532,7 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
15351532
* A [MethodId] to call JUnit Arguments method.
15361533
*/
15371534
private val argumentsMethodId: BuiltinMethodId
1538-
get() = builtinMethodId(
1535+
get() = builtinStaticMethodId(
15391536
classId = argumentsClassId,
15401537
name = "arguments",
15411538
returnType = argumentsClassId,

0 commit comments

Comments
 (0)