|
42 | 42 | use PHPStan\PhpDocParser\Ast\PhpDoc\RequireExtendsTagValueNode;
|
43 | 43 | use PHPStan\PhpDocParser\Ast\PhpDoc\RequireImplementsTagValueNode;
|
44 | 44 | use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode;
|
| 45 | +use PHPStan\PhpDocParser\Ast\PhpDoc\SealedTagValueNode; |
45 | 46 | use PHPStan\PhpDocParser\Ast\PhpDoc\SelfOutTagValueNode;
|
46 | 47 | use PHPStan\PhpDocParser\Ast\PhpDoc\TemplateTagValueNode;
|
47 | 48 | use PHPStan\PhpDocParser\Ast\PhpDoc\ThrowsTagValueNode;
|
@@ -108,6 +109,7 @@ protected function setUp(): void
|
108 | 109 | * @dataProvider provideMixinTagsData
|
109 | 110 | * @dataProvider provideRequireExtendsTagsData
|
110 | 111 | * @dataProvider provideRequireImplementsTagsData
|
| 112 | + * @dataProvider provideSealedTagsData |
111 | 113 | * @dataProvider provideDeprecatedTagsData
|
112 | 114 | * @dataProvider providePropertyTagsData
|
113 | 115 | * @dataProvider provideMethodTagsData
|
@@ -2210,6 +2212,81 @@ public function provideRequireImplementsTagsData(): Iterator
|
2210 | 2212 | ];
|
2211 | 2213 | }
|
2212 | 2214 |
|
| 2215 | + public function provideSealedTagsData(): Iterator |
| 2216 | + { |
| 2217 | + yield [ |
| 2218 | + 'OK without description', |
| 2219 | + '/** @phpstan-sealed Foo|Bar */', |
| 2220 | + new PhpDocNode([ |
| 2221 | + new PhpDocTagNode( |
| 2222 | + '@phpstan-sealed', |
| 2223 | + new SealedTagValueNode( |
| 2224 | + new UnionTypeNode([ |
| 2225 | + new IdentifierTypeNode('Foo'), |
| 2226 | + new IdentifierTypeNode('Bar'), |
| 2227 | + ]), |
| 2228 | + '', |
| 2229 | + ), |
| 2230 | + ), |
| 2231 | + ]), |
| 2232 | + ]; |
| 2233 | + |
| 2234 | + yield [ |
| 2235 | + 'OK with description', |
| 2236 | + '/** @phpstan-sealed Foo|Bar optional description */', |
| 2237 | + new PhpDocNode([ |
| 2238 | + new PhpDocTagNode( |
| 2239 | + '@phpstan-sealed', |
| 2240 | + new SealedTagValueNode( |
| 2241 | + new UnionTypeNode([ |
| 2242 | + new IdentifierTypeNode('Foo'), |
| 2243 | + new IdentifierTypeNode('Bar'), |
| 2244 | + ]), |
| 2245 | + 'optional description', |
| 2246 | + ), |
| 2247 | + ), |
| 2248 | + ]), |
| 2249 | + ]; |
| 2250 | + |
| 2251 | + yield [ |
| 2252 | + 'OK with psalm-prefix description', |
| 2253 | + '/** @psalm-inheritors Foo|Bar optional description */', |
| 2254 | + new PhpDocNode([ |
| 2255 | + new PhpDocTagNode( |
| 2256 | + '@psalm-inheritors', |
| 2257 | + new SealedTagValueNode( |
| 2258 | + new UnionTypeNode([ |
| 2259 | + new IdentifierTypeNode('Foo'), |
| 2260 | + new IdentifierTypeNode('Bar'), |
| 2261 | + ]), |
| 2262 | + 'optional description', |
| 2263 | + ), |
| 2264 | + ), |
| 2265 | + ]), |
| 2266 | + ]; |
| 2267 | + |
| 2268 | + yield [ |
| 2269 | + 'invalid without type and description', |
| 2270 | + '/** @phpstan-sealed */', |
| 2271 | + new PhpDocNode([ |
| 2272 | + new PhpDocTagNode( |
| 2273 | + '@phpstan-sealed', |
| 2274 | + new InvalidTagValueNode( |
| 2275 | + '', |
| 2276 | + new ParserException( |
| 2277 | + '*/', |
| 2278 | + Lexer::TOKEN_CLOSE_PHPDOC, |
| 2279 | + 20, |
| 2280 | + Lexer::TOKEN_IDENTIFIER, |
| 2281 | + null, |
| 2282 | + 1, |
| 2283 | + ), |
| 2284 | + ), |
| 2285 | + ), |
| 2286 | + ]), |
| 2287 | + ]; |
| 2288 | + } |
| 2289 | + |
2213 | 2290 | public function provideDeprecatedTagsData(): Iterator
|
2214 | 2291 | {
|
2215 | 2292 | yield [
|
|
0 commit comments