1
0
mirror of https://github.com/danog/amp.git synced 2024-11-27 04:24:42 +01:00

Don't use php7 ReflectionGenerator in PHP5.x branch

This commit is contained in:
Daniel Lowrey 2015-05-20 18:19:23 -04:00
parent e6f1386b31
commit 0255049bbb

View File

@ -538,9 +538,10 @@ function __coroutineAdvance($cs) {
} else {
$promisor = $cs->promisor;
$cs->promisor = null;
$promisor->fail(new \DomainException(
__generateYieldError($cs->generator, $key, $yielded)
));
$promisor->fail(new \DomainException(sprintf(
"Unexpected Generator yield (Promise|null expected); %s yielded at key %s",
is_object($yielded) ? get_class($yielded) : gettype($yielded)
)));
return;
}
@ -579,20 +580,4 @@ function __coroutineSend($error, $result, $cs) {
$promisor->fail($uncaught);
}
}
}
function __generateYieldError(\Generator $generator, $key, $yielded) {
$reflectionGen = new \ReflectionGenerator($generator);
$executingGen = $reflectionGen->getExecutingGenerator();
if ($isSubgenerator = ($executingGen !== $generator)) {
$reflectionGen = new \ReflectionGenerator($executingGen);
}
return sprintf(
"Unexpected Generator yield (Promise|null expected); %s yielded at key %s on line %s in %s",
(is_object($yielded) ? get_class($yielded) : gettype($yielded)),
$key,
$reflectionGen->getExecutingLine(),
$reflectionGen->getExecutingFile()
);
}
}