Skip to content

Commit 9d1d98c

Browse files
committed
Add tests for ForwardRef.evaluate() on locally defined generics
1 parent 70decda commit 9d1d98c

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

Lib/test/test_annotationlib.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,6 +1617,32 @@ def test_evaluate_with_type_params_and_scope_conflict(self):
16171617
TypeParamsSample.TypeParamsAlias2,
16181618
)
16191619

1620+
def test_evaluate_local_generic(self):
1621+
class Cls:
1622+
x: alias
1623+
y: alias2
1624+
z: alias3
1625+
1626+
fwdref = ForwardRef("alias[int]", owner=Cls)
1627+
with self.assertRaises(NameError):
1628+
fwdref.evaluate()
1629+
1630+
alias = list
1631+
self.assertEqual(fwdref.evaluate(), list[int])
1632+
1633+
del alias
1634+
fwdref = ForwardRef("alias[alias]", owner=Cls)
1635+
alias = list
1636+
self.assertEqual(fwdref.evaluate(), list[list])
1637+
1638+
del alias
1639+
fwdref = ForwardRef("alias[alias2, alias3]", owner=Cls)
1640+
alias = dict
1641+
alias2 = int
1642+
alias3 = str
1643+
self.assertEqual(fwdref.evaluate(), dict[int, str])
1644+
1645+
16201646
def test_fwdref_with_module(self):
16211647
self.assertIs(ForwardRef("Format", module="annotationlib").evaluate(), Format)
16221648
self.assertIs(

0 commit comments

Comments
 (0)