@@ -33,13 +33,22 @@ class ReflectionCaster
3333
3434 public static function castClosure (\Closure $ c , array $ a , Stub $ stub , $ isNested , $ filter = 0 )
3535 {
36- $ prefix = Caster::PREFIX_VIRTUAL ;
3736 $ c = new \ReflectionFunction ($ c );
3837
3938 $ a = static ::castFunctionAbstract ($ c , $ a , $ stub , $ isNested , $ filter );
4039
4140 $ stub ->class .= self ::getSignature ($ a );
4241
42+ $ prefix = Caster::PREFIX_DYNAMIC ;
43+ unset($ a ['name ' ], $ a [$ prefix .'this ' ], $ a [$ prefix .'parameter ' ], $ a [Caster::PREFIX_VIRTUAL .'extra ' ]);
44+ $ prefix = Caster::PREFIX_VIRTUAL ;
45+
46+ if ($ filter & Caster::EXCLUDE_VERBOSE ) {
47+ $ stub ->cut += ($ c ->getFileName () ? 2 : 0 ) + \count ($ a );
48+
49+ return array ();
50+ }
51+
4352 if (isset ($ a [$ prefix .'parameters ' ])) {
4453 foreach ($ a [$ prefix .'parameters ' ]->value as &$ v ) {
4554 $ param = $ v ;
@@ -53,14 +62,11 @@ public static function castClosure(\Closure $c, array $a, Stub $stub, $isNested,
5362 }
5463 }
5564
56- if (!( $ filter & Caster:: EXCLUDE_VERBOSE ) && $ f = $ c ->getFileName ()) {
65+ if ($ f = $ c ->getFileName ()) {
5766 $ a [$ prefix .'file ' ] = new LinkStub ($ f , $ c ->getStartLine ());
5867 $ a [$ prefix .'line ' ] = $ c ->getStartLine ().' to ' .$ c ->getEndLine ();
5968 }
6069
61- $ prefix = Caster::PREFIX_DYNAMIC ;
62- unset($ a ['name ' ], $ a [$ prefix .'this ' ], $ a [$ prefix .'parameter ' ], $ a [Caster::PREFIX_VIRTUAL .'extra ' ]);
63-
6470 return $ a ;
6571 }
6672
@@ -333,7 +339,7 @@ public static function getSignature(array $a)
333339 }
334340 }
335341 }
336- $ signature = '( ' .substr ($ signature , 2 ).') ' ;
342+ $ signature = ( empty ( $ a [ $ prefix . ' returnsReference ' ]) ? '' : ' & ' ). '( ' .substr ($ signature , 2 ).') ' ;
337343
338344 if (isset ($ a [$ prefix .'returnType ' ])) {
339345 $ signature .= ': ' .substr (strrchr ('\\' .$ a [$ prefix .'returnType ' ], '\\' ), 1 );
0 commit comments