Skip to content

Commit 333e386

Browse files
phpstan-botclaude
andcommitted
Add isset() tests for bug-14393
Add tests for isset($this->i) and isset($o->i) across all property variants (initialized, uninitialized, PHPDoc-only, nullable, etc.) as requested by reviewer. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 795c612 commit 333e386

File tree

3 files changed

+39
-3
lines changed

3 files changed

+39
-3
lines changed

tests/PHPStan/Rules/Variables/IssetRuleTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,4 +526,28 @@ public function testBug9503(): void
526526
$this->analyse([__DIR__ . '/data/bug-9503.php'], []);
527527
}
528528

529+
public function testBug14393(): void
530+
{
531+
$this->treatPhpDocTypesAsCertain = true;
532+
533+
$this->analyse([__DIR__ . '/data/bug-14393.php'], [
534+
[
535+
'Property Bug14393\MyClass::$i (int) in isset() is not nullable.',
536+
12,
537+
],
538+
[
539+
'Property Bug14393\MyClassPhpDoc::$i (int) in isset() is not nullable.',
540+
35,
541+
],
542+
[
543+
'Property Bug14393\MyClass::$i (int) in isset() is not nullable.',
544+
75,
545+
],
546+
[
547+
'Property Bug14393\MyClassPhpDoc::$i (int) in isset() is not nullable.',
548+
85,
549+
],
550+
]);
551+
}
552+
529553
}

tests/PHPStan/Rules/Variables/NullCoalesceRuleTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,15 +396,15 @@ public function testBug14393(): void
396396
],
397397
[
398398
'Property Bug14393\MyClassPhpDoc::$i (int) on left side of ?? is not nullable.',
399-
32,
399+
34,
400400
],
401401
[
402402
'Property Bug14393\MyClass::$i (int) on left side of ?? is not nullable.',
403-
68,
403+
74,
404404
],
405405
[
406406
'Property Bug14393\MyClassPhpDoc::$i (int) on left side of ?? is not nullable.',
407-
76,
407+
84,
408408
],
409409
]);
410410
}

tests/PHPStan/Rules/Variables/data/bug-14393.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class MyClass
99
public function doFoo(): void
1010
{
1111
var_dump($this->i ?? -1);
12+
var_dump(isset($this->i));
1213
}
1314
}
1415

@@ -19,6 +20,7 @@ class MyClassUninitialized
1920
public function doFoo(): void
2021
{
2122
var_dump($this->i ?? -1);
23+
var_dump(isset($this->i));
2224
}
2325
}
2426

@@ -30,6 +32,7 @@ class MyClassPhpDoc
3032
public function doFoo(): void
3133
{
3234
var_dump($this->i ?? -1);
35+
var_dump(isset($this->i));
3336
}
3437
}
3538

@@ -40,6 +43,7 @@ class MyClassNullable
4043
public function doFoo(): void
4144
{
4245
var_dump($this->i ?? -1);
46+
var_dump(isset($this->i));
4347
}
4448
}
4549

@@ -50,6 +54,7 @@ class MyClassNullableWithDefault
5054
public function doFoo(): void
5155
{
5256
var_dump($this->i ?? -1);
57+
var_dump(isset($this->i));
5358
}
5459
}
5560

@@ -60,29 +65,36 @@ class MyClassNullableWithNullDefault
6065
public function doFoo(): void
6166
{
6267
var_dump($this->i ?? -1);
68+
var_dump(isset($this->i));
6369
}
6470
}
6571

6672
$o = new MyClass();
6773

6874
var_dump($o->i ?? -1);
75+
var_dump(isset($o->i));
6976

7077
$o2 = new MyClassUninitialized();
7178

7279
var_dump($o2->i ?? -1);
80+
var_dump(isset($o2->i));
7381

7482
$o3 = new MyClassPhpDoc();
7583

7684
var_dump($o3->i ?? -1);
85+
var_dump(isset($o3->i));
7786

7887
$o4 = new MyClassNullable();
7988

8089
var_dump($o4->i ?? -1);
90+
var_dump(isset($o4->i));
8191

8292
$o5 = new MyClassNullableWithDefault();
8393

8494
var_dump($o5->i ?? -1);
95+
var_dump(isset($o5->i));
8596

8697
$o6 = new MyClassNullableWithNullDefault();
8798

8899
var_dump($o6->i ?? -1);
100+
var_dump(isset($o6->i));

0 commit comments

Comments
 (0)