1--TEST--
2ReflectionNamedType::getName() and ReflectionNamedType::__toString()
3--FILE--
4<?php
5
6function testInternalTypes(?Traversable $traversable): ?string {
7    return 'test';
8}
9
10function testUserDefinedTypes(?Test $traversable): ?Test {
11    return new Test;
12}
13
14$function = new ReflectionFunction('testInternalTypes');
15$type = $function->getParameters()[0]->getType();
16$return = $function->getReturnType();
17
18var_dump($type->getName());
19var_dump((string) $type);
20var_dump($return->getName());
21var_dump((string) $return);
22
23$function = new ReflectionFunction('testUserDefinedTypes');
24$type = $function->getParameters()[0]->getType();
25$return = $function->getReturnType();
26
27var_dump($type->getName());
28var_dump((string) $type);
29var_dump($return->getName());
30var_dump((string) $return);
31
32?>
33--EXPECT--
34string(11) "Traversable"
35string(12) "?Traversable"
36string(6) "string"
37string(7) "?string"
38string(4) "Test"
39string(5) "?Test"
40string(4) "Test"
41string(5) "?Test"
42