mirror of
https://github.com/python/cpython.git
synced 2025-08-31 22:18:28 +00:00
bpo-38530: Match exactly AttributeError and NameError when offering suggestions (GH-25443)
This commit is contained in:
parent
3b82cae774
commit
0ad81d4db2
2 changed files with 17 additions and 2 deletions
|
@ -1537,6 +1537,21 @@ class NameErrorTests(unittest.TestCase):
|
||||||
|
|
||||||
self.assertNotIn("blech", err.getvalue())
|
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):
|
class AttributeErrorTests(unittest.TestCase):
|
||||||
def test_attributes(self):
|
def test_attributes(self):
|
||||||
# Setting 'attr' should not be a problem.
|
# 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 *_Py_Offer_Suggestions(PyObject *exception) {
|
||||||
PyObject *result = NULL;
|
PyObject *result = NULL;
|
||||||
assert(!PyErr_Occurred());
|
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);
|
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);
|
result = offer_suggestions_for_name_error((PyNameErrorObject *) exception);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue