Skip to content

Commit 031fa2b

Browse files
committed
Make CgVariableConstructor generate more base names
1 parent b1075f6 commit 031fa2b

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/CgVariableConstructor.kt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import org.utbot.framework.plugin.api.util.booleanClassId
4949
import org.utbot.framework.plugin.api.util.booleanWrapperClassId
5050
import org.utbot.framework.plugin.api.util.classClassId
5151
import org.utbot.framework.plugin.api.util.defaultValueModel
52+
import org.utbot.framework.plugin.api.util.executable
5253
import org.utbot.framework.plugin.api.util.jField
5354
import org.utbot.framework.plugin.api.util.findFieldByIdOrNull
5455
import org.utbot.framework.plugin.api.util.id
@@ -188,7 +189,7 @@ open class CgVariableConstructor(val context: CgContext) :
188189
}
189190

190191
for ((fieldId, fieldModel) in model.fields) {
191-
val variableForField = getOrCreateVariable(fieldModel)
192+
val variableForField = getOrCreateVariable(fieldModel, name = fieldId.name)
192193
if (!variableForField.hasDefaultValue())
193194
setFieldValue(obj, fieldId, variableForField)
194195
}
@@ -261,7 +262,10 @@ open class CgVariableConstructor(val context: CgContext) :
261262
is UtDirectSetFieldModel -> {
262263
val instance = declareOrGet(statementModel.instance)
263264
// 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+
)
265269
}
266270
is UtStatementCallModel -> {
267271
val call = createCgExecutableCallFromUtExecutableCall(statementModel)
@@ -284,19 +288,18 @@ open class CgVariableConstructor(val context: CgContext) :
284288
when (statementModel) {
285289
is UtExecutableCallModel -> {
286290
val executable = statementModel.executable
291+
val paramNames = runCatching {
292+
executable.executable.parameters.map { if (it.isNamePresent) it.name else null }
293+
}.getOrNull()
287294
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+
}
288299

289300
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())
300303
}
301304
}
302305
is UtDirectGetFieldModel -> {
@@ -512,8 +515,8 @@ open class CgVariableConstructor(val context: CgContext) :
512515
* Either declares a new variable or gets it from context's cache
513516
* Returns the obtained variable
514517
*/
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)
517520

518521
private fun basicForLoop(start: Any, until: Any, body: (i: CgExpression) -> Unit) {
519522
forLoop {

0 commit comments

Comments
 (0)