[syntax-errors] Detect duplicate keys in match mapping patterns (#17129)

Summary
--

Detects duplicate literals in `match` mapping keys.

This PR also adds a `source` method to `SemanticSyntaxContext` to
display the duplicated key in the error message by slicing out its
range.

Test Plan
--

New inline tests.
This commit is contained in:
Brent Westbrook 2025-04-03 10:22:37 -04:00 committed by GitHub
parent ca0cce3f9c
commit 6e2b8f9696
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 1298 additions and 6 deletions

View file

@ -0,0 +1,19 @@
match x:
case {"x": 1, "x": 2}: ...
case {b"x": 1, b"x": 2}: ...
case {0: 1, 0: 2}: ...
case {1.0: 1, 1.0: 2}: ...
case {1.0 + 2j: 1, 1.0 + 2j: 2}: ...
case {True: 1, True: 2}: ...
case {None: 1, None: 2}: ...
case {
"""x
y
z
""": 1,
"""x
y
z
""": 2}: ...
case {"x": 1, "x": 2, "x": 3}: ...
case {0: 1, "x": 1, 0: 2, "x": 2}: ...

View file

@ -0,0 +1,2 @@
match x:
case {x.a: 1, x.a: 2}: ...