Skip to content

Commit 56ac5c8

Browse files
Fix crash on raise with non-Name value (#450)
Fixes #449
1 parent 9fe5ca3 commit 56ac5c8

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

README.rst

+6
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,12 @@ MIT
349349
Change Log
350350
----------
351351

352+
Unreleased
353+
~~~~~~~~~~
354+
355+
* B036: Fix crash on `raise` statements raising something other than
356+
a bare name (#450)
357+
352358
24.1.15
353359
~~~~~~~
354360

bugbear.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,9 @@ def visit_Raise(self, node: ast.Raise):
341341
"""If we find a corresponding `raise` or `raise e` where e was from
342342
`except BaseException as e:` then we mark re_raised as True and can
343343
stop scanning."""
344-
if node.exc is None or node.exc.id == self.root.name:
344+
if node.exc is None or (
345+
isinstance(node.exc, ast.Name) and node.exc.id == self.root.name
346+
):
345347
self._re_raised = True
346348
return
347349
return super().generic_visit(node)

tests/b036.py

+5
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,8 @@
5252
pass
5353
except ValueError:
5454
raise # bad - raising within a nested try/except, but not within the main one
55+
56+
try:
57+
pass
58+
except BaseException:
59+
raise a.b from None # bad (regression test for #449)

tests/test_bugbear.py

+1
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,7 @@ def test_b036(self) -> None:
618618
B036(20, 0),
619619
B036(33, 0),
620620
B036(50, 0),
621+
B036(58, 0),
621622
)
622623
self.assertEqual(errors, expected)
623624

0 commit comments

Comments
 (0)