mirror of
https://github.com/github/codeql.git
synced 2026-05-27 09:31:30 +02:00
Adds inline-expectation tests for the new shared CFG implementation in python/ql/lib/semmle/python/controlflow/internal/AstNodeImpl.qll, covering every Python binding construct that introduces a variable. The test files use MISSING: annotations to record bindings whose defining Name AST node is *not* currently reachable from the new CFG. These are the 'red' half of red-green commit pairs: subsequent commits will extend AstNodeImpl to cover each construct and remove the corresponding MISSING: marker. Confirmed-broken categories: - Import aliases (from x import a) - Annotated assignment (x: int = 1) - Exception handler (except E as e) - Match patterns (case x, case [a,b], case ... as v) - PEP 695 type params (def f[T], class C[T]) Confirmed-working (no MISSING:): - Compound targets, with-as, comprehensions, decorated def/class, walrus, starred. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
20 lines
483 B
Python
20 lines
483 B
Python
# Exception-handler name bindings. These are already wired in the new
|
|
# CFG provided the try body can raise; `raise` statements are reliably
|
|
# treated as exception sources.
|
|
|
|
try:
|
|
raise ValueError("oops")
|
|
except ValueError as e: # $ cfgdefines=e
|
|
pass
|
|
|
|
try:
|
|
raise TypeError("oops")
|
|
except (TypeError, KeyError) as err: # $ cfgdefines=err
|
|
pass
|
|
|
|
# Exception groups (Python 3.11+).
|
|
try:
|
|
raise ValueError("oops")
|
|
except* ValueError as eg: # $ cfgdefines=eg
|
|
pass
|