def iter_method_must_take_no_arguments(): cls = types.class_type("Blah") cls.attrs.add("__iter__", types.func([types.str_type], types.iterable(types.str_type))) ref_node = nodes.ref("xs") node = nodes.for_(nodes.ref("x"), ref_node, []) try: update_context(node, type_bindings={"x": None, "xs": cls}) assert False, "Expected error" except errors.TypeCheckError as error: assert_equal(ref_node, ephemeral.root_node(error.node))
def iter_method_must_return_iterator(): cls = types.class_type("Blah") cls.attrs.add("__iter__", types.func([], types.iterable(types.str_type))) ref_node = nodes.ref("xs") node = nodes.for_(nodes.ref("x"), ref_node, []) try: update_context(node, type_bindings={"x": None, "xs": cls}) assert False, "Expected error" except errors.BadSignatureError as error: assert_equal(ref_node, error.node)