Skip to content

Commit 9c60a2c

Browse files
committed
DOMNode::hasAttributes() assertions
1 parent 94ad25f commit 9c60a2c

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

stubs/dom.stub

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ class DOMNode
3434
* @var DOMNamedNodeMap<DOMAttr>|null
3535
*/
3636
public $attributes;
37+
38+
/**
39+
* @phpstan-assert-if-true DOMNamedNodeMap<DOMAttr> $this->attributes
40+
* @phpstan-assert-if-false null $this->attributes
41+
*/
42+
public function hasAttributes(): bool {}
3743
}
3844

3945
class DOMElement extends DOMNode

tests/PHPStan/Rules/Properties/data/dom-legacy-ext-template-nodes.php

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,9 @@
33
use function PHPStan\Testing\assertType;
44

55
function basic_node(\DOMNode $node): void {
6-
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
7-
};
8-
9-
function element_node(\DOMElement $node): void
10-
{
11-
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
12-
$attribute = $node->attributes->getNamedItem('class');
13-
if ($attribute === null) {
14-
return;
6+
if ($node->hasAttributes()) {
7+
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
8+
} else {
9+
assertType('null', $node->attributes);
1510
}
16-
assertType(DOMAttr::class, $attribute);
17-
assertType('string', $attribute->value);
18-
}
11+
};

0 commit comments

Comments
 (0)