[ty] Add goto for `Unknown` when it appears in an inlay hint (#21545)

This commit is contained in:
Alex Waygood 2025-11-20 18:55:14 +00:00 committed by GitHub
parent c4767f5aa8
commit 290a5720cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 454 additions and 10 deletions

View File

@ -1422,6 +1422,26 @@ mod tests {
5 | self.y[: Unknown] = y 5 | self.y[: Unknown] = y
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:5:18
|
3 | def __init__(self, y):
4 | self.x[: int] = int(1)
5 | self.y[: Unknown] = y
| ^^^^^^^
6 |
7 | a[: A] = A([y=]2)
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> main.py:2:7 --> main.py:2:7
| |
@ -1659,6 +1679,24 @@ mod tests {
4 | c[: list[Unknown | bool]] = [True, False] 4 | c[: list[Unknown | bool]] = [True, False]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:2:10
|
2 | a[: list[Unknown | int]] = [1, 2]
| ^^^^^^^
3 | b[: list[Unknown | float]] = [1.0, 2.0]
4 | c[: list[Unknown | bool]] = [True, False]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -1695,6 +1733,25 @@ mod tests {
5 | d[: list[Unknown | None]] = [None, None] 5 | d[: list[Unknown | None]] = [None, None]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:3:10
|
2 | a[: list[Unknown | int]] = [1, 2]
3 | b[: list[Unknown | float]] = [1.0, 2.0]
| ^^^^^^^
4 | c[: list[Unknown | bool]] = [True, False]
5 | d[: list[Unknown | None]] = [None, None]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:661:7 --> stdlib/builtins.pyi:661:7
| |
@ -1732,6 +1789,26 @@ mod tests {
6 | e[: list[Unknown | str]] = ["hel", "lo"] 6 | e[: list[Unknown | str]] = ["hel", "lo"]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:4:10
|
2 | a[: list[Unknown | int]] = [1, 2]
3 | b[: list[Unknown | float]] = [1.0, 2.0]
4 | c[: list[Unknown | bool]] = [True, False]
| ^^^^^^^
5 | d[: list[Unknown | None]] = [None, None]
6 | e[: list[Unknown | str]] = ["hel", "lo"]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:2591:7 --> stdlib/builtins.pyi:2591:7
| |
@ -1771,6 +1848,26 @@ mod tests {
7 | f[: list[Unknown | str]] = ['the', 're'] 7 | f[: list[Unknown | str]] = ['the', 're']
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:5:10
|
3 | b[: list[Unknown | float]] = [1.0, 2.0]
4 | c[: list[Unknown | bool]] = [True, False]
5 | d[: list[Unknown | None]] = [None, None]
| ^^^^^^^
6 | e[: list[Unknown | str]] = ["hel", "lo"]
7 | f[: list[Unknown | str]] = ['the', 're']
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/types.pyi:950:11 --> stdlib/types.pyi:950:11
| |
@ -1810,6 +1907,26 @@ mod tests {
8 | g[: list[Unknown | str]] = [f"{ft}", f"{ft}"] 8 | g[: list[Unknown | str]] = [f"{ft}", f"{ft}"]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:6:10
|
4 | c[: list[Unknown | bool]] = [True, False]
5 | d[: list[Unknown | None]] = [None, None]
6 | e[: list[Unknown | str]] = ["hel", "lo"]
| ^^^^^^^
7 | f[: list[Unknown | str]] = ['the', 're']
8 | g[: list[Unknown | str]] = [f"{ft}", f"{ft}"]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:915:7 --> stdlib/builtins.pyi:915:7
| |
@ -1849,6 +1966,26 @@ mod tests {
9 | h[: list[Unknown | Template]] = [t"wow %d", t"wow %d"] 9 | h[: list[Unknown | Template]] = [t"wow %d", t"wow %d"]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:7:10
|
5 | d[: list[Unknown | None]] = [None, None]
6 | e[: list[Unknown | str]] = ["hel", "lo"]
7 | f[: list[Unknown | str]] = ['the', 're']
| ^^^^^^^
8 | g[: list[Unknown | str]] = [f"{ft}", f"{ft}"]
9 | h[: list[Unknown | Template]] = [t"wow %d", t"wow %d"]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:915:7 --> stdlib/builtins.pyi:915:7
| |
@ -1888,6 +2025,26 @@ mod tests {
10 | i[: list[Unknown | bytes]] = [b'/x01', b'/x02'] 10 | i[: list[Unknown | bytes]] = [b'/x01', b'/x02']
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:8:10
|
6 | e[: list[Unknown | str]] = ["hel", "lo"]
7 | f[: list[Unknown | str]] = ['the', 're']
8 | g[: list[Unknown | str]] = [f"{ft}", f"{ft}"]
| ^^^^^^^
9 | h[: list[Unknown | Template]] = [t"wow %d", t"wow %d"]
10 | i[: list[Unknown | bytes]] = [b'/x01', b'/x02']
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:915:7 --> stdlib/builtins.pyi:915:7
| |
@ -1927,6 +2084,26 @@ mod tests {
11 | j[: list[Unknown | int | float]] = [+1, +2.0] 11 | j[: list[Unknown | int | float]] = [+1, +2.0]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:9:10
|
7 | f[: list[Unknown | str]] = ['the', 're']
8 | g[: list[Unknown | str]] = [f"{ft}", f"{ft}"]
9 | h[: list[Unknown | Template]] = [t"wow %d", t"wow %d"]
| ^^^^^^^
10 | i[: list[Unknown | bytes]] = [b'/x01', b'/x02']
11 | j[: list[Unknown | int | float]] = [+1, +2.0]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/string/templatelib.pyi:10:7 --> stdlib/string/templatelib.pyi:10:7
| |
@ -1965,6 +2142,26 @@ mod tests {
12 | k[: list[Unknown | int | float]] = [-1, -2.0] 12 | k[: list[Unknown | int | float]] = [-1, -2.0]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:10:10
|
8 | g[: list[Unknown | str]] = [f"{ft}", f"{ft}"]
9 | h[: list[Unknown | Template]] = [t"wow %d", t"wow %d"]
10 | i[: list[Unknown | bytes]] = [b'/x01', b'/x02']
| ^^^^^^^
11 | j[: list[Unknown | int | float]] = [+1, +2.0]
12 | k[: list[Unknown | int | float]] = [-1, -2.0]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:1448:7 --> stdlib/builtins.pyi:1448:7
| |
@ -2003,6 +2200,25 @@ mod tests {
12 | k[: list[Unknown | int | float]] = [-1, -2.0] 12 | k[: list[Unknown | int | float]] = [-1, -2.0]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:11:10
|
9 | h[: list[Unknown | Template]] = [t"wow %d", t"wow %d"]
10 | i[: list[Unknown | bytes]] = [b'/x01', b'/x02']
11 | j[: list[Unknown | int | float]] = [+1, +2.0]
| ^^^^^^^
12 | k[: list[Unknown | int | float]] = [-1, -2.0]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2057,6 +2273,24 @@ mod tests {
| ^^^^ | ^^^^
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:12:10
|
10 | i[: list[Unknown | bytes]] = [b'/x01', b'/x02']
11 | j[: list[Unknown | int | float]] = [+1, +2.0]
12 | k[: list[Unknown | int | float]] = [-1, -2.0]
| ^^^^^^^
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2312,6 +2546,26 @@ mod tests {
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b… 9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:7:13
|
5 | self.y[: tuple[U@MyClass, U@MyClass]] = y
6 |
7 | x[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b"))
| ^^^^^^^
8 | y[: tuple[MyClass[Unknown | int, str], MyClass[Unknown | int, str]]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a",
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2410,6 +2664,25 @@ mod tests {
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", " 10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:8:19
|
7 | x[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b"))
8 | y[: tuple[MyClass[Unknown | int, str], MyClass[Unknown | int, str]]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a",
| ^^^^^^^
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2466,6 +2739,25 @@ mod tests {
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", " 10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:8:48
|
7 | x[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b"))
8 | y[: tuple[MyClass[Unknown | int, str], MyClass[Unknown | int, str]]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a",
| ^^^^^^^
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2598,6 +2890,25 @@ mod tests {
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", " 10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:9:13
|
7 | x[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b"))
8 | y[: tuple[MyClass[Unknown | int, str], MyClass[Unknown | int, str]]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a",
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
| ^^^^^^^
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2654,6 +2965,25 @@ mod tests {
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", " 10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:9:47
|
7 | x[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b"))
8 | y[: tuple[MyClass[Unknown | int, str], MyClass[Unknown | int, str]]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a",
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
| ^^^^^^^
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2785,6 +3115,24 @@ mod tests {
| ^^^^^^^ | ^^^^^^^
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:10:13
|
8 | y[: tuple[MyClass[Unknown | int, str], MyClass[Unknown | int, str]]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a",
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
| ^^^^^^^
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -2838,6 +3186,24 @@ mod tests {
| ^^^^^^^ | ^^^^^^^
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:10:47
|
8 | y[: tuple[MyClass[Unknown | int, str], MyClass[Unknown | int, str]]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a",
9 | a[: MyClass[Unknown | int, str]], b[: MyClass[Unknown | int, str]] = MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "b…
10 | c[: MyClass[Unknown | int, str]], d[: MyClass[Unknown | int, str]] = (MyClass([x=][42], [y=]("a", "b")), MyClass([x=][42], [y=]("a", "
| ^^^^^^^
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -3347,6 +3713,24 @@ mod tests {
4 | y[: list[Unknown | int]] = [2] 4 | y[: list[Unknown | int]] = [2]
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:3:10
|
2 | def foo(x: int): pass
3 | x[: list[Unknown | int]] = [1]
| ^^^^^^^
4 | y[: list[Unknown | int]] = [2]
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -3384,6 +3768,26 @@ mod tests {
6 | foo(x[0]) 6 | foo(x[0])
| |
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:4:10
|
2 | def foo(x: int): pass
3 | x[: list[Unknown | int]] = [1]
4 | y[: list[Unknown | int]] = [2]
| ^^^^^^^
5 |
6 | foo(x[0])
|
info[inlay-hint-location]: Inlay Hint Target info[inlay-hint-location]: Inlay Hint Target
--> stdlib/builtins.pyi:348:7 --> stdlib/builtins.pyi:348:7
| |
@ -4349,6 +4753,43 @@ mod tests {
bar[: (a, b) -> Unknown] = lambda a, b: a + b bar[: (a, b) -> Unknown] = lambda a, b: a + b
foo([x=]5) foo([x=]5)
bar([a=]1, [b=]2) bar([a=]1, [b=]2)
---------------------------------------------
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:2:14
|
2 | foo[: (x) -> Unknown] = lambda x: x * 2
| ^^^^^^^
3 | bar[: (a, b) -> Unknown] = lambda a, b: a + b
4 | foo([x=]5)
|
info[inlay-hint-location]: Inlay Hint Target
--> stdlib/ty_extensions.pyi:20:1
|
19 | # Types
20 | Unknown = object()
| ^^^^^^^
21 | AlwaysTruthy = object()
22 | AlwaysFalsy = object()
|
info: Source
--> main2.py:3:17
|
2 | foo[: (x) -> Unknown] = lambda x: x * 2
3 | bar[: (a, b) -> Unknown] = lambda a, b: a + b
| ^^^^^^^
4 | foo([x=]5)
5 | bar([a=]1, [b=]2)
|
"); ");
} }

View File

@ -612,16 +612,19 @@ impl Display for DisplayRepresentation<'_> {
impl<'db> FmtDetailed<'db> for DisplayRepresentation<'db> { impl<'db> FmtDetailed<'db> for DisplayRepresentation<'db> {
fn fmt_detailed(&self, f: &mut TypeWriter<'_, '_, 'db>) -> fmt::Result { fn fmt_detailed(&self, f: &mut TypeWriter<'_, '_, 'db>) -> fmt::Result {
match self.ty { match self.ty {
Type::Dynamic(dynamic) => { Type::Dynamic(dynamic) => match dynamic {
if let DynamicType::Any = dynamic { DynamicType::Any => write!(
write!( f.with_detail(TypeDetail::Type(Type::SpecialForm(SpecialFormType::Any))),
f.with_detail(TypeDetail::Type(Type::SpecialForm(SpecialFormType::Any))), "{dynamic}"
"{dynamic}" ),
) DynamicType::Unknown => write!(
} else { f.with_detail(TypeDetail::Type(Type::SpecialForm(
write!(f, "{dynamic}") SpecialFormType::Unknown
} ))),
} "{dynamic}"
),
_ => write!(f, "{dynamic}"),
},
Type::Never => f.with_detail(TypeDetail::Type(self.ty)).write_str("Never"), Type::Never => f.with_detail(TypeDetail::Type(self.ty)).write_str("Never"),
Type::NominalInstance(instance) => { Type::NominalInstance(instance) => {
let class = instance.class(self.db); let class = instance.class(self.db);