Commit f0537e8d authored by Larry Hastings's avatar Larry Hastings

Issue #20390: Final fix, for generating NoPositional/NoKeyword for __init__ calls.

parent 0711dd92
...@@ -133,7 +133,7 @@ Library ...@@ -133,7 +133,7 @@ Library
IDLE IDLE
---- ----
--Issue #17390: Add Python version to Idle editor window title bar. - Issue #17390: Add Python version to Idle editor window title bar.
Original patches by Edmond Burnett and Kent Johnson. Original patches by Edmond Burnett and Kent Johnson.
- Issue #18960: IDLE now ignores the source encoding declaration on the second - Issue #18960: IDLE now ignores the source encoding declaration on the second
......
...@@ -75,7 +75,8 @@ _bz2_BZ2Compressor___init__(PyObject *self, PyObject *args, PyObject *kwargs) ...@@ -75,7 +75,8 @@ _bz2_BZ2Compressor___init__(PyObject *self, PyObject *args, PyObject *kwargs)
int return_value = -1; int return_value = -1;
int compresslevel = 9; int compresslevel = 9;
if (!_PyArg_NoKeywords("BZ2Compressor", kwargs)) if ((Py_TYPE(self) == &BZ2Compressor_Type) &&
!_PyArg_NoKeywords("BZ2Compressor", kwargs))
goto exit; goto exit;
if (!PyArg_ParseTuple(args, if (!PyArg_ParseTuple(args,
"|i:BZ2Compressor", "|i:BZ2Compressor",
...@@ -137,13 +138,15 @@ _bz2_BZ2Decompressor___init__(PyObject *self, PyObject *args, PyObject *kwargs) ...@@ -137,13 +138,15 @@ _bz2_BZ2Decompressor___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{ {
int return_value = -1; int return_value = -1;
if (!_PyArg_NoPositional("BZ2Decompressor", args)) if ((Py_TYPE(self) == &BZ2Decompressor_Type) &&
!_PyArg_NoPositional("BZ2Decompressor", args))
goto exit; goto exit;
if (!_PyArg_NoKeywords("BZ2Decompressor", kwargs)) if ((Py_TYPE(self) == &BZ2Decompressor_Type) &&
!_PyArg_NoKeywords("BZ2Decompressor", kwargs))
goto exit; goto exit;
return_value = _bz2_BZ2Decompressor___init___impl((BZ2Decompressor *)self); return_value = _bz2_BZ2Decompressor___init___impl((BZ2Decompressor *)self);
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: checksum=9bb33ae7d35494b7a5365f03f390e4b5b8b1bc49]*/ /*[clinic end generated code: checksum=4ade1dba3921a8bd8a614e5417f7654d8fb10be5]*/
...@@ -2593,11 +2593,21 @@ class self_converter(CConverter): ...@@ -2593,11 +2593,21 @@ class self_converter(CConverter):
def set_template_dict(self, template_dict): def set_template_dict(self, template_dict):
template_dict['self_name'] = self.name template_dict['self_name'] = self.name
template_dict['self_type'] = self.parser_type template_dict['self_type'] = self.parser_type
if ((self.function.kind == METHOD_NEW) and kind = self.function.kind
self.function.cls and cls = self.function.cls
self.function.cls.typedef):
template_dict['self_type_object'] = self.function.cls.type_object if ((kind in (METHOD_NEW, METHOD_INIT)) and cls and cls.typedef):
template_dict['self_type_check'] = '({self_name} == {self_type_object}) &&\n '.format_map(template_dict) if kind == METHOD_NEW:
passed_in_type = self.name
else:
passed_in_type = 'Py_TYPE({})'.format(self.name)
line = '({passed_in_type} == {type_object}) &&\n '
d = {
'type_object': self.function.cls.type_object,
'passed_in_type': passed_in_type
}
template_dict['self_type_check'] = line.format_map(d)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment