1--TEST--
2Exception while loading class -- parent case
3--FILE--
4<?php
5
6spl_autoload_register(function($class) {
7    throw new Exception("Class $class does not exist");
8});
9
10// Graceful failure allowed
11for ($i = 0; $i < 2; $i++) {
12    try {
13        class B extends A {
14        }
15    } catch (Exception $e) {
16        echo $e->getMessage(), "\n";
17    }
18}
19
20interface I {}
21
22spl_autoload_register(function($class) {
23    // Tie up B in a variance obligation.
24    class X {
25        public function test(): I {}
26    }
27    class Y extends X {
28        public function test(): B {}
29    }
30}, true, true);
31
32// Fallback to fatal error, as we can't unlink class B anymore.
33try {
34    class B extends A implements I {
35    }
36} catch (Exception $e) {
37    echo $e->getMessage(), "\n";
38}
39
40?>
41--EXPECTF--
42Class A does not exist
43Class A does not exist
44
45Fatal error: During inheritance of B with variance dependencies: Uncaught Exception: Class A does not exist in %s:%d
46Stack trace:
47#0 %s(%d): {closure:%s:%d}('A')
48#1 {main} in %s on line %d
49