blueloveTH 1 год назад
Родитель
Сommit
bb94e595d1
1 измененных файлов с 15 добавлено и 2 удалено
  1. 15 2
      src/pocketpy.cpp

+ 15 - 2
src/pocketpy.cpp

@@ -363,14 +363,22 @@ void __init_builtins(VM* _vm) {
         return VAR(r);
     });
 
-    _vm->bind__iter__(VM::tp_range, [](VM* vm, PyVar obj) {
-        const Range& r = PK_OBJ_GET(Range, obj);
+    _vm->bind__iter__(VM::tp_range, [](VM* vm, PyVar _0) {
+        const Range& r = PK_OBJ_GET(Range, _0);
         if(r.step > 0){
             return vm->new_user_object<RangeIter>(r);
         }else{
             return vm->new_user_object<RangeIterR>(r);
         }
     });
+    _vm->_all_types[VM::tp_range].op__iter__ = [](VM* vm, PyVar _0){
+        const Range& r = PK_OBJ_GET(Range, _0);
+        if(r.step > 0){
+            vm->new_stack_object<RangeIter>(VM::tp_range, r);
+        }else{
+            vm->new_stack_object<RangeIterR>(VM::tp_range, r);
+        }
+    };
     
     // tp_nonetype
     _vm->bind__repr__(_vm->_tp(_vm->None), [](VM* vm, PyVar _0) -> Str {
@@ -1064,6 +1072,11 @@ void __init_builtins(VM* _vm) {
         Tuple& self = _CAST(Tuple&, _0);
         return vm->new_user_object<ArrayIter>(_0.get(), self.begin(), self.end());
     });
+    _vm->_all_types[VM::tp_tuple].op__iter__ = [](VM* vm, PyVar _0){
+        Tuple& self = _CAST(Tuple&, _0);
+        vm->new_stack_object<ArrayIter>(vm->_tp_user<ArrayIter>(), _0.get(), self.begin(), self.end());
+    };
+
     _vm->bind__getitem__(VM::tp_tuple, PyArrayGetItem<Tuple>);
     _vm->bind__len__(VM::tp_tuple, [](VM* vm, PyVar obj) {
         return (i64)_CAST(Tuple&, obj).size();