| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent fb16e93 commit 0ece662
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -251,9 +251,9 @@ def visit_type_var(self, t: TypeVarType) -> Type: | |||
| 251 | 251 | if (tvar_id := repl.id) in self.recursive_tvar_guard: | |
| 252 | 252 | return self.recursive_tvar_guard[tvar_id] or repl | |
| 253 | 253 | self.recursive_tvar_guard[tvar_id] = None | |
| 254 | - repl = repl.accept(self) | ||
| 255 | - if isinstance(repl, TypeVarType): | ||
| 256 | - repl.default = repl.default.accept(self) | ||
| 254 | + repl.default = repl.default.accept(self) | ||
| 255 | + expanded = repl.accept(self) # Note: `expanded is repl` may be true. | ||
| 256 | + repl = repl if isinstance(expanded, TypeVarType) else expanded | ||
| 257 | 257 | self.recursive_tvar_guard[tvar_id] = repl | |
| 258 | 258 | return repl | |
| 259 | 259 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -416,6 +416,38 @@ def func_c4( | |||
| 416 | 416 | reveal_type(m) # N: Revealed type is "__main__.ClassC4[builtins.int, builtins.float]" | |
| 417 | 417 | [builtins fixtures/tuple.pyi] | |
| 418 | 418 | ||
| 419 | + [case testTypeVarDefaultsSwap] | ||
| 420 | + from typing import TypeVar, Generic | ||
| 421 | + | ||
| 422 | + T = TypeVar("T") | ||
| 423 | + X = TypeVar("X", default=object) | ||
| 424 | + Y = TypeVar("Y", default=object) | ||
| 425 | + | ||
| 426 | + | ||
| 427 | + class Foo(Generic[T, Y]): | ||
| 428 | + def test(self) -> None: | ||
| 429 | + reveal_type( Foo[Y, T]() ) # N: Revealed type is "__main__.Foo[Y`2 = builtins.object, T`1]" | ||
| 430 | + | ||
| 431 | + | ||
| 432 | + class Bar(Generic[X, Y]): | ||
| 433 | + def test(self) -> None: | ||
| 434 | + reveal_type( Bar[Y, X]() ) # N: Revealed type is "__main__.Bar[Y`2 = builtins.object, X`1 = builtins.object]" | ||
| 435 | + | ||
| 436 | + | ||
| 437 | + [case testTypeVarDefaultsSwap2] | ||
| 438 | + from typing import TypeVar, Generic | ||
| 439 | + | ||
| 440 | + X = TypeVar("X", default=object) | ||
| 441 | + Y = TypeVar("Y", default=object) | ||
| 442 | + U = TypeVar("U", default=object) | ||
| 443 | + V = TypeVar("V", default=object) | ||
| 444 | + | ||
| 445 | + class Transform(Generic[X, Y]): | ||
| 446 | + def invert(self) -> "Transform[Y, X]": ... | ||
| 447 | + | ||
| 448 | + class Foo(Transform[U, V], Generic[U, V]): | ||
| 449 | + def invert(self) -> "Foo[V, U]": ... | ||
| 450 | + | ||
| 419 | 451 | [case testTypeVarDefaultsClassRecursive1] | |
| 420 | 452 | # flags: --disallow-any-generics | |
| 421 | 453 | from typing import Generic, TypeVar, List | |
| Back | FazBrowse Home | New Git URL |
0 commit comments