1--TEST--
2Class order allowed with autoloading (4)
3--FILE--
4<?php
5
6// Same as autoload3 test case, but with X, Y being interfaces.
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        interface X {
20            public function method(): A;
21        }
22        var_dump(interface_exists('X'));
23    } else if ($class == 'Y') {
24        interface Y extends X {
25            public function method(): B;
26        }
27        var_dump(interface_exists('Y'));
28    }
29});
30
31var_dump(new B);
32
33?>
34--EXPECT--
35object(A)#2 (0) {
36}
37bool(true)
38bool(true)
39object(B)#2 (0) {
40}
41object(B)#2 (0) {
42}
43