summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_exceptions.py15
-rw-r--r--Python/suggestions.c4
2 files changed, 17 insertions, 2 deletions
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index ebeb67b..bd20b23 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -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.
diff --git a/Python/suggestions.c b/Python/suggestions.c
index 258e3f1..e422760 100644
--- a/Python/suggestions.c
+++ b/Python/suggestions.c
@@ -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;