1--TEST--
2static type in trait
3--FILE--
4<?php
5
6trait T {
7    public function test($arg): static {
8        return $arg;
9    }
10}
11
12class C {
13    use T;
14}
15class P extends C {
16}
17
18$c = new C;
19$p = new P;
20var_dump($c->test($c));
21var_dump($c->test($p));
22var_dump($p->test($p));
23var_dump($p->test($c));
24
25?>
26--EXPECTF--
27object(C)#1 (0) {
28}
29object(P)#2 (0) {
30}
31object(P)#2 (0) {
32}
33
34Fatal error: Uncaught TypeError: C::test(): Return value must be of type P, C returned in %s:%d
35Stack trace:
36#0 %s(%d): C->test(Object(C))
37#1 {main}
38  thrown in %s on line %d
39