Skip to content

Commit d365526

Browse files
Add test
1 parent 0748138 commit d365526

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

tests/PHPStan/Analyser/nsrt/bug-9435.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,36 @@ function notFalseCheck(mixed $input, bool $allow_null = false): void
142142
$a = x();
143143
notFalseCheck(allow_null: true, input: $a);
144144
assertType('string|null', $a); // correct (string|null)
145+
146+
/** @phpstan-assert ($allow_null is false ? string : string|null) $input */
147+
function checkWithVariadics(mixed $input, bool $allow_null = false, ...$more): void
148+
{
149+
}
150+
151+
$a = x();
152+
checkWithVariadics($a);
153+
assertType('string', $a); // incorrect: should be string but is string|null
154+
155+
$a = x();
156+
checkWithVariadics($a, false);
157+
assertType('string', $a); // correct (string)
158+
159+
$a = x();
160+
checkWithVariadics($a, allow_null: false);
161+
assertType('string', $a); // correct (string)
162+
163+
$a = x();
164+
checkWithVariadics(allow_null: false, input: $a);
165+
assertType('string', $a); // correct (string)
166+
167+
$a = x();
168+
checkWithVariadics($a, true);
169+
assertType('string|null', $a); // correct (string|null)
170+
171+
$a = x();
172+
checkWithVariadics($a, allow_null: true);
173+
assertType('string|null', $a); // correct (string|null)
174+
175+
$a = x();
176+
checkWithVariadics(allow_null: true, input: $a);
177+
assertType('string|null', $a); // correct (string|null)

0 commit comments

Comments
 (0)