mirror of https://github.com/python/cpython
bpo-38530: Match exactly AttributeError and NameError when offering suggestions (GH-25443)
This commit is contained in:
parent
3b82cae774
commit
0ad81d4db2
|
@ -1537,6 +1537,21 @@ class NameErrorTests(unittest.TestCase):
|
|||
|
||||
self.assertNotIn("blech", err.getvalue())
|
||||
|
||||
def test_unbound_local_error_doesn_not_match(self):
|
||||
def foo():
|
||||
something = 3
|
||||
print(somethong)
|
||||
somethong = 3
|
||||
|
||||
try:
|
||||
foo()
|
||||
except UnboundLocalError as exc:
|
||||
with support.captured_stderr() as err:
|
||||
sys.__excepthook__(*sys.exc_info())
|
||||
|
||||
self.assertNotIn("something", err.getvalue())
|
||||
|
||||
|
||||
class AttributeErrorTests(unittest.TestCase):
|
||||
def test_attributes(self):
|
||||
# Setting 'attr' should not be a problem.
|
||||
|
|
|
@ -181,9 +181,9 @@ offer_suggestions_for_name_error(PyNameErrorObject *exc) {
|
|||
PyObject *_Py_Offer_Suggestions(PyObject *exception) {
|
||||
PyObject *result = NULL;
|
||||
assert(!PyErr_Occurred());
|
||||
if (PyErr_GivenExceptionMatches(exception, PyExc_AttributeError)) {
|
||||
if (Py_IS_TYPE(exception, (PyTypeObject*)PyExc_AttributeError)) {
|
||||
result = offer_suggestions_for_attribute_error((PyAttributeErrorObject *) exception);
|
||||
} else if (PyErr_GivenExceptionMatches(exception, PyExc_NameError)) {
|
||||
} else if (Py_IS_TYPE(exception, (PyTypeObject*)PyExc_NameError)) {
|
||||
result = offer_suggestions_for_name_error((PyNameErrorObject *) exception);
|
||||
}
|
||||
return result;
|
||||
|
|
Loading…
Reference in New Issue