Skip to content

Commit 371b013

Browse files
committed
Update codegen
1 parent da6f9ba commit 371b013

File tree

5 files changed

+30
-39
lines changed

5 files changed

+30
-39
lines changed

utbot-python/src/main/kotlin/org/utbot/python/framework/codegen/model/PythonCodeGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,11 @@ class PythonCodeGenerator(
143143
val parameters = methodArguments.zip(arguments).map { (model, argument) ->
144144
if (model is PythonTreeModel) {
145145
val obj = (context.cgLanguageAssistant.getVariableConstructorBy(context) as PythonCgVariableConstructor).getOrCreateVariable(model)
146-
(obj as CgPythonTree).children.forEach { it.accept(renderer) }
146+
// (obj as CgPythonTree).children.forEach { it.accept(renderer) }
147147

148148
CgAssignment(
149149
argument,
150-
obj.value
150+
(obj as CgPythonTree).value
151151
)
152152
} else {
153153
CgAssignment(argument, CgLiteral(model.classId, model.toString()))

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import org.utbot.framework.codegen.domain.models.CgAssignment
66
import org.utbot.framework.codegen.domain.models.CgConstructorCall
77
import org.utbot.framework.codegen.domain.models.CgExecutableCall
88
import org.utbot.framework.codegen.domain.models.CgExpression
9+
import org.utbot.framework.codegen.domain.models.CgFieldAccess
910
import org.utbot.framework.codegen.domain.models.CgMethodCall
1011
import org.utbot.framework.codegen.domain.models.CgStaticFieldAccess
1112
import org.utbot.framework.codegen.domain.models.CgThisInstance
@@ -36,7 +37,7 @@ class PythonCgCallableAccessManagerImpl(val context: CgContext) : CgCallableAcce
3637
CgIncompleteMethodCall(staticMethodId, CgThisInstance(pythonAnyClassId))
3738

3839
override fun CgExpression.get(fieldId: FieldId): CgExpression {
39-
TODO("Not yet implemented")
40+
return CgFieldAccess(this, fieldId)
4041
}
4142

4243
override fun ClassId.get(fieldId: FieldId): CgStaticFieldAccess {
@@ -55,7 +56,7 @@ class PythonCgCallableAccessManagerImpl(val context: CgContext) : CgCallableAcce
5556
args.forEach { arg ->
5657
if (arg is CgPythonTree) {
5758
resolvedArgs.add(arg.value)
58-
arg.children.forEach { +it }
59+
// arg.children.forEach { +it }
5960
} else {
6061
resolvedArgs.add(arg as CgExpression)
6162
}

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

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ class PythonCgVariableConstructor(context_: CgContext) : CgVariableConstructor(c
2929
is PythonBoolModel -> CgLiteral(model.classId, model.value)
3030
is PythonPrimitiveModel -> CgLiteral(model.classId, model.value)
3131
is PythonTreeModel -> {
32-
val (value, children) = pythonBuildObject2(model.tree)
33-
CgPythonTree(model.classId, model.tree, value, children)
32+
val value = pythonBuildObject2(model.tree)
33+
CgPythonTree(model.classId, model.tree, value)
3434
}
3535
is PythonInitObjectModel -> constructInitObjectModel(model, baseName)
3636
is PythonDictModel -> CgPythonDict(model.stores.map {
@@ -58,51 +58,45 @@ class PythonCgVariableConstructor(context_: CgContext) : CgVariableConstructor(c
5858
}
5959
}
6060

61-
private fun pythonBuildObject2(objectNode: PythonTree.PythonTreeNode): Pair<CgValue, List<CgStatement>> {
61+
private fun pythonBuildObject2(objectNode: PythonTree.PythonTreeNode): CgValue {
6262
return when (objectNode) {
6363
is PythonTree.PrimitiveNode -> {
64-
Pair(CgLiteral(objectNode.type, objectNode.repr), emptyList())
64+
CgLiteral(objectNode.type, objectNode.repr)
6565
}
6666

6767
is PythonTree.ListNode -> {
6868
val items = objectNode.items.values.map { pythonBuildObject2(it) }
69-
Pair(CgPythonList(items.map { it.first }), items.flatMap { it.second })
69+
CgPythonList(items)
7070
}
7171

7272
is PythonTree.TupleNode -> {
7373
val items = objectNode.items.values.map { pythonBuildObject2(it) }
74-
Pair(CgPythonTuple(items.map { it.first }), items.flatMap { it.second })
74+
CgPythonTuple(items)
7575
}
7676

7777
is PythonTree.SetNode -> {
7878
val items = objectNode.items.map { pythonBuildObject2(it) }
79-
Pair(CgPythonSet(items.map { it.first }.toSet()), items.flatMap { it.second })
79+
CgPythonSet(items.toSet())
8080
}
8181

8282
is PythonTree.DictNode -> {
8383
val keys = objectNode.items.keys.map { pythonBuildObject2(it) }
8484
val values = objectNode.items.values.map { pythonBuildObject2(it) }
85-
Pair(CgPythonDict(
86-
keys.zip(values).map { (key, value) ->
87-
key.first to value.first
88-
}.toMap()
89-
), keys.flatMap { it.second } + values.flatMap { it.second })
85+
CgPythonDict(
86+
keys.zip(values).associate { (key, value) ->
87+
key to value
88+
}
89+
)
9090
}
9191

9292
is PythonTree.ReduceNode -> {
9393
val id = objectNode.id
94-
val children = emptyList<CgStatement>().toMutableList()
9594
if ((context.cgLanguageAssistant as PythonCgLanguageAssistant).memoryObjects.containsKey(id)) {
96-
return Pair(
97-
(context.cgLanguageAssistant as PythonCgLanguageAssistant).memoryObjects[id]!!,
98-
children
99-
)
95+
return (context.cgLanguageAssistant as PythonCgLanguageAssistant).memoryObjects[id]!!
10096
}
10197

10298
val initArgs = objectNode.args.map {
103-
val buildObj = pythonBuildObject2(it)
104-
children += buildObj.second
105-
buildObj.first
99+
pythonBuildObject2(it)
106100
}
107101
val constructor = ConstructorId(
108102
objectNode.constructor,
@@ -112,31 +106,27 @@ class PythonCgVariableConstructor(context_: CgContext) : CgVariableConstructor(c
112106
val obj = newVar(objectNode.type) {
113107
constructorCall
114108
}
115-
children.add(CgAssignment(obj, constructorCall))
109+
// obj `=` constructorCall
116110

117111
(context.cgLanguageAssistant as PythonCgLanguageAssistant).memoryObjects[id] = obj
118112

119113
val state = objectNode.state.map { (key, value) ->
120114
val buildObj = pythonBuildObject2(value)
121-
children.addAll(buildObj.second)
122-
key to buildObj.first
115+
key to buildObj
123116
}.toMap()
124117
val listitems = objectNode.listitems.map {
125118
val buildObj = pythonBuildObject2(it)
126-
children.addAll(buildObj.second)
127-
buildObj.first
119+
buildObj
128120
}
129121
val dictitems = objectNode.dictitems.map { (key, value) ->
130122
val keyObj = pythonBuildObject2(key)
131123
val valueObj = pythonBuildObject2(value)
132-
children.addAll(keyObj.second)
133-
children.addAll(valueObj.second)
134-
keyObj.first to valueObj.first
124+
keyObj to valueObj
135125
}
136126

137127
state.forEach { (key, value) ->
138-
val fieldAccess = CgFieldAccess(obj, FieldId(objectNode.type, key))
139-
children.add(CgAssignment(fieldAccess, value))
128+
// val fieldAccess = CgFieldAccess(obj, FieldId(objectNode.type, key))
129+
obj[FieldId(objectNode.type, key)] `=` value
140130
}
141131
listitems.forEach {
142132
val methodCall = CgMethodCall(
@@ -149,18 +139,18 @@ class PythonCgVariableConstructor(context_: CgContext) : CgVariableConstructor(c
149139
),
150140
listOf(it)
151141
)
152-
children.add(methodCall)
142+
+methodCall
153143
}
154144
dictitems.forEach { (key, value) ->
155145
val index = CgPythonIndex(
156146
value.type as PythonClassId,
157147
obj,
158148
key
159149
)
160-
children.add(CgAssignment(index, value))
150+
index `=` value
161151
}
162152

163-
return Pair(obj, children)
153+
return obj
164154
}
165155

166156
else -> {

utbot-python/src/main/kotlin/org/utbot/python/framework/codegen/model/constructor/visitor/CgPythonRenderer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ internal class CgPythonRenderer(
509509
}
510510

511511
override fun visit(element: CgPythonTree) {
512-
element.children.forEach { it.accept(this) }
512+
// element.children.forEach { it.accept(this) }
513513
element.value.accept(this)
514514
}
515515

utbot-python/src/main/kotlin/org/utbot/python/framework/codegen/model/tree/CgPythonElement.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class CgPythonTree(
3939
override val type: ClassId,
4040
val tree: PythonTree.PythonTreeNode,
4141
val value: CgValue,
42-
val children: List<CgStatement> = emptyList()
42+
// val children: List<CgStatement> = emptyList()
4343
) : CgValue, CgPythonElement
4444

4545
class CgPythonRepr(

0 commit comments

Comments
 (0)