1212use phpDocumentor \Reflection \DocBlock \Tags \Implements_ ;
1313use phpDocumentor \Reflection \DocBlock \DescriptionFactory ;
1414use PHPStan \PhpDocParser \Ast \PhpDoc \ImplementsTagValueNode ;
15- use phpDocumentor \Reflection \DocBlock \Tags \TemplateImplements ;
1615
1716/**
1817 * @internal This class is not part of the BC promise of this library.
1918 */
20- class ImplementsFactory implements PHPStanFactory
19+ final class ImplementsFactory extends AbstractImplementsFactory
2120{
22- private DescriptionFactory $ descriptionFactory ;
23- private TypeResolver $ typeResolver ;
24-
2521 public function __construct (TypeResolver $ typeResolver , DescriptionFactory $ descriptionFactory )
2622 {
27- $ this -> descriptionFactory = $ descriptionFactory ;
28- $ this ->typeResolver = $ typeResolver ;
23+ parent :: __construct ( $ typeResolver , $ descriptionFactory) ;
24+ $ this ->tagName = ' @implements ' ;
2925 }
3026
3127 public function create (PhpDocTagNode $ node , Context $ context ): Tag
@@ -38,16 +34,9 @@ public function create(PhpDocTagNode $node, Context $context): Tag
3834 $ description = $ tagValue ->description ;
3935 }
4036
41- $ class = $ node ->name === '@implements ' ? Implements_::class : TemplateImplements::class;
42-
43- return new $ class (
37+ return new Implements_ (
4438 $ this ->typeResolver ->createType ($ tagValue ->type , $ context ),
45- $ this ->descriptionFactory ->create ($ tagValue -> description , $ context )
39+ $ this ->descriptionFactory ->create ($ description , $ context )
4640 );
4741 }
48-
49- public function supports (PhpDocTagNode $ node , Context $ context ): bool
50- {
51- return $ node ->value instanceof ImplementsTagValueNode && ($ node ->name === '@implements ' || $ node ->name === '@template-implements ' );
52- }
5342}
0 commit comments