1--TEST--
2Variance error in the presence of autoloading (3)
3--FILE--
4<?php
5
6spl_autoload_register(function($class) {
7    if ($class == 'A') {
8        class A {
9            public function method(): X {}
10        }
11    } else if ($class == 'B') {
12        class B extends A {
13            public function method(): Y {}
14        }
15    } else if ($class == 'X') {
16        class X {
17            public function method(): Q {}
18        }
19    } else if ($class == 'Y') {
20        class Y extends X {
21            public function method(): R {}
22        }
23    } else if ($class == 'Q') {
24        class Q {
25            public function method(): B {}
26        }
27    } else if ($class == 'R') {
28        class R extends Q {
29            public function method(): A {}
30        }
31    }
32});
33
34$b = new B;
35
36?>
37--EXPECTF--
38Fatal error: Declaration of R::method(): A must be compatible with Q::method(): B in %s on line %d
39