"""Unit tests for the positional only argument syntax specified in PEP 570."""
+import dis
import pickle
import unittest
def test_annotations(self):
assert global_inner_has_pos_only().__annotations__ == {'x': int}
+ def test_annotations_constant_fold(self):
+ def g():
+ def f(x: not (int is int), /): ...
+
+ # without constant folding we end up with
+ # COMPARE_OP(is), UNARY_NOT
+ # with constant folding we should expect a COMPARE_OP(is not)
+ codes = [(i.opname, i.argval) for i in dis.get_instructions(g)]
+ self.assertNotIn(('UNARY_NOT', None), codes)
+ self.assertIn(('COMPARE_OP', 'is not'), codes)
+
if __name__ == "__main__":
unittest.main()
static int
astfold_arguments(arguments_ty node_, PyArena *ctx_, int optimize_)
{
+ CALL_SEQ(astfold_arg, arg_ty, node_->posonlyargs);
CALL_SEQ(astfold_arg, arg_ty, node_->args);
CALL_OPT(astfold_arg, arg_ty, node_->vararg);
CALL_SEQ(astfold_arg, arg_ty, node_->kwonlyargs);