Skip to content

Commit 94ad25f

Browse files
committed
Revert "Try to parameterrize DOMAttr"
This reverts commit 3d93d42.
1 parent 5f475ea commit 94ad25f

File tree

2 files changed

+10
-53
lines changed

2 files changed

+10
-53
lines changed

stubs/dom.stub

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,9 @@ class DOMNode
3131
{
3232
/**
3333
* @readonly
34-
* @var DOMNamedNodeMap<DOMAttr<string>>|null
34+
* @var DOMNamedNodeMap<DOMAttr>|null
3535
*/
3636
public $attributes;
37-
38-
/** @phpstan-assert-if-true !null $this->attributes */
39-
public function hasAttributes(): bool
4037
}
4138

4239
class DOMElement extends DOMNode
@@ -45,13 +42,6 @@ class DOMElement extends DOMNode
4542
/** @var DOMDocument */
4643
public $ownerDocument;
4744

48-
/**
49-
* @readonly
50-
* @inherited
51-
* @var DOMNamedNodeMap<DOMAttr<string>>|null
52-
*/
53-
public $attributes;
54-
5545
/**
5646
* @param string $name
5747
* @return DOMNodeList<DOMElement>
@@ -65,23 +55,6 @@ class DOMElement extends DOMNode
6555
*/
6656
public function getElementsByTagNameNS ($namespaceURI, $localName) {}
6757

68-
/**
69-
* @template T of string
70-
* @param T $qualifiedName
71-
* @return bool
72-
* @phpstan-assert-if-true (T is 'xml:id' ? DOMNameSpaceNode : DOMAttr<T>) $this->hasAttribute($qualifiedName)
73-
* @phpstan-assert-if-true DOMNameSpaceNode<DOMAttr<T>|DOMAttr<string>> $this->$attributes
74-
*/
75-
public function hasAttribute(string $qualifiedName): bool
76-
77-
public function hasAttributeNS(?string $namespace, string $localName): bool
78-
79-
/**
80-
* @template T of string
81-
* @param T $qualifiedName
82-
* @return (T is 'xml:id' ? DOMNameSpaceNode|false : DOMAttr|false)
83-
*/
84-
public function getAttributeNode(string $qualifiedName): DOMAttr<T>|DOMNameSpaceNode|false
8558
}
8659

8760
/**
@@ -113,20 +86,12 @@ class DOMXPath
11386

11487
}
11588

116-
/**
117-
* @template Name as string
118-
*/
11989
class DOMAttr extends DOMNode
12090
{
91+
12192
/** @var DOMDocument */
12293
public $ownerDocument;
12394

124-
/**
125-
* @var Name
126-
* @readonly
127-
*/
128-
public $name;
129-
13095
}
13196

13297
class DOMCharacterData extends DOMNode

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

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

55
function basic_node(\DOMNode $node): void {
6-
if ($node->hasAttributes()) {
7-
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
8-
} else {
9-
assertType('null', $node->attributes);
10-
}
6+
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
117
};
128

13-
function element_node(\DOMElement $element): void
9+
function element_node(\DOMElement $node): void
1410
{
15-
if ($element->hasAttribute('class')) {
16-
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $element->attributes);
17-
$attribute = $element->attributes->getNamedItem('class');
18-
if ($attribute === null) {
19-
return;
20-
}
21-
assertType(DOMAttr::class, $attribute);
22-
assertType('string', $attribute->value);
23-
} else {
24-
assertType('null', $element->attributes);
11+
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
12+
$attribute = $node->attributes->getNamedItem('class');
13+
if ($attribute === null) {
14+
return;
2515
}
16+
assertType(DOMAttr::class, $attribute);
17+
assertType('string', $attribute->value);
2618
}

0 commit comments

Comments
 (0)