File tree Expand file tree Collapse file tree 3 files changed +26
-7
lines changed
tests/PHPStan/Analyser/nsrt Expand file tree Collapse file tree 3 files changed +26
-7
lines changed Original file line number Diff line number Diff line change @@ -31,12 +31,12 @@ class DOMNode
31
31
{
32
32
33
33
/**
34
- * @var DOMNamedNodeMap|null
34
+ * @var DOMNamedNodeMap<DOMAttr> |null
35
35
*/
36
36
public $attributes;
37
37
38
38
/**
39
- * @phpstan-assert-if-true =DOMNamedNodeMap $this->attributes
39
+ * @phpstan-assert-if-true =DOMNamedNodeMap<DOMAttr> $this->attributes
40
40
* @return bool
41
41
*/
42
42
public function hasAttributes() {}
@@ -46,7 +46,7 @@ class DOMNode
46
46
class DOMElement extends DOMNode
47
47
{
48
48
49
- /** @var DOMNamedNodeMap */
49
+ /** @var DOMNamedNodeMap<DOMAttr> */
50
50
public $attributes;
51
51
52
52
/** @var DOMDocument */
@@ -155,6 +155,10 @@ class DOMProcessingInstruction
155
155
}
156
156
157
157
/**
158
+ * @template-covariant TNode as DOMNode
159
+ * @implements Traversable<int, TNode>
160
+ * @implements IteratorAggregate<int, TNode>
161
+ *
158
162
* @property-read int $length
159
163
*/
160
164
class DOMNamedNodeMap
Original file line number Diff line number Diff line change @@ -9,18 +9,18 @@ class Foo
9
9
public function test (\DOMNode $ node ): void
10
10
{
11
11
if ($ node ->hasAttributes ()) {
12
- assertType ('DOMNamedNodeMap ' , $ node ->attributes );
12
+ assertType ('DOMNamedNodeMap<DOMAttr> ' , $ node ->attributes );
13
13
} else {
14
- assertType ('DOMNamedNodeMap|null ' , $ node ->attributes );
14
+ assertType ('DOMNamedNodeMap<DOMAttr> |null ' , $ node ->attributes );
15
15
}
16
16
}
17
17
18
18
public function testElement (\DOMElement $ node ): void
19
19
{
20
20
if ($ node ->hasAttributes ()) {
21
- assertType ('DOMNamedNodeMap ' , $ node ->attributes );
21
+ assertType ('DOMNamedNodeMap<DOMAttr> ' , $ node ->attributes );
22
22
} else {
23
- assertType ('DOMNamedNodeMap ' , $ node ->attributes );
23
+ assertType ('DOMNamedNodeMap<DOMAttr> ' , $ node ->attributes );
24
24
}
25
25
}
26
26
}
Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types = 1 );
2
+
3
+ namespace Bug13365 ;
4
+
5
+ use function PHPStan \Testing \assertType ;
6
+
7
+ class Foo
8
+ {
9
+ public function test (\DOMElement $ element ): void
10
+ {
11
+ foreach ($ element ->attributes ?? [] as $ attr ) {
12
+ assertType ('DOMAttr ' , $ attr );
13
+ }
14
+ }
15
+ }
You can’t perform that action at this time.
0 commit comments