fix error message for match (#2649)
Fixes #2648. Co-authored-by: Batuhan Taskaya <isidentical@gmail.com>
This commit is contained in:
parent
5e2bb528e0
commit
0f7cf9187f
@ -15,6 +15,7 @@
|
|||||||
times, like `match re.match()` (#2661)
|
times, like `match re.match()` (#2661)
|
||||||
- Fix assignment to environment variables in Jupyter Notebooks (#2642)
|
- Fix assignment to environment variables in Jupyter Notebooks (#2642)
|
||||||
- Add `flake8-simplify` and `flake8-comprehensions` plugins (#2653)
|
- Add `flake8-simplify` and `flake8-comprehensions` plugins (#2653)
|
||||||
|
- Fix parser error location on invalid syntax in a `match` statement (#2649)
|
||||||
|
|
||||||
## 21.11b1
|
## 21.11b1
|
||||||
|
|
||||||
|
@ -75,8 +75,10 @@ def get_grammars(target_versions: Set[TargetVersion]) -> List[Grammar]:
|
|||||||
# Python 3.10+
|
# Python 3.10+
|
||||||
grammars.append(pygram.python_grammar_soft_keywords)
|
grammars.append(pygram.python_grammar_soft_keywords)
|
||||||
# If we have to parse both, try to parse async as a keyword first
|
# If we have to parse both, try to parse async as a keyword first
|
||||||
if not supports_feature(target_versions, Feature.ASYNC_IDENTIFIERS):
|
if not supports_feature(
|
||||||
# Python 3.7+
|
target_versions, Feature.ASYNC_IDENTIFIERS
|
||||||
|
) and not supports_feature(target_versions, Feature.PATTERN_MATCHING):
|
||||||
|
# Python 3.7-3.9
|
||||||
grammars.append(
|
grammars.append(
|
||||||
pygram.python_grammar_no_print_statement_no_exec_statement_async_keywords
|
pygram.python_grammar_no_print_statement_no_exec_statement_async_keywords
|
||||||
)
|
)
|
||||||
|
18
tests/data/pattern_matching_invalid.py
Normal file
18
tests/data/pattern_matching_invalid.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# First match, no errors
|
||||||
|
match something:
|
||||||
|
case bla():
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Problem on line 10
|
||||||
|
match invalid_case:
|
||||||
|
case valid_case:
|
||||||
|
pass
|
||||||
|
case a := b:
|
||||||
|
pass
|
||||||
|
case valid_case:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# No problems either
|
||||||
|
match something:
|
||||||
|
case bla():
|
||||||
|
pass
|
@ -200,6 +200,15 @@ def test_python_310(filename: str) -> None:
|
|||||||
assert_format(source, expected, mode, minimum_version=(3, 10))
|
assert_format(source, expected, mode, minimum_version=(3, 10))
|
||||||
|
|
||||||
|
|
||||||
|
def test_patma_invalid() -> None:
|
||||||
|
source, expected = read_data("pattern_matching_invalid")
|
||||||
|
mode = black.Mode(target_versions={black.TargetVersion.PY310})
|
||||||
|
with pytest.raises(black.parsing.InvalidInput) as exc_info:
|
||||||
|
assert_format(source, expected, mode, minimum_version=(3, 10))
|
||||||
|
|
||||||
|
exc_info.match("Cannot parse: 10:11")
|
||||||
|
|
||||||
|
|
||||||
def test_docstring_no_string_normalization() -> None:
|
def test_docstring_no_string_normalization() -> None:
|
||||||
"""Like test_docstring but with string normalization off."""
|
"""Like test_docstring but with string normalization off."""
|
||||||
source, expected = read_data("docstring_no_string_normalization")
|
source, expected = read_data("docstring_no_string_normalization")
|
||||||
|
Loading…
Reference in New Issue
Block a user