Skip to content

Commit fcddeef

Browse files
Fix DOMElement::$attributes stub
1 parent 7cc549e commit fcddeef

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

stubs/dom.stub

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class DOMNode
3636
public $attributes;
3737

3838
/**
39-
* @phpstan-assert-if-true !null $this->attributes
39+
* @phpstan-assert-if-true =DOMNamedNodeMap $this->attributes
4040
* @return bool
4141
*/
4242
public function hasAttributes() {}
@@ -46,6 +46,9 @@ class DOMNode
4646
class DOMElement extends DOMNode
4747
{
4848

49+
/** @var DOMNamedNodeMap */
50+
public $attributes;
51+
4952
/** @var DOMDocument */
5053
public $ownerDocument;
5154

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Bug13076;
4+
5+
use function PHPStan\Testing\assertType;
6+
7+
class Foo
8+
{
9+
public function test(\DOMNode $node): void
10+
{
11+
if ($node->hasAttributes()) {
12+
assertType('DOMNamedNodeMap', $node->attributes);
13+
} else {
14+
assertType('DOMNamedNodeMap|null', $node->attributes);
15+
}
16+
}
17+
18+
public function testElement(\DOMElement $node): void
19+
{
20+
if ($node->hasAttributes()) {
21+
assertType('DOMNamedNodeMap', $node->attributes);
22+
} else {
23+
assertType('DOMNamedNodeMap', $node->attributes);
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)