|
10 | 10 | use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprStringNode;
|
11 | 11 | use PHPStan\PhpDocParser\Ast\ConstExpr\ConstFetchNode;
|
12 | 12 | use PHPStan\PhpDocParser\Ast\Node;
|
| 13 | +use PHPStan\PhpDocParser\Ast\NodeTraverser; |
13 | 14 | use PHPStan\PhpDocParser\Ast\PhpDoc\AssertTagMethodValueNode;
|
14 | 15 | use PHPStan\PhpDocParser\Ast\PhpDoc\AssertTagPropertyValueNode;
|
15 | 16 | use PHPStan\PhpDocParser\Ast\PhpDoc\AssertTagValueNode;
|
|
53 | 54 | use PHPStan\PhpDocParser\Lexer\Lexer;
|
54 | 55 | use PHPUnit\Framework\TestCase;
|
55 | 56 | use function count;
|
| 57 | +use function sprintf; |
56 | 58 | use const PHP_EOL;
|
57 | 59 |
|
58 | 60 | class PhpDocParserTest extends TestCase
|
@@ -5709,4 +5711,49 @@ public function testReturnTypeLinesAndIndexes(string $phpDoc, array $lines): voi
|
5709 | 5711 | $this->assertSame($lines[3], $type->getAttribute(Attribute::END_INDEX));
|
5710 | 5712 | }
|
5711 | 5713 |
|
| 5714 | + /** |
| 5715 | + * @dataProvider provideTagsWithNumbers |
| 5716 | + * @dataProvider provideSpecializedTags |
| 5717 | + * @dataProvider provideParamTagsData |
| 5718 | + * @dataProvider provideTypelessParamTagsData |
| 5719 | + * @dataProvider provideVarTagsData |
| 5720 | + * @dataProvider provideReturnTagsData |
| 5721 | + * @dataProvider provideThrowsTagsData |
| 5722 | + * @dataProvider provideMixinTagsData |
| 5723 | + * @dataProvider provideDeprecatedTagsData |
| 5724 | + * @dataProvider providePropertyTagsData |
| 5725 | + * @dataProvider provideMethodTagsData |
| 5726 | + * @dataProvider provideSingleLinePhpDocData |
| 5727 | + * @dataProvider provideMultiLinePhpDocData |
| 5728 | + * @dataProvider provideTemplateTagsData |
| 5729 | + * @dataProvider provideExtendsTagsData |
| 5730 | + * @dataProvider provideTypeAliasTagsData |
| 5731 | + * @dataProvider provideTypeAliasImportTagsData |
| 5732 | + * @dataProvider provideAssertTagsData |
| 5733 | + * @dataProvider provideRealWorldExampleData |
| 5734 | + * @dataProvider provideDescriptionWithOrWithoutHtml |
| 5735 | + * @dataProvider provideTagsWithBackslash |
| 5736 | + * @dataProvider provideSelfOutTagsData |
| 5737 | + * @dataProvider provideParamOutTagsData |
| 5738 | + */ |
| 5739 | + public function testVerifyAttributes(string $label, string $input): void |
| 5740 | + { |
| 5741 | + $usedAttributes = ['lines' => true, 'indexes' => true]; |
| 5742 | + $constExprParser = new ConstExprParser(true, true, $usedAttributes); |
| 5743 | + $typeParser = new TypeParser($constExprParser, true, $usedAttributes); |
| 5744 | + $phpDocParser = new PhpDocParser($typeParser, $constExprParser, true, true, $usedAttributes); |
| 5745 | + $tokens = new TokenIterator($this->lexer->tokenize($input)); |
| 5746 | + |
| 5747 | + $visitor = new NodeCollectingVisitor(); |
| 5748 | + $traverser = new NodeTraverser([$visitor]); |
| 5749 | + $traverser->traverse([$phpDocParser->parse($tokens)]); |
| 5750 | + |
| 5751 | + foreach ($visitor->nodes as $node) { |
| 5752 | + $this->assertNotNull($node->getAttribute(Attribute::START_LINE), sprintf('%s: %s', $label, $node)); |
| 5753 | + $this->assertNotNull($node->getAttribute(Attribute::END_LINE), sprintf('%s: %s', $label, $node)); |
| 5754 | + $this->assertNotNull($node->getAttribute(Attribute::START_INDEX), sprintf('%s: %s', $label, $node)); |
| 5755 | + $this->assertNotNull($node->getAttribute(Attribute::END_INDEX), sprintf('%s: %s', $label, $node)); |
| 5756 | + } |
| 5757 | + } |
| 5758 | + |
5712 | 5759 | }
|
0 commit comments