Fix SystemError when nested function has annotation on positional-only argument (GH-17826)
This commit is contained in:
parent
7dc72b8d4f
commit
ec007cb43f
|
@ -15,6 +15,10 @@ def global_pos_only_and_normal(a, /, b):
|
||||||
def global_pos_only_defaults(a=1, /, b=2):
|
def global_pos_only_defaults(a=1, /, b=2):
|
||||||
return a, b
|
return a, b
|
||||||
|
|
||||||
|
def global_inner_has_pos_only():
|
||||||
|
def f(x: int, /): ...
|
||||||
|
return f
|
||||||
|
|
||||||
|
|
||||||
class PositionalOnlyTestCase(unittest.TestCase):
|
class PositionalOnlyTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
@ -412,6 +416,9 @@ class PositionalOnlyTestCase(unittest.TestCase):
|
||||||
|
|
||||||
self.assertEqual(C().method(), sentinel)
|
self.assertEqual(C().method(), sentinel)
|
||||||
|
|
||||||
|
def test_annotations(self):
|
||||||
|
assert global_inner_has_pos_only().__annotations__ == {'x': int}
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Fix ``SystemError`` when nested function has annotation on positional-only
|
||||||
|
argument - by Anthony Sottile.
|
|
@ -1717,6 +1717,8 @@ static int
|
||||||
symtable_visit_annotations(struct symtable *st, stmt_ty s,
|
symtable_visit_annotations(struct symtable *st, stmt_ty s,
|
||||||
arguments_ty a, expr_ty returns)
|
arguments_ty a, expr_ty returns)
|
||||||
{
|
{
|
||||||
|
if (a->posonlyargs && !symtable_visit_argannotations(st, a->posonlyargs))
|
||||||
|
return 0;
|
||||||
if (a->args && !symtable_visit_argannotations(st, a->args))
|
if (a->args && !symtable_visit_argannotations(st, a->args))
|
||||||
return 0;
|
return 0;
|
||||||
if (a->vararg && a->vararg->annotation)
|
if (a->vararg && a->vararg->annotation)
|
||||||
|
|
Loading…
Reference in New Issue