mirror of https://github.com/astral-sh/ruff
[ty] Add goto for `Unknown` when it appears in an inlay hint (#21545)
This commit is contained in:
parent
c4767f5aa8
commit
290a5720cb
|
|
@ -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)
|
||||||
|
|
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue