Remove regenerator finished generator error

This commit is contained in:
Sebastian McKenzie
2014-12-10 21:10:59 +11:00
parent e6da342e8b
commit 187f7ba01e
3 changed files with 11 additions and 24 deletions

View File

@@ -87,9 +87,7 @@ function Generator(innerFn, outerFn, self, tryList) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
throw new Error("Generator has already finished");
}
var alreadyFinished = state === GenStateCompleted;
while (true) {
var delegate = context.delegate;
@@ -162,7 +160,8 @@ function Generator(innerFn, outerFn, self, tryList) {
state = GenStateExecuting;
try {
var value = innerFn.call(self, context);
var value;
if (!alreadyFinished) value = innerFn.call(self, context);
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
@@ -267,6 +266,10 @@ runtime.keys = function (object) {
};
};
function isIn(key, obj) {
return typeof obj !== "string" && typeof obj !== "number" && key in obj;
}
function values(iterable) {
var iterator = iterable;
if (iteratorSymbol in iterable) {