@@ -49,6 +49,7 @@ import org.utbot.framework.plugin.api.util.booleanClassId
49
49
import org.utbot.framework.plugin.api.util.booleanWrapperClassId
50
50
import org.utbot.framework.plugin.api.util.classClassId
51
51
import org.utbot.framework.plugin.api.util.defaultValueModel
52
+ import org.utbot.framework.plugin.api.util.executable
52
53
import org.utbot.framework.plugin.api.util.jField
53
54
import org.utbot.framework.plugin.api.util.findFieldByIdOrNull
54
55
import org.utbot.framework.plugin.api.util.id
@@ -188,7 +189,7 @@ open class CgVariableConstructor(val context: CgContext) :
188
189
}
189
190
190
191
for ((fieldId, fieldModel) in model.fields) {
191
- val variableForField = getOrCreateVariable(fieldModel)
192
+ val variableForField = getOrCreateVariable(fieldModel, name = fieldId.name )
192
193
if (! variableForField.hasDefaultValue())
193
194
setFieldValue(obj, fieldId, variableForField)
194
195
}
@@ -261,7 +262,10 @@ open class CgVariableConstructor(val context: CgContext) :
261
262
is UtDirectSetFieldModel -> {
262
263
val instance = declareOrGet(statementModel.instance)
263
264
// fields here are supposed to be accessible, so we assign them directly without any checks
264
- instance[statementModel.fieldId] `= ` declareOrGet(statementModel.fieldModel)
265
+ instance[statementModel.fieldId] `= ` declareOrGet(
266
+ model = statementModel.fieldModel,
267
+ name = statementModel.fieldId.name,
268
+ )
265
269
}
266
270
is UtStatementCallModel -> {
267
271
val call = createCgExecutableCallFromUtExecutableCall(statementModel)
@@ -284,19 +288,18 @@ open class CgVariableConstructor(val context: CgContext) :
284
288
when (statementModel) {
285
289
is UtExecutableCallModel -> {
286
290
val executable = statementModel.executable
291
+ val paramNames = runCatching {
292
+ executable.executable.parameters.map { if (it.isNamePresent) it.name else null }
293
+ }.getOrNull()
287
294
val params = statementModel.params
295
+ val caller = statementModel.instance?.let { declareOrGet(it) }
296
+ val args = params.mapIndexed { i, param ->
297
+ declareOrGet(param, name = paramNames?.getOrNull(i))
298
+ }
288
299
289
300
when (executable) {
290
- is MethodId -> {
291
- val caller = statementModel.instance?.let { declareOrGet(it) }
292
- val args = params.map { declareOrGet(it) }
293
- caller[executable](* args.toTypedArray())
294
- }
295
-
296
- is ConstructorId -> {
297
- val args = params.map { declareOrGet(it) }
298
- executable(* args.toTypedArray())
299
- }
301
+ is MethodId -> caller[executable](* args.toTypedArray())
302
+ is ConstructorId -> executable(* args.toTypedArray())
300
303
}
301
304
}
302
305
is UtDirectGetFieldModel -> {
@@ -512,8 +515,8 @@ open class CgVariableConstructor(val context: CgContext) :
512
515
* Either declares a new variable or gets it from context's cache
513
516
* Returns the obtained variable
514
517
*/
515
- private fun declareOrGet (model : UtModel ): CgValue =
516
- valueByUtModelWrapper[model.wrap()] ? : getOrCreateVariable(model)
518
+ private fun declareOrGet (model : UtModel , name : String? = null ): CgValue =
519
+ valueByUtModelWrapper[model.wrap()] ? : getOrCreateVariable(model, name )
517
520
518
521
private fun basicForLoop (start : Any , until : Any , body : (i: CgExpression ) -> Unit ) {
519
522
forLoop {
0 commit comments