Skip to content

Commit e56379a

Browse files
committed
Fix raising StopIteration with no result
1 parent 4655f17 commit e56379a

File tree

1 file changed

+12
-5
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/generator

1 file changed

+12
-5
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/generator/GeneratorBuiltins.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,7 @@ static Object cached(VirtualFrame frame, PGenerator self, Object sendValue,
160160
self.setRunning(false);
161161
self.setNextCallTarget();
162162
}
163-
if (result == null) {
164-
throw raiseNode.raise(StopIteration, self.getReturnValue());
165-
}
163+
handleResult(self, result, raiseNode);
166164
return result;
167165
}
168166

@@ -191,10 +189,19 @@ static Object generic(VirtualFrame frame, PGenerator self, Object sendValue,
191189
self.setRunning(false);
192190
self.setNextCallTarget();
193191
}
192+
handleResult(self, result, raiseNode);
193+
return result;
194+
}
195+
196+
private static void handleResult(PGenerator self, Object result, PRaiseNode raiseNode) {
194197
if (result == null) {
195-
throw raiseNode.raise(StopIteration, self.getReturnValue());
198+
Object returnValue = self.getReturnValue();
199+
if (returnValue != PNone.NONE) {
200+
throw raiseNode.raise(StopIteration, returnValue);
201+
} else {
202+
throw raiseNode.raise(StopIteration);
203+
}
196204
}
197-
return result;
198205
}
199206

200207
protected static CallTargetInvokeNode createDirectCall(CallTarget target) {

0 commit comments

Comments
 (0)