@@ -142,3 +142,36 @@ function notFalseCheck(mixed $input, bool $allow_null = false): void
142
142
$ a = x ();
143
143
notFalseCheck (allow_null: true , input: $ a );
144
144
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