def test_parse_generator_expression(): _assert_expression_parse( nodes.generator_expression( nodes.call(nodes.ref("f"), [nodes.ref("x")]), nodes.ref("x"), nodes.ref("xs"), ), "(f(x) for x in xs)" )
def can_infer_type_of_generator_expression_over_list(): type_bindings = {"xs": types.list_type(types.str_type)} node = nodes.generator_expression( nodes.int_literal(1), nodes.ref("x"), nodes.ref("xs"), ) assert_equal( types.iterator(types.int_type), infer(node, type_bindings=type_bindings) )
def test_generator_is_transformed_to_function_call_with_anonymous_function(self): _assert_transform( nodes.generator_expression( nodes.ref("y"), nodes.ref("x"), nodes.ref("xs") ), cc.call( cc.internal("generator_expression"), [ cc.function_expression([cc.arg("x")], [cc.ret(cc.ref("y"))]), cc.ref("xs") ] ) )