From f2671ffe1785754f0e73d148635cbb38e673e169 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Tue, 25 Apr 2023 19:37:22 -0400 Subject: allow redefinition of functions across match arms (#772) --- pyflakes/checker.py | 4 +++- pyflakes/test/test_match.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pyflakes/checker.py b/pyflakes/checker.py index e654afa..db4da49 100644 --- a/pyflakes/checker.py +++ b/pyflakes/checker.py @@ -29,8 +29,10 @@ parse_format_string = string.Formatter().parse def getAlternatives(n): if isinstance(n, ast.If): return [n.body] - if isinstance(n, ast.Try): + elif isinstance(n, ast.Try): return [n.body + n.orelse] + [[hdl] for hdl in n.handlers] + elif sys.version_info >= (3, 10) and isinstance(n, ast.Match): + return [mc.body for mc in n.cases] FOR_TYPES = (ast.For, ast.AsyncFor) diff --git a/pyflakes/test/test_match.py b/pyflakes/test/test_match.py index 89826e3..b237523 100644 --- a/pyflakes/test/test_match.py +++ b/pyflakes/test/test_match.py @@ -81,3 +81,14 @@ class TestMatch(TestCase): case {'foo': k1, **rest}: print(f'{k1=} {rest=}') ''') + + def test_defined_in_different_branches(self): + self.flakes(''' + def f(x): + match x: + case 1: + def y(): pass + case _: + def y(): print(1) + return y + ''') -- cgit v1.2.1