1--TEST-- 2Variance error in the presence of autoloading (6) 3--FILE-- 4<?php 5 6spl_autoload_register(function($class) { 7 if ($class == 'A') { 8 class A { 9 public function method(): X {} 10 } 11 var_dump(new A); 12 } else if ($class == 'B') { 13 class B extends A { 14 public function method(): Y {} 15 } 16 var_dump(new B); 17 } else if ($class == 'X') { 18 class X { 19 public function method(): X {} 20 } 21 var_dump(new X); 22 } else if ($class == 'Y') { 23 class Y extends X { 24 public function method(): Unknown {} 25 } 26 var_dump(new Y); 27 } 28}); 29 30var_dump(new B); 31 32?> 33--EXPECTF-- 34object(A)#2 (0) { 35} 36object(X)#2 (0) { 37} 38 39Fatal error: Could not check compatibility between Y::method(): Unknown and X::method(): X, because class Unknown is not available in %s on line %d 40