|
8 | 8 | use PHPStan\PhpDocParser\Ast\PhpDoc\TemplateTagValueNode; |
9 | 9 | use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; |
10 | 10 | use PHPStan\PhpDocParser\Ast\Type\TypeNode; |
11 | | -use PHPStan\Type\Generic\TemplateType; |
12 | 11 | use PHPStan\Type\Generic\TemplateTypeFactory; |
13 | 12 | use PHPStan\Type\Generic\TemplateTypeHelper; |
14 | 13 | use PHPStan\Type\Generic\TemplateTypeMap; |
@@ -113,42 +112,6 @@ public function resolveWithArgs(TypeNodeResolver $typeNodeResolver, array $args) |
113 | 112 | ); |
114 | 113 | } |
115 | 114 |
|
116 | | - /** |
117 | | - * Resolves the alias body applying default values for template params that declare one. |
118 | | - * Template params without defaults remain as TemplateType placeholders so that callers |
119 | | - * (e.g. MissingTypehintCheck) can detect bare generic alias usage. |
120 | | - */ |
121 | | - public function resolveWithDefaults(TypeNodeResolver $typeNodeResolver): Type |
122 | | - { |
123 | | - $baseType = $this->resolve($typeNodeResolver); |
124 | | - |
125 | | - if (count($this->templateTagValueNodes) === 0) { |
126 | | - return $baseType; |
127 | | - } |
128 | | - |
129 | | - // Collect default values for params that declare one. |
130 | | - $defaultsMap = []; |
131 | | - foreach ($this->templateTagValueNodes as $tvn) { |
132 | | - if ($tvn->default === null) { |
133 | | - continue; |
134 | | - } |
135 | | - $defaultsMap[$tvn->name] = $typeNodeResolver->resolve($tvn->default, $this->nameScope); |
136 | | - } |
137 | | - |
138 | | - if (count($defaultsMap) === 0) { |
139 | | - return $baseType; |
140 | | - } |
141 | | - |
142 | | - // Replace only TemplateType instances scoped to THIS alias that have a declared default. |
143 | | - $aliasName = $this->aliasName; |
144 | | - return TypeTraverser::map($baseType, static function (Type $type, callable $traverse) use ($defaultsMap, $aliasName): Type { |
145 | | - if ($type instanceof TemplateType && $type->getScope()->getTypeAliasName() === $aliasName && isset($defaultsMap[$type->getName()])) { |
146 | | - return $defaultsMap[$type->getName()]; |
147 | | - } |
148 | | - return $traverse($type); |
149 | | - }); |
150 | | - } |
151 | | - |
152 | 115 | /** |
153 | 116 | * Builds a NameScope augmented with TemplateType placeholders for each declared template param, |
154 | 117 | * so the alias body can reference them (e.g. `TFilter` resolves to a TemplateType). |
|
0 commit comments