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