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:
parent
653a5adcca
commit
409d8f2ebd
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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},
|
||||||
|
|
Loading…
Reference in New Issue