@@ -2418,6 +2418,22 @@ def __new__(cls, arg): |
|
|
2418 |
2418 |
self.assertEqual(c.from_b, 'b') |
2419 |
2419 |
self.assertEqual(c.from_c, 'c') |
2420 |
2420 |
|
|
2421 |
+def test_subclass_special_form(self): |
|
2422 |
+for obj in ( |
|
2423 |
+ClassVar[int], |
|
2424 |
+Final[int], |
|
2425 |
+Union[int, float], |
|
2426 |
+Optional[int], |
|
2427 |
+Literal[1, 2], |
|
2428 |
+Concatenate[int, ParamSpec("P")], |
|
2429 |
+TypeGuard[int], |
|
2430 |
+ ): |
|
2431 |
+with self.subTest(msg=obj): |
|
2432 |
+with self.assertRaisesRegex( |
|
2433 |
+TypeError, f'^{re.escape(f"Cannot subclass {obj!r}")}$' |
|
2434 |
+ ): |
|
2435 |
+class Foo(obj): |
|
2436 |
+pass |
2421 |
2437 |
|
2422 |
2438 |
class ClassVarTests(BaseTestCase): |
2423 |
2439 |
|