Mercurial > cpython-lru_cache-weakref
diff Modules/parsermodule.c @ 62767:ecd71b6127e4 2.7
Issue #9128: Validate class decorator syntax correctly in parser module.
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Sun, 04 Jul 2010 16:23:54 +0000 |
| parents | c5afe9552779 |
| children | 383039ef26a0 |
line wrap: on
line diff
--- a/Modules/parsermodule.c Sun Jul 04 14:24:40 2010 +0000 +++ b/Modules/parsermodule.c Sun Jul 04 16:23:54 2010 +0000 @@ -2682,14 +2682,15 @@ static int validate_decorated(node *tree) { - int nch = NCH(tree); - int ok = (validate_ntype(tree, decorated) - && (nch == 2) - && validate_decorators(RCHILD(tree, -2)) - && (validate_funcdef(RCHILD(tree, -1)) - || validate_class(RCHILD(tree, -1))) - ); - return ok; + int nch = NCH(tree); + int ok = (validate_ntype(tree, decorated) + && (nch == 2) + && validate_decorators(RCHILD(tree, -2))); + if (TYPE(RCHILD(tree, -1)) == funcdef) + ok = ok && validate_funcdef(RCHILD(tree, -1)); + else + ok = ok && validate_class(RCHILD(tree, -1)); + return ok; } static int
