override fun visitExpr_stmt()

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)
        }
    }