Allow classes to be defined with empty parentheses. This means that

``class C(): pass`` is no longer a syntax error.
This commit is contained in:
Brett Cannon 2005-03-05 06:47:57 +00:00
parent 653a5adcca
commit 409d8f2ebd
4 changed files with 14 additions and 9 deletions

View File

@ -99,7 +99,7 @@ testlist: test (',' test)* [',']
testlist_safe: test [(',' test)+ [',']] testlist_safe: test [(',' test)+ [',']]
dictmaker: test ':' test (',' test ':' test)* [','] dictmaker: test ':' test (',' test ':' test)* [',']
classdef: 'class' NAME ['(' testlist ')'] ':' suite classdef: 'class' NAME ['(' [testlist] ')'] ':' suite
arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] | '**' test) arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] | '**' test)
argument: [test '='] test [gen_for] # Really [keyword '='] test argument: [test '='] test [gen_for] # Really [keyword '='] test

View File

@ -10,6 +10,9 @@ What's New in Python 2.5 alpha 1?
Core and builtins 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. - Patch #1115086: Support PY_LONGLONG in structmember.
- Bug #1155938: new style classes did not check that __init__() was - Bug #1155938: new style classes did not check that __init__() was

View File

@ -4624,7 +4624,7 @@ com_classdef(struct compiling *c, node *n)
char *name; char *name;
REQ(n, classdef); REQ(n, classdef);
/* classdef: class NAME ['(' testlist ')'] ':' suite */ /* classdef: class NAME ['(' [testlist] ')'] ':' suite */
if ((v = PyString_InternFromString(STR(CHILD(n, 1)))) == NULL) { if ((v = PyString_InternFromString(STR(CHILD(n, 1)))) == NULL) {
c->c_errors++; c->c_errors++;
return; return;
@ -4635,7 +4635,8 @@ com_classdef(struct compiling *c, node *n)
com_push(c, 1); com_push(c, 1);
Py_DECREF(v); Py_DECREF(v);
/* Push the tuple of base classes on the stack */ /* 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_addoparg(c, BUILD_TUPLE, 0);
com_push(c, 1); com_push(c, 1);
} }

View File

@ -1426,26 +1426,27 @@ static arc arcs_67_2[2] = {
{13, 3}, {13, 3},
{21, 4}, {21, 4},
}; };
static arc arcs_67_3[1] = { static arc arcs_67_3[2] = {
{9, 5}, {9, 5},
{15, 6},
}; };
static arc arcs_67_4[1] = { static arc arcs_67_4[1] = {
{22, 6}, {22, 7},
}; };
static arc arcs_67_5[1] = { static arc arcs_67_5[1] = {
{15, 7}, {15, 6},
}; };
static arc arcs_67_6[1] = { static arc arcs_67_6[1] = {
{0, 6}, {21, 4},
}; };
static arc arcs_67_7[1] = { static arc arcs_67_7[1] = {
{21, 4}, {0, 7},
}; };
static state states_67[8] = { static state states_67[8] = {
{1, arcs_67_0}, {1, arcs_67_0},
{1, arcs_67_1}, {1, arcs_67_1},
{2, arcs_67_2}, {2, arcs_67_2},
{1, arcs_67_3}, {2, arcs_67_3},
{1, arcs_67_4}, {1, arcs_67_4},
{1, arcs_67_5}, {1, arcs_67_5},
{1, arcs_67_6}, {1, arcs_67_6},