mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-02 22:55:08 +00:00
Control flow: return
and raise
(#17121)
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.
This commit is contained in:
parent
755ece0c36
commit
d401a5440e
7 changed files with 194 additions and 14 deletions
18
crates/ruff_python_semantic/resources/test/fixtures/cfg/jumps.py
vendored
Normal file
18
crates/ruff_python_semantic/resources/test/fixtures/cfg/jumps.py
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
def only_return():
|
||||
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("and this")
|
Loading…
Add table
Add a link
Reference in a new issue