1--TEST--
2Class order allowed with autoloading (5)
3--FILE--
4<?php
5
6// Similar to variance3, but one more class hierarchy in the cycle
7spl_autoload_register(function($class) {
8    if ($class == 'A') {
9        class A {
10            public function method(): X {}
11        }
12        var_dump(new A);
13    } else if ($class == 'B') {
14        class B extends A {
15            public function method(): Y {}
16        }
17        var_dump(new B);
18    } else if ($class == 'X') {
19        class X {
20            public function method(): Q {}
21        }
22        var_dump(new X);
23    } else if ($class == 'Y') {
24        class Y extends X {
25            public function method(): R {}
26        }
27        var_dump(new Y);
28    } else if ($class == 'Q') {
29        class Q {
30            public function method(): A {}
31        }
32        var_dump(new Q);
33    } else if ($class == 'R') {
34        class R extends Q {
35            public function method(): B {}
36        }
37        var_dump(new R);
38    }
39});
40
41var_dump(new B);
42
43?>
44--EXPECT--
45object(A)#2 (0) {
46}
47object(X)#2 (0) {
48}
49object(Q)#2 (0) {
50}
51object(R)#2 (0) {
52}
53object(Y)#2 (0) {
54}
55object(B)#2 (0) {
56}
57object(B)#2 (0) {
58}
59