mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 18:58:04 +00:00

We add support for `return` and `raise` statements in the control flow graph: we simply add an edge to the terminal block, push the statements to the current block, and proceed. This implementation will have to be modified somewhat once we add support for `try` statements - then we will need to check whether to _defer_ the jump. But for now this will do! Also in this PR: We fix the `unreachable` diagnostic range so that it lumps together consecutive unreachable blocks.
30 lines
516 B
Python
30 lines
516 B
Python
def empty_statement_reachable(): ...
|
|
|
|
def pass_statement_reachable():
|
|
pass
|
|
|
|
def no_control_flow_reachable():
|
|
x = 1
|
|
x = 2
|
|
class C:
|
|
a = 2
|
|
c = C()
|
|
del c
|
|
def foo():
|
|
return
|
|
|
|
def after_return():
|
|
return 1
|
|
print("unreachable")
|
|
print("and this")
|
|
|
|
def after_raise():
|
|
raise ValueError
|
|
print("unreachable")
|
|
print("and this")
|
|
|
|
def multiple_returns():
|
|
return 1
|
|
print("unreachable")
|
|
return 2
|
|
print("unreachable range should include above return")
|