mirror of
https://github.com/python/cpython.git
synced 2025-10-25 18:54:53 +00:00
gh-136801: Fix PyREPL syntax highlightning on match cases after multi-line case (GH-136804)
This commit is contained in:
parent
6a1c93af80
commit
3a64844533
3 changed files with 10 additions and 7 deletions
|
|
@ -241,14 +241,14 @@ def is_soft_keyword_used(*tokens: TI | None) -> bool:
|
||||||
return s in keyword_first_sets_match
|
return s in keyword_first_sets_match
|
||||||
return True
|
return True
|
||||||
case (
|
case (
|
||||||
None | TI(T.NEWLINE) | TI(T.INDENT) | TI(string=":"),
|
None | TI(T.NEWLINE) | TI(T.INDENT) | TI(T.DEDENT) | TI(string=":"),
|
||||||
TI(string="case"),
|
TI(string="case"),
|
||||||
TI(T.NUMBER | T.STRING | T.FSTRING_START | T.TSTRING_START)
|
TI(T.NUMBER | T.STRING | T.FSTRING_START | T.TSTRING_START)
|
||||||
| TI(T.OP, string="(" | "*" | "-" | "[" | "{")
|
| TI(T.OP, string="(" | "*" | "-" | "[" | "{")
|
||||||
):
|
):
|
||||||
return True
|
return True
|
||||||
case (
|
case (
|
||||||
None | TI(T.NEWLINE) | TI(T.INDENT) | TI(string=":"),
|
None | TI(T.NEWLINE) | TI(T.INDENT) | TI(T.DEDENT) | TI(string=":"),
|
||||||
TI(string="case"),
|
TI(string="case"),
|
||||||
TI(T.NAME, string=s)
|
TI(T.NAME, string=s)
|
||||||
):
|
):
|
||||||
|
|
|
||||||
|
|
@ -375,7 +375,8 @@ def funct(case: str = sys.platform) -> None:
|
||||||
)
|
)
|
||||||
match case:
|
match case:
|
||||||
case "emscripten": print("on the web")
|
case "emscripten": print("on the web")
|
||||||
case "ios" | "android": print("on the phone")
|
case "ios" | "android":
|
||||||
|
print("on the phone")
|
||||||
case _: print('arms around', match.group(1))
|
case _: print('arms around', match.group(1))
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
@ -393,7 +394,8 @@ def funct(case: str = sys.platform) -> None:
|
||||||
{o}){z}
|
{o}){z}
|
||||||
{K}match{z} case{o}:{z}
|
{K}match{z} case{o}:{z}
|
||||||
{K}case{z} {s}"emscripten"{z}{o}:{z} {b}print{z}{o}({z}{s}"on the web"{z}{o}){z}
|
{K}case{z} {s}"emscripten"{z}{o}:{z} {b}print{z}{o}({z}{s}"on the web"{z}{o}){z}
|
||||||
{K}case{z} {s}"ios"{z} {o}|{z} {s}"android"{z}{o}:{z} {b}print{z}{o}({z}{s}"on the phone"{z}{o}){z}
|
{K}case{z} {s}"ios"{z} {o}|{z} {s}"android"{z}{o}:{z}
|
||||||
|
{b}print{z}{o}({z}{s}"on the phone"{z}{o}){z}
|
||||||
{K}case{z} {K}_{z}{o}:{z} {b}print{z}{o}({z}{s}'arms around'{z}{o},{z} match{o}.{z}group{o}({z}{n}1{z}{o}){z}{o}){z}
|
{K}case{z} {K}_{z}{o}:{z} {b}print{z}{o}({z}{s}'arms around'{z}{o},{z} match{o}.{z}group{o}({z}{n}1{z}{o}){z}{o}){z}
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
@ -402,14 +404,14 @@ def funct(case: str = sys.platform) -> None:
|
||||||
reader, _ = handle_all_events(events)
|
reader, _ = handle_all_events(events)
|
||||||
self.assert_screen_equal(reader, code, clean=True)
|
self.assert_screen_equal(reader, code, clean=True)
|
||||||
self.assert_screen_equal(reader, expected_sync)
|
self.assert_screen_equal(reader, expected_sync)
|
||||||
self.assertEqual(reader.pos, 2**7 + 2**8)
|
self.assertEqual(reader.pos, 396)
|
||||||
self.assertEqual(reader.cxy, (0, 14))
|
self.assertEqual(reader.cxy, (0, 15))
|
||||||
|
|
||||||
async_msg = "{k}async{z} ".format(**colors)
|
async_msg = "{k}async{z} ".format(**colors)
|
||||||
expected_async = expected.format(a=async_msg, **colors)
|
expected_async = expected.format(a=async_msg, **colors)
|
||||||
more_events = itertools.chain(
|
more_events = itertools.chain(
|
||||||
code_to_events(code),
|
code_to_events(code),
|
||||||
[Event(evt="key", data="up", raw=bytearray(b"\x1bOA"))] * 13,
|
[Event(evt="key", data="up", raw=bytearray(b"\x1bOA"))] * 14,
|
||||||
code_to_events("async "),
|
code_to_events("async "),
|
||||||
)
|
)
|
||||||
reader, _ = handle_all_events(more_events)
|
reader, _ = handle_all_events(more_events)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Fix PyREPL syntax highlightning on match cases after multi-line case. Contributed by Olga Matoula.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue