Пример #1
0
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)"
    )
Пример #2
0
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)
    )
Пример #3
0
 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")
             ]
         )
     )