@@ -2629,13 +2629,20 @@ def test_continuation_bad_indentation(self):
26292629 def test_disallowed_type_param_names (self ):
26302630 # See gh-128632
26312631
2632- for name in ('__class__' , '__classdict__' , '__classcell__' , '__classdictcell__' ):
2633- self ._check_error (f"class A[{ name } ]: pass" ,
2634- f"reserved name '{ name } ' cannot be used for type parameter" )
2635- self ._check_error (f"def f[{ name } ](): pass" ,
2636- f"reserved name '{ name } ' cannot be used for type parameter" )
2637- self ._check_error (f"type T[{ name } ] = tuple[{ name } ]" ,
2638- f"reserved name '{ name } ' cannot be used for type parameter" )
2632+ self ._check_error (f"class A[__classdict__]: pass" ,
2633+ f"reserved name '__classdict__' cannot be used for type parameter" )
2634+ self ._check_error (f"def f[__classdict__](): pass" ,
2635+ f"reserved name '__classdict__' cannot be used for type parameter" )
2636+ self ._check_error (f"type T[__classdict__] = tuple[__classdict__]" ,
2637+ f"reserved name '__classdict__' cannot be used for type parameter" )
2638+
2639+ # These compilations are here to make sure __class__, __classcell__ and __classdictcell__
2640+ # don't break in the future like __classdict__ did in this case.
2641+ for name in ('__class__' , '__classcell__' , '__classdictcell__' ):
2642+ compile (f"""
2643+ class A:
2644+ class B[{ name } ]: pass
2645+ """ , "<testcase>" , mode = "exec" )
26392646
26402647 @support .cpython_only
26412648 def test_nested_named_except_blocks (self ):
0 commit comments