blueloveTH 1 tahun lalu
induk
melakukan
d7c38f95b5
3 mengubah file dengan 16 tambahan dan 6 penghapusan
  1. 1 1
      src/ceval.cpp
  2. 0 5
      tests/04_str.py
  3. 15 0
      tests/45_yield.py

+ 1 - 1
src/ceval.cpp

@@ -95,7 +95,7 @@ bool VM::py_ge(PyVar _0, PyVar _1){
 
 #define DISPATCH() { frame->_ip++; goto __NEXT_STEP; }
 #define DISPATCH_JUMP(__target) { frame->_ip = __target; goto __NEXT_STEP; }
-#define RETURN_OP_YIELD() { frame->_ip++; return PY_OP_YIELD; }
+#define RETURN_OP_YIELD() { return PY_OP_YIELD; }
 
 PyVar VM::__run_top_frame(){
     Frame* frame = &callstack.top();

+ 0 - 5
tests/04_str.py

@@ -106,11 +106,6 @@ def test(*seq):
     return s1.join(seq)
 assert test("r", "u", "n", "o", "o", "b") == "r-u-n-o-o-b"
 
-def f():
-    for i in range(5):
-        yield str(i)
-assert '|'.join(f()) == '0|1|2|3|4'
-
 num = 6
 assert str(num) == '6'
 

+ 15 - 0
tests/45_yield.py

@@ -1,3 +1,11 @@
+def g():
+    yield 1
+    yield 2
+
+a = g()
+assert next(a) == 1
+assert next(a) == 2
+
 def f(n):
     for i in range(n):
         yield i
@@ -38,6 +46,13 @@ def f():
 a = [i for i in f()]
 assert a == [1, 2, 3]
 
+
+def f():
+    for i in range(5):
+        yield str(i)
+assert '|'.join(f()) == '0|1|2|3|4'
+
+
 def f(n):
     for i in range(n):
         yield i