1515use TypeLang \Mapper \Mapping \Metadata \ClassMetadata ;
1616use TypeLang \Mapper \Runtime \Parser \TypeParserInterface ;
1717use TypeLang \Mapper \Runtime \Repository \TypeRepositoryInterface ;
18- use TypeLang \PHPDoc \Parser ;
18+ use TypeLang \Parser \Parser ;
19+ use TypeLang \PHPDoc \Parser as DocBlockParser ;
1920use TypeLang \PHPDoc \Standard \ParamTagFactory ;
2021use TypeLang \PHPDoc \Standard \VarTagFactory ;
2122use TypeLang \PHPDoc \Tag \Factory \TagFactory ;
@@ -61,22 +62,17 @@ public function __construct(
6162 string $ varTagName = self ::DEFAULT_VAR_TAG_NAME ,
6263 DriverInterface $ delegate = new NullDriver (),
6364 ) {
64- self ::assertKernelPackageIsInstalled ();
65-
66- $ parser = new Parser (new TagFactory ([
67- $ paramTagName => new ParamTagFactory (),
68- $ varTagName => new VarTagFactory (),
69- ]));
65+ $ docBlockParser = $ this ->createDocBlockParser ($ paramTagName , $ varTagName );
7066
7167 $ this ->varTags = new VarTagReader (
7268 varTagName: $ varTagName ,
73- parser: $ parser ,
69+ parser: $ docBlockParser ,
7470 );
7571
7672 $ this ->paramTags = new ParamTagReader (
7773 paramTagName: $ paramTagName ,
7874 varTag: $ this ->varTags ,
79- parser: $ parser ,
75+ parser: $ docBlockParser ,
8076 );
8177
8278 $ this ->classDocBlockLoaders = $ this ->createClassLoaders ();
@@ -85,6 +81,22 @@ public function __construct(
8581 parent ::__construct ($ delegate );
8682 }
8783
84+ /**
85+ * @param non-empty-string $paramTagName
86+ * @param non-empty-string $varTagName
87+ */
88+ private function createDocBlockParser (string $ paramTagName , string $ varTagName ): DocBlockParser
89+ {
90+ self ::assertKernelPackageIsInstalled ();
91+
92+ $ typeParser = new Parser (tolerant: true );
93+
94+ return new DocBlockParser (new TagFactory ([
95+ $ paramTagName => new ParamTagFactory ($ typeParser ),
96+ $ varTagName => new VarTagFactory ($ typeParser ),
97+ ]));
98+ }
99+
88100 /**
89101 * @return list<ClassDocBlockLoaderInterface>
90102 */
@@ -112,24 +124,24 @@ private function createPropertyLoaders(): array
112124 */
113125 private static function assertKernelPackageIsInstalled (): void
114126 {
115- if (!\class_exists (Parser ::class)) {
127+ if (!\class_exists (DocBlockParser ::class)) {
116128 throw ComposerPackageRequiredException::becausePackageNotInstalled (
117129 package: 'type-lang/phpdoc ' ,
118- purpose: 'docblock support '
130+ purpose: 'docblock support ' ,
119131 );
120132 }
121133
122134 if (!\class_exists (ParamTagFactory::class)) {
123135 throw ComposerPackageRequiredException::becausePackageNotInstalled (
124136 package: 'type-lang/phpdoc-standard-tags ' ,
125- purpose: '"@param" tag support '
137+ purpose: '"@param" tag support ' ,
126138 );
127139 }
128140
129141 if (!\class_exists (VarTagFactory::class)) {
130142 throw ComposerPackageRequiredException::becausePackageNotInstalled (
131143 package: 'type-lang/phpdoc-standard-tags ' ,
132- purpose: '"@var" tag support '
144+ purpose: '"@var" tag support ' ,
133145 );
134146 }
135147 }
0 commit comments