1--TEST--
2Using invalid self/parent types in closure
3--FILE--
4<?php
5
6$fn1 = function(self $x) {};
7try {
8    (new ReflectionFunction($fn1))->getParameters()[0]->getClass();
9} catch (ReflectionException $e) {
10    echo $e->getMessage(), "\n";
11}
12
13$fn2 = function(parent $x) {};
14try {
15    (new ReflectionFunction($fn2))->getParameters()[0]->getClass();
16} catch (ReflectionException $e) {
17    echo $e->getMessage(), "\n";
18}
19
20class Test {}
21$fn3 = (function(parent $x) {})->bindTo(new Test, Test::class);
22try {
23    (new ReflectionFunction($fn3))->getParameters()[0]->getClass();
24} catch (ReflectionException $e) {
25    echo $e->getMessage(), "\n";
26}
27
28?>
29--EXPECTF--
30Deprecated: Method ReflectionParameter::getClass() is deprecated since 8.0, use ReflectionParameter::getType() instead in %s on line %d
31Parameter uses "self" as type but function is not a class member
32
33Deprecated: Method ReflectionParameter::getClass() is deprecated since 8.0, use ReflectionParameter::getType() instead in %s on line %d
34Parameter uses "parent" as type but function is not a class member
35
36Deprecated: Method ReflectionParameter::getClass() is deprecated since 8.0, use ReflectionParameter::getType() instead in %s on line %d
37Parameter uses "parent" as type although class does not have a parent
38