[3.14] gh-138239: Fix incorrect highlighting of "type" in type statements in the REPL (GH-138241) (GH-138937)

(cherry picked from commit 26cfb17942)

Co-authored-by: 00ll00 <40747228+00ll00@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2025-10-07 23:02:32 +02:00 committed by GitHub
parent e953cead61
commit 61d49a5d37
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 3 deletions

View file

@ -264,6 +264,12 @@ def is_soft_keyword_used(*tokens: TI | None) -> bool:
return True
case (TI(string="case"), TI(string="_"), TI(string=":")):
return True
case (
None | TI(T.NEWLINE) | TI(T.INDENT) | TI(T.DEDENT) | TI(string=":"),
TI(string="type"),
TI(T.NAME, string=s)
):
return not keyword.iskeyword(s)
case _:
return False

View file

@ -378,6 +378,7 @@ class TestReaderInColor(ScreenEqualMixin, TestCase):
case "ios" | "android":
print("on the phone")
case _: print('arms around', match.group(1))
type type = type[type]
"""
)
expected = dedent(
@ -397,6 +398,7 @@ class TestReaderInColor(ScreenEqualMixin, TestCase):
{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}type{z} {b}type{z} {o}={z} {b}type{z}{o}[{z}{b}type{z}{o}]{z}
"""
)
expected_sync = expected.format(a="", **colors)
@ -404,14 +406,14 @@ class TestReaderInColor(ScreenEqualMixin, TestCase):
reader, _ = handle_all_events(events)
self.assert_screen_equal(reader, code, clean=True)
self.assert_screen_equal(reader, expected_sync)
self.assertEqual(reader.pos, 396)
self.assertEqual(reader.cxy, (0, 15))
self.assertEqual(reader.pos, 419)
self.assertEqual(reader.cxy, (0, 16))
async_msg = "{k}async{z} ".format(**colors)
expected_async = expected.format(a=async_msg, **colors)
more_events = itertools.chain(
code_to_events(code),
[Event(evt="key", data="up", raw=bytearray(b"\x1bOA"))] * 14,
[Event(evt="key", data="up", raw=bytearray(b"\x1bOA"))] * 15,
code_to_events("async "),
)
reader, _ = handle_all_events(more_events)

View file

@ -0,0 +1,2 @@
The REPL now highlights :keyword:`type` as a soft keyword
in :ref:`type statements <type>`.