File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed
tests/PHPStan/Analyser/data Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -267,6 +267,14 @@ private static function hasAcceptorTemplateOrLateResolvableType(ParametersAccept
267
267
}
268
268
269
269
foreach ($ acceptor ->getParameters () as $ parameter ) {
270
+ if (
271
+ $ parameter instanceof ParameterReflectionWithPhpDocs
272
+ && $ parameter ->getOutType () !== null
273
+ && self ::hasTemplateOrLateResolvableType ($ parameter ->getOutType ())
274
+ ) {
275
+ return true ;
276
+ }
277
+
270
278
if (!self ::hasTemplateOrLateResolvableType ($ parameter ->getType ())) {
271
279
continue ;
272
280
}
Original file line number Diff line number Diff line change @@ -28,3 +28,22 @@ function (): void {
28
28
assertType ('20 ' , $ res );
29
29
assertType ('20 ' , $ out );
30
30
};
31
+
32
+ /**
33
+ * @param int $flags
34
+ * @param mixed $out
35
+ *
36
+ * @param-out ($flags is 2 ? 20 : 10) $out
37
+ */
38
+ function test2 (int $ flags , &$ out ): void
39
+ {
40
+ $ out = $ flags === 2 ? 20 : 10 ;
41
+ }
42
+
43
+ function (): void {
44
+ test2 (1 , $ out );
45
+ assertType ('10 ' , $ out );
46
+
47
+ test2 (2 , $ out );
48
+ assertType ('20 ' , $ out );
49
+ };
You can’t perform that action at this time.
0 commit comments