44
55namespace phpDocumentor \Reflection \Types ;
66
7- use PhpParser \Node ;
8- use PhpParser \Node \Stmt \GroupUse ;
97use PhpParser \Node \Stmt \Namespace_ ;
10- use PhpParser \Node \Stmt \Use_ ;
11- use PhpParser \Node \Stmt \UseUse ;
128
13- use function array_filter ;
14- use function array_map ;
15- use function array_merge ;
16- use function in_array ;
17-
18- class NamespaceNodeToContext
9+ class NamespaceNodeToContext extends BaseToContext
1910{
2011 public function __invoke (Namespace_ |null $ namespace ): Context
2112 {
@@ -25,40 +16,7 @@ public function __invoke(Namespace_|null $namespace): Context
2516
2617 return new Context (
2718 $ namespace ->name ? $ namespace ->name ->toString () : '' ,
28- $ this ->aliasesToFullyQualifiedNames ($ namespace ),
29- );
30- }
31-
32- /** @return string[] indexed by alias */
33- private function aliasesToFullyQualifiedNames (Namespace_ $ namespace ): array
34- {
35- // flatten(flatten(map(stuff)))
36- return array_merge ([], ...array_merge ([], ...array_map (
37- static fn ($ use ): array => array_map (
38- static function (Node \UseItem |UseUse $ useUse ) use ($ use ): array {
39- if ($ use instanceof GroupUse) {
40- return [
41- (string ) $ useUse ->getAlias () => $ use ->prefix ->toString () . '\\' . $ useUse ->name ->toString (),
42- ];
43- }
44-
45- return [(string ) $ useUse ->getAlias () => $ useUse ->name ->toString ()];
46- },
47- $ use ->uses ,
48- ),
49- $ this ->classAlikeUses ($ namespace ),
50- )));
51- }
52-
53- /** @return Use_[]|GroupUse[] */
54- private function classAlikeUses (Namespace_ $ namespace ): array
55- {
56- return array_filter (
57- $ namespace ->stmts ,
58- static fn (Node $ node ): bool => (
59- $ node instanceof Use_
60- || $ node instanceof GroupUse
61- ) && in_array ($ node ->type , [Use_::TYPE_UNKNOWN , Use_::TYPE_NORMAL ], true ),
19+ self ::flattenUsage (self ::filterUsage ($ namespace ->stmts )),
6220 );
6321 }
6422}
0 commit comments