in tools/sql_extraction/src/main/kotlin/PythonAnalyzer.kt [57:88]
override fun visitExpr_stmt(ctx: Python3Parser.Expr_stmtContext?) {
if (ctx!!.annassign() != null) {
// typed assignment
val varName = ctx.testlist_star_expr()[0].text
dataFlowEngine.declareVariable(varName)
if (ctx.annassign().ASSIGN() != null) {
dataFlowEngine.visitAssignment(varName, { ctx.annassign().test(1).accept(this) })
}
} else if (ctx.augassign() != null) {
// +=
dataFlowEngine.visitAssignment(
ctx.testlist_star_expr()[0].text,
{ ctx.getChild(2).accept(this) },
true
)
} else if (!ctx.ASSIGN().isNullOrEmpty()) {
// = (potentially multiple assigns)
var isFirst = true
for (assignIndex in (ctx.childCount - 2) downTo 1 step 2) {
dataFlowEngine.visitAssignmentWithOptionalDeclaration(
ctx.getChild(assignIndex - 1).text
) {
if (isFirst) {
ctx.getChild(assignIndex + 1).accept(this)
isFirst = false
}
}
}
} else {
visitChildren(ctx)
}
}