@@ -60,11 +60,11 @@ public static function config(array $config): array
6060
6161 private const WHEN_ENV_APP_TEMPLATE = <<<'PHPDOC'
6262
63- * "when@{ENV}"?: array{
64- * imports?: ImportsConfig,
65- * parameters?: ParametersConfig,
66- * services?: ServicesConfig,{SHAPE}
67- * },
63+ * "when@{ENV}"?: array{
64+ * imports?: ImportsConfig,
65+ * parameters?: ParametersConfig,
66+ * services?: ServicesConfig,{SHAPE}
67+ * },
6868 PHPDOC;
6969
7070 private const ROUTES_TYPES_TEMPLATE = <<<'PHPDOC'
@@ -121,23 +121,24 @@ public function process(ContainerBuilder $container): void
121121
122122 $ r = new \ReflectionClass (AppReference::class);
123123
124- if (false === $ i = strpos ($ phpdoc = $ r ->getDocComment (), "\n */ " )) {
124+ if (false === $ i = strpos ($ phpdoc = $ r ->getDocComment (), "\n * @psalm-type ConfigType = " )) {
125125 throw new \LogicException (\sprintf ('Cannot insert config shape in "%s". ' , AppReference::class));
126126 }
127127 $ appTypes = substr_replace ($ phpdoc , $ appTypes , $ i , 0 );
128128
129- if (false === $ i = strpos ($ phpdoc = $ r -> getMethod ( ' config ' )-> getDocComment () , "\n * ...<string, ExtensionType|array{ " )) {
129+ if (false === $ i = strrpos ($ phpdoc = $ appTypes , "\n * ...<string, ExtensionType|array{ " )) {
130130 throw new \LogicException (\sprintf ('Cannot insert config shape in "%s". ' , AppReference::class));
131131 }
132- $ appParam = substr_replace ($ phpdoc , $ this ->getShapeForExtensions ($ anyEnvExtensions , $ container ), $ i , 0 );
133- $ i += \strlen ($ appParam ) - \strlen ($ phpdoc );
132+ $ appTypes = substr_replace ($ phpdoc , $ this ->getShapeForExtensions ($ anyEnvExtensions , $ container ), $ i , 0 );
133+ $ i += \strlen ($ appTypes ) - \strlen ($ phpdoc );
134134
135135 foreach ($ extensionsPerEnv as $ env => $ extensions ) {
136- $ appParam = substr_replace ($ appParam , strtr (self ::WHEN_ENV_APP_TEMPLATE , [
136+ $ appTypes = substr_replace ($ appTypes , strtr (self ::WHEN_ENV_APP_TEMPLATE , [
137137 '{ENV} ' => $ env ,
138138 '{SHAPE} ' => $ this ->getShapeForExtensions ($ extensions , $ container , ' ' ),
139139 ]), $ i , 0 );
140140 }
141+ $ appParam = $ r ->getMethod ('config ' )->getDocComment ();
141142
142143 $ r = new \ReflectionClass (RoutesReference::class);
143144
@@ -191,7 +192,7 @@ private function getShapeForExtensions(array $extensions, ContainerBuilder $cont
191192 foreach ($ extensions as $ extension ) {
192193 if ($ this ->getConfiguration ($ extension , $ container )) {
193194 $ type = $ this ->camelCase ($ extension ->getAlias ()).'Config ' ;
194- $ shape .= \sprintf ("\n * %s%s?: %s, " , $ indent , $ extension ->getAlias (), $ type );
195+ $ shape .= \sprintf ("\n * %s%s?: %s, " , $ indent , $ extension ->getAlias (), $ type );
195196 }
196197 }
197198
0 commit comments