@@ -3916,6 +3916,34 @@ class A:
39163916 # C version of GenericAlias
39173917 self .assertEqual (list [A ()].__parameters__ , (T ,))
39183918
3919+ def test_non_generic_subscript (self ):
3920+ T = TypeVar ('T' )
3921+ class G (Generic [T ]):
3922+ pass
3923+ class A :
3924+ __parameters__ = (T ,)
3925+
3926+ for s in (int , G , A , List , list ,
3927+ TypeVar , TypeVarTuple , ParamSpec ,
3928+ types .GenericAlias , types .UnionType ):
3929+
3930+ for t in Tuple , tuple :
3931+ with self .subTest (tuple = t , sub = s ):
3932+ self .assertEqual (t [s , T ][int ], t [s , int ])
3933+ self .assertEqual (t [T , s ][int ], t [int , s ])
3934+ a = t [s ]
3935+ with self .assertRaises (TypeError ):
3936+ a [int ]
3937+
3938+ for c in Callable , collections .abc .Callable :
3939+ with self .subTest (callable = c , sub = s ):
3940+ self .assertEqual (c [[s ], T ][int ], c [[s ], int ])
3941+ self .assertEqual (c [[T ], s ][int ], c [[int ], s ])
3942+ a = c [[s ], s ]
3943+ with self .assertRaises (TypeError ):
3944+ a [int ]
3945+
3946+
39193947class ClassVarTests (BaseTestCase ):
39203948
39213949 def test_basics (self ):
0 commit comments