diff options
author | Brett Cannon <bcannon@gmail.com> | 2005-03-05 06:47:57 (GMT) |
---|---|---|
committer | Brett Cannon <bcannon@gmail.com> | 2005-03-05 06:47:57 (GMT) |
commit | 409d8f2ebdf597837c593a40659949e5b15f457d (patch) | |
tree | 65efd1daca556adb53a28d3957ba57dc801e0dda | |
parent | 653a5adcca68d445b21dd2a640627f0f0185204a (diff) | |
download | cpython-409d8f2ebdf597837c593a40659949e5b15f457d.zip cpython-409d8f2ebdf597837c593a40659949e5b15f457d.tar.gz cpython-409d8f2ebdf597837c593a40659949e5b15f457d.tar.bz2 |
Allow classes to be defined with empty parentheses. This means that
``class C(): pass`` is no longer a syntax error.
-rw-r--r-- | Grammar/Grammar | 2 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Python/compile.c | 5 | ||||
-rw-r--r-- | Python/graminit.c | 13 |
4 files changed, 14 insertions, 9 deletions
diff --git a/Grammar/Grammar b/Grammar/Grammar index 9e4dad8..7b6acf7 100644 --- a/Grammar/Grammar +++ b/Grammar/Grammar @@ -99,7 +99,7 @@ testlist: test (',' test)* [','] testlist_safe: test [(',' test)+ [',']] dictmaker: test ':' test (',' test ':' test)* [','] -classdef: 'class' NAME ['(' testlist ')'] ':' suite +classdef: 'class' NAME ['(' [testlist] ')'] ':' suite arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] | '**' test) argument: [test '='] test [gen_for] # Really [keyword '='] test @@ -10,6 +10,9 @@ What's New in Python 2.5 alpha 1? Core and builtins ----------------- +- Defining a class with empty parentheses is now allowed + (e.g., ``class C(): pass`` is no longer a syntax error) + - Patch #1115086: Support PY_LONGLONG in structmember. - Bug #1155938: new style classes did not check that __init__() was diff --git a/Python/compile.c b/Python/compile.c index 16bf291..5781b21 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4624,7 +4624,7 @@ com_classdef(struct compiling *c, node *n) char *name; REQ(n, classdef); - /* classdef: class NAME ['(' testlist ')'] ':' suite */ + /* classdef: class NAME ['(' [testlist] ')'] ':' suite */ if ((v = PyString_InternFromString(STR(CHILD(n, 1)))) == NULL) { c->c_errors++; return; @@ -4635,7 +4635,8 @@ com_classdef(struct compiling *c, node *n) com_push(c, 1); Py_DECREF(v); /* Push the tuple of base classes on the stack */ - if (TYPE(CHILD(n, 2)) != LPAR) { + if (TYPE(CHILD(n, 2)) != LPAR || + TYPE(CHILD(n, 3)) == RPAR) { com_addoparg(c, BUILD_TUPLE, 0); com_push(c, 1); } diff --git a/Python/graminit.c b/Python/graminit.c index c4fe661..464f0ae 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -1426,26 +1426,27 @@ static arc arcs_67_2[2] = { {13, 3}, {21, 4}, }; -static arc arcs_67_3[1] = { +static arc arcs_67_3[2] = { {9, 5}, + {15, 6}, }; static arc arcs_67_4[1] = { - {22, 6}, + {22, 7}, }; static arc arcs_67_5[1] = { - {15, 7}, + {15, 6}, }; static arc arcs_67_6[1] = { - {0, 6}, + {21, 4}, }; static arc arcs_67_7[1] = { - {21, 4}, + {0, 7}, }; static state states_67[8] = { {1, arcs_67_0}, {1, arcs_67_1}, {2, arcs_67_2}, - {1, arcs_67_3}, + {2, arcs_67_3}, {1, arcs_67_4}, {1, arcs_67_5}, {1, arcs_67_6}, |