Skip to content

Commit 8dbfb15

Browse files
committed
Use more specific return types in SPL
1 parent c12da03 commit 8dbfb15

File tree

5 files changed

+29
-27
lines changed

5 files changed

+29
-27
lines changed

ext/spl/spl_directory.stub.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,10 +279,10 @@ public function setMaxLineLen(int $maxLength): void {}
279279
public function getMaxLineLen(): int {}
280280

281281
/** @tentative-return-type */
282-
public function hasChildren(): bool {}
282+
public function hasChildren(): false {}
283283

284284
/** @tentative-return-type */
285-
public function getChildren(): ?RecursiveIterator {}
285+
public function getChildren(): null {}
286286

287287
/** @tentative-return-type */
288288
public function seek(int $line): void {}

ext/spl/spl_directory_arginfo.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 3f2caf1c46760d8ef629ccb2e94ab0dba09f713b */
2+
* Stub hash: 3ada856cfa2e50708b43125f819706176b1953f7 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo___construct, 0, 0, 1)
55
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
@@ -254,9 +254,10 @@ ZEND_END_ARG_INFO()
254254

255255
#define arginfo_class_SplFileObject_getMaxLineLen arginfo_class_FilesystemIterator_getFlags
256256

257-
#define arginfo_class_SplFileObject_hasChildren arginfo_class_SplFileInfo_isWritable
257+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SplFileObject_hasChildren, 0, 0, IS_FALSE, 0)
258+
ZEND_END_ARG_INFO()
258259

259-
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_SplFileObject_getChildren, 0, 0, RecursiveIterator, 1)
260+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_SplFileObject_getChildren, 0, 0, MAY_BE_NULL)
260261
ZEND_END_ARG_INFO()
261262

262263
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SplFileObject_seek, 0, 1, IS_VOID, 0)

ext/spl/spl_iterators.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public function next(): void {}
1414
public function key(): never {}
1515

1616
/** @tentative-return-type */
17-
public function valid(): bool {}
17+
public function valid(): false {}
1818

1919
/** @tentative-return-type */
2020
public function rewind(): void {}

ext/spl/spl_iterators_arginfo.h

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 889a6eed2d62fbb6af168146840189d37765dbaa */
2+
* Stub hash: ca94fd0da2a2ed5ddd7e0a40b377ff18dd9e2ced */
33

44
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_current, 0, 0, IS_NEVER, 0)
55
ZEND_END_ARG_INFO()
@@ -9,7 +9,7 @@ ZEND_END_ARG_INFO()
99

1010
#define arginfo_class_EmptyIterator_key arginfo_class_EmptyIterator_current
1111

12-
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_valid, 0, 0, _IS_BOOL, 0)
12+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_valid, 0, 0, IS_FALSE, 0)
1313
ZEND_END_ARG_INFO()
1414

1515
#define arginfo_class_EmptyIterator_rewind arginfo_class_EmptyIterator_next
@@ -19,19 +19,20 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CallbackFilterIterator___construct, 0, 0, 2
1919
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
2020
ZEND_END_ARG_INFO()
2121

22-
#define arginfo_class_CallbackFilterIterator_accept arginfo_class_EmptyIterator_valid
22+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CallbackFilterIterator_accept, 0, 0, _IS_BOOL, 0)
23+
ZEND_END_ARG_INFO()
2324

2425
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveCallbackFilterIterator___construct, 0, 0, 2)
2526
ZEND_ARG_OBJ_INFO(0, iterator, RecursiveIterator, 0)
2627
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
2728
ZEND_END_ARG_INFO()
2829

29-
#define arginfo_class_RecursiveCallbackFilterIterator_hasChildren arginfo_class_EmptyIterator_valid
30+
#define arginfo_class_RecursiveCallbackFilterIterator_hasChildren arginfo_class_CallbackFilterIterator_accept
3031

3132
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveCallbackFilterIterator_getChildren, 0, 0, RecursiveCallbackFilterIterator, 0)
3233
ZEND_END_ARG_INFO()
3334

34-
#define arginfo_class_RecursiveIterator_hasChildren arginfo_class_EmptyIterator_valid
35+
#define arginfo_class_RecursiveIterator_hasChildren arginfo_class_CallbackFilterIterator_accept
3536

3637
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveIterator_getChildren, 0, 0, RecursiveIterator, 1)
3738
ZEND_END_ARG_INFO()
@@ -44,7 +45,7 @@ ZEND_END_ARG_INFO()
4445

4546
#define arginfo_class_RecursiveIteratorIterator_rewind arginfo_class_EmptyIterator_next
4647

47-
#define arginfo_class_RecursiveIteratorIterator_valid arginfo_class_EmptyIterator_valid
48+
#define arginfo_class_RecursiveIteratorIterator_valid arginfo_class_CallbackFilterIterator_accept
4849

4950
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RecursiveIteratorIterator_key, 0, 0, IS_MIXED, 0)
5051
ZEND_END_ARG_INFO()
@@ -67,7 +68,7 @@ ZEND_END_ARG_INFO()
6768

6869
#define arginfo_class_RecursiveIteratorIterator_endIteration arginfo_class_EmptyIterator_next
6970

70-
#define arginfo_class_RecursiveIteratorIterator_callHasChildren arginfo_class_EmptyIterator_valid
71+
#define arginfo_class_RecursiveIteratorIterator_callHasChildren arginfo_class_CallbackFilterIterator_accept
7172

7273
#define arginfo_class_RecursiveIteratorIterator_callGetChildren arginfo_class_RecursiveIterator_getChildren
7374

@@ -96,15 +97,15 @@ ZEND_END_ARG_INFO()
9697

9798
#define arginfo_class_IteratorIterator_rewind arginfo_class_EmptyIterator_next
9899

99-
#define arginfo_class_IteratorIterator_valid arginfo_class_EmptyIterator_valid
100+
#define arginfo_class_IteratorIterator_valid arginfo_class_CallbackFilterIterator_accept
100101

101102
#define arginfo_class_IteratorIterator_key arginfo_class_RecursiveIteratorIterator_key
102103

103104
#define arginfo_class_IteratorIterator_current arginfo_class_RecursiveIteratorIterator_key
104105

105106
#define arginfo_class_IteratorIterator_next arginfo_class_EmptyIterator_next
106107

107-
#define arginfo_class_FilterIterator_accept arginfo_class_EmptyIterator_valid
108+
#define arginfo_class_FilterIterator_accept arginfo_class_CallbackFilterIterator_accept
108109

109110
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_FilterIterator___construct, 0, 0, 1)
110111
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
@@ -118,14 +119,14 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveFilterIterator___construct, 0, 0,
118119
ZEND_ARG_OBJ_INFO(0, iterator, RecursiveIterator, 0)
119120
ZEND_END_ARG_INFO()
120121

121-
#define arginfo_class_RecursiveFilterIterator_hasChildren arginfo_class_EmptyIterator_valid
122+
#define arginfo_class_RecursiveFilterIterator_hasChildren arginfo_class_CallbackFilterIterator_accept
122123

123124
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveFilterIterator_getChildren, 0, 0, RecursiveFilterIterator, 1)
124125
ZEND_END_ARG_INFO()
125126

126127
#define arginfo_class_ParentIterator___construct arginfo_class_RecursiveFilterIterator___construct
127128

128-
#define arginfo_class_ParentIterator_accept arginfo_class_EmptyIterator_valid
129+
#define arginfo_class_ParentIterator_accept arginfo_class_CallbackFilterIterator_accept
129130

130131
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SeekableIterator_seek, 0, 1, IS_VOID, 0)
131132
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
@@ -139,7 +140,7 @@ ZEND_END_ARG_INFO()
139140

140141
#define arginfo_class_LimitIterator_rewind arginfo_class_EmptyIterator_next
141142

142-
#define arginfo_class_LimitIterator_valid arginfo_class_EmptyIterator_valid
143+
#define arginfo_class_LimitIterator_valid arginfo_class_CallbackFilterIterator_accept
143144

144145
#define arginfo_class_LimitIterator_next arginfo_class_EmptyIterator_next
145146

@@ -156,11 +157,11 @@ ZEND_END_ARG_INFO()
156157

157158
#define arginfo_class_CachingIterator_rewind arginfo_class_EmptyIterator_next
158159

159-
#define arginfo_class_CachingIterator_valid arginfo_class_EmptyIterator_valid
160+
#define arginfo_class_CachingIterator_valid arginfo_class_CallbackFilterIterator_accept
160161

161162
#define arginfo_class_CachingIterator_next arginfo_class_EmptyIterator_next
162163

163-
#define arginfo_class_CachingIterator_hasNext arginfo_class_EmptyIterator_valid
164+
#define arginfo_class_CachingIterator_hasNext arginfo_class_CallbackFilterIterator_accept
164165

165166
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator___toString, 0, 0, IS_STRING, 0)
166167
ZEND_END_ARG_INFO()
@@ -198,7 +199,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveCachingIterator___construct, 0, 0,
198199
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "RecursiveCachingIterator::CALL_TOSTRING")
199200
ZEND_END_ARG_INFO()
200201

201-
#define arginfo_class_RecursiveCachingIterator_hasChildren arginfo_class_EmptyIterator_valid
202+
#define arginfo_class_RecursiveCachingIterator_hasChildren arginfo_class_CallbackFilterIterator_accept
202203

203204
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveCachingIterator_getChildren, 0, 0, RecursiveCachingIterator, 1)
204205
ZEND_END_ARG_INFO()
@@ -207,7 +208,7 @@ ZEND_END_ARG_INFO()
207208

208209
#define arginfo_class_NoRewindIterator_rewind arginfo_class_EmptyIterator_next
209210

210-
#define arginfo_class_NoRewindIterator_valid arginfo_class_EmptyIterator_valid
211+
#define arginfo_class_NoRewindIterator_valid arginfo_class_CallbackFilterIterator_accept
211212

212213
#define arginfo_class_NoRewindIterator_key arginfo_class_RecursiveIteratorIterator_key
213214

@@ -224,7 +225,7 @@ ZEND_END_ARG_INFO()
224225

225226
#define arginfo_class_AppendIterator_rewind arginfo_class_EmptyIterator_next
226227

227-
#define arginfo_class_AppendIterator_valid arginfo_class_EmptyIterator_valid
228+
#define arginfo_class_AppendIterator_valid arginfo_class_CallbackFilterIterator_accept
228229

229230
#define arginfo_class_AppendIterator_current arginfo_class_RecursiveIteratorIterator_key
230231

@@ -248,7 +249,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RegexIterator___construct, 0, 0, 2)
248249
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pregFlags, IS_LONG, 0, "0")
249250
ZEND_END_ARG_INFO()
250251

251-
#define arginfo_class_RegexIterator_accept arginfo_class_EmptyIterator_valid
252+
#define arginfo_class_RegexIterator_accept arginfo_class_CallbackFilterIterator_accept
252253

253254
#define arginfo_class_RegexIterator_getMode arginfo_class_RecursiveIteratorIterator_getDepth
254255

@@ -277,9 +278,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveRegexIterator___construct, 0, 0, 2
277278
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pregFlags, IS_LONG, 0, "0")
278279
ZEND_END_ARG_INFO()
279280

280-
#define arginfo_class_RecursiveRegexIterator_accept arginfo_class_EmptyIterator_valid
281+
#define arginfo_class_RecursiveRegexIterator_accept arginfo_class_CallbackFilterIterator_accept
281282

282-
#define arginfo_class_RecursiveRegexIterator_hasChildren arginfo_class_EmptyIterator_valid
283+
#define arginfo_class_RecursiveRegexIterator_hasChildren arginfo_class_CallbackFilterIterator_accept
283284

284285
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveRegexIterator_getChildren, 0, 0, RecursiveRegexIterator, 0)
285286
ZEND_END_ARG_INFO()

ext/spl/tests/iterator_009.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class EmptyIteratorEx extends EmptyIterator
1010
echo __METHOD__ . "\n";
1111
parent::rewind();
1212
}
13-
function valid(): bool
13+
function valid(): false
1414
{
1515
echo __METHOD__ . "\n";
1616
return parent::valid();

0 commit comments

Comments
 (0)