1--TEST--
2ReflectionGenerator while being currently executed
3--FILE--
4<?php
5
6function call(ReflectionGenerator $ref, $method, $rec = true) {
7    if ($rec) {
8        call($ref, $method, false);
9        return;
10    }
11    var_dump($ref->$method());
12}
13
14function doCalls(ReflectionGenerator $ref) {
15    call($ref, "getTrace");
16    call($ref, "getExecutingLine");
17    call($ref, "getExecutingFile");
18    call($ref, "getExecutingGenerator");
19    call($ref, "getFunction");
20    call($ref, "getThis");
21}
22
23($gen = (function() use (&$gen) {
24    $ref = new ReflectionGenerator($gen);
25
26    doCalls($ref);
27
28    yield from (function() use ($ref) {
29        doCalls($ref);
30        yield; // Generator !
31    })();
32})())->next();
33
34?>
35--EXPECTF--
36array(0) {
37}
38int(%d)
39string(%d) "%sReflectionGenerator_in_Generator.%s"
40object(Generator)#2 (0) {
41}
42object(ReflectionFunction)#4 (1) {
43  ["name"]=>
44  string(9) "{closure}"
45}
46NULL
47array(1) {
48  [0]=>
49  array(4) {
50    ["file"]=>
51    string(%d) "%s"
52    ["line"]=>
53    int(%d)
54    ["function"]=>
55    string(9) "{closure}"
56    ["args"]=>
57    array(0) {
58    }
59  }
60}
61int(%d)
62string(%d) "%sReflectionGenerator_in_Generator.%s"
63object(Generator)#5 (0) {
64}
65object(ReflectionFunction)#6 (1) {
66  ["name"]=>
67  string(9) "{closure}"
68}
69NULL
70