diff --git a/src/vm.cpp b/src/vm.cpp index 6eee7b84..56e9c61f 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -729,7 +729,7 @@ void VM::init_builtin_types(){ this->Ellipsis = heap._new(_new_type_object("ellipsis")); this->True = heap._new(tp_bool); this->False = heap._new(tp_bool); - this->StopIteration = heap._new(_new_type_object("StopIterationType")); + this->StopIteration = _all_types[_new_type_object("StopIteration", tp_exception)].obj; this->builtins = new_module("builtins"); diff --git a/tests/28_iter.py b/tests/28_iter.py index e75c7e9a..20bbcd3c 100644 --- a/tests/28_iter.py +++ b/tests/28_iter.py @@ -36,3 +36,21 @@ assert next(i) == 4 assert next(i) == 5 assert next(i) == StopIteration assert next(i) == StopIteration + +import builtins + +def next(obj): + res = builtins.next(obj) + if res is StopIteration: + raise StopIteration + return res + +a = iter([1]) +assert next(a) == 1 + +try: + next(a) + exit(1) +except StopIteration: + pass +