--- ../cpython3.9clean/Python/compile.c 2019-08-29 14:40:54.838938316 +0200 +++ Python/compile.c 2019-08-29 15:50:43.151922339 +0200 @@ -2213,10 +2213,21 @@ Py_DECREF(qualname); Py_DECREF(co); - /* decorators */ - for (i = 0; i < asdl_seq_LEN(decos); i++) { - ADDOP_I(c, CALL_FUNCTION, 1); - } + if(asdl_seq_LEN(decos)){ + int old_lineno = c->u->u_lineno; + int old_col_offset = c->u->u_col_offset; + /* decorators */ + for (i = asdl_seq_LEN(decos) - 1; i >=0 ; i--) { + expr_ty name = (expr_ty)asdl_seq_GET(decos, i); + c->u->u_lineno = name->lineno; + c->u->u_col_offset = name->col_offset; + c->u->u_lineno_set = 0; + ADDOP_I(c, CALL_FUNCTION, 1); + } + c->u->u_lineno = old_lineno; + c->u->u_col_offset = old_col_offset; + c->u->u_lineno_set = 0; + } return compiler_nameop(c, name, Store); } @@ -2345,9 +2356,21 @@ return 0; /* 6. apply decorators */ - for (i = 0; i < asdl_seq_LEN(decos); i++) { - ADDOP_I(c, CALL_FUNCTION, 1); - } + if(asdl_seq_LEN(decos)){ + int old_lineno = c->u->u_lineno; + int old_col_offset = c->u->u_col_offset; + /* decorators */ + for (i = asdl_seq_LEN(decos) - 1; i >=0 ; i--) { + expr_ty name = (expr_ty)asdl_seq_GET(decos, i); + c->u->u_lineno = name->lineno; + c->u->u_col_offset = name->col_offset; + c->u->u_lineno_set = 0; + ADDOP_I(c, CALL_FUNCTION, 1); + } + c->u->u_lineno = old_lineno; + c->u->u_col_offset = old_col_offset; + c->u->u_lineno_set = 0; + } /* 7. store into */ if (!compiler_nameop(c, s->v.ClassDef.name, Store))