diff --git a/ext/spl/spl_directory.stub.php b/ext/spl/spl_directory.stub.php index ceb4b7124b5..c9a7f9ff977 100644 --- a/ext/spl/spl_directory.stub.php +++ b/ext/spl/spl_directory.stub.php @@ -279,10 +279,10 @@ class SplFileObject extends SplFileInfo implements RecursiveIterator, SeekableIt public function getMaxLineLen(): int {} /** @tentative-return-type */ - public function hasChildren(): bool {} + public function hasChildren(): false {} /** @tentative-return-type */ - public function getChildren(): ?RecursiveIterator {} + public function getChildren(): null {} /** @tentative-return-type */ public function seek(int $line): void {} diff --git a/ext/spl/spl_directory_arginfo.h b/ext/spl/spl_directory_arginfo.h index bcdb51ea542..30d54346d2a 100644 --- a/ext/spl/spl_directory_arginfo.h +++ b/ext/spl/spl_directory_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 3f2caf1c46760d8ef629ccb2e94ab0dba09f713b */ + * Stub hash: 3ada856cfa2e50708b43125f819706176b1953f7 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) @@ -254,9 +254,10 @@ ZEND_END_ARG_INFO() #define arginfo_class_SplFileObject_getMaxLineLen arginfo_class_FilesystemIterator_getFlags -#define arginfo_class_SplFileObject_hasChildren arginfo_class_SplFileInfo_isWritable +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SplFileObject_hasChildren, 0, 0, IS_FALSE, 0) +ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_SplFileObject_getChildren, 0, 0, RecursiveIterator, 1) +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_SplFileObject_getChildren, 0, 0, MAY_BE_NULL) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SplFileObject_seek, 0, 1, IS_VOID, 0) diff --git a/ext/spl/spl_iterators.stub.php b/ext/spl/spl_iterators.stub.php index 9d80717f85d..4235ed100ba 100644 --- a/ext/spl/spl_iterators.stub.php +++ b/ext/spl/spl_iterators.stub.php @@ -14,7 +14,7 @@ class EmptyIterator implements Iterator public function key(): never {} /** @tentative-return-type */ - public function valid(): bool {} + public function valid(): false {} /** @tentative-return-type */ public function rewind(): void {} diff --git a/ext/spl/spl_iterators_arginfo.h b/ext/spl/spl_iterators_arginfo.h index 5b29dc293f1..91735b58d8d 100644 --- a/ext/spl/spl_iterators_arginfo.h +++ b/ext/spl/spl_iterators_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 889a6eed2d62fbb6af168146840189d37765dbaa */ + * Stub hash: ca94fd0da2a2ed5ddd7e0a40b377ff18dd9e2ced */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_current, 0, 0, IS_NEVER, 0) ZEND_END_ARG_INFO() @@ -9,7 +9,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_EmptyIterator_key arginfo_class_EmptyIterator_current -ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_valid, 0, 0, _IS_BOOL, 0) +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_valid, 0, 0, IS_FALSE, 0) ZEND_END_ARG_INFO() #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 ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0) ZEND_END_ARG_INFO() -#define arginfo_class_CallbackFilterIterator_accept arginfo_class_EmptyIterator_valid +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CallbackFilterIterator_accept, 0, 0, _IS_BOOL, 0) +ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveCallbackFilterIterator___construct, 0, 0, 2) ZEND_ARG_OBJ_INFO(0, iterator, RecursiveIterator, 0) ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0) ZEND_END_ARG_INFO() -#define arginfo_class_RecursiveCallbackFilterIterator_hasChildren arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveCallbackFilterIterator_hasChildren arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveCallbackFilterIterator_getChildren, 0, 0, RecursiveCallbackFilterIterator, 0) ZEND_END_ARG_INFO() -#define arginfo_class_RecursiveIterator_hasChildren arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveIterator_hasChildren arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveIterator_getChildren, 0, 0, RecursiveIterator, 1) ZEND_END_ARG_INFO() @@ -44,7 +45,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_RecursiveIteratorIterator_rewind arginfo_class_EmptyIterator_next -#define arginfo_class_RecursiveIteratorIterator_valid arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveIteratorIterator_valid arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RecursiveIteratorIterator_key, 0, 0, IS_MIXED, 0) ZEND_END_ARG_INFO() @@ -67,7 +68,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_RecursiveIteratorIterator_endIteration arginfo_class_EmptyIterator_next -#define arginfo_class_RecursiveIteratorIterator_callHasChildren arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveIteratorIterator_callHasChildren arginfo_class_CallbackFilterIterator_accept #define arginfo_class_RecursiveIteratorIterator_callGetChildren arginfo_class_RecursiveIterator_getChildren @@ -96,7 +97,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_IteratorIterator_rewind arginfo_class_EmptyIterator_next -#define arginfo_class_IteratorIterator_valid arginfo_class_EmptyIterator_valid +#define arginfo_class_IteratorIterator_valid arginfo_class_CallbackFilterIterator_accept #define arginfo_class_IteratorIterator_key arginfo_class_RecursiveIteratorIterator_key @@ -104,7 +105,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_IteratorIterator_next arginfo_class_EmptyIterator_next -#define arginfo_class_FilterIterator_accept arginfo_class_EmptyIterator_valid +#define arginfo_class_FilterIterator_accept arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_INFO_EX(arginfo_class_FilterIterator___construct, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0) @@ -118,14 +119,14 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveFilterIterator___construct, 0, 0, ZEND_ARG_OBJ_INFO(0, iterator, RecursiveIterator, 0) ZEND_END_ARG_INFO() -#define arginfo_class_RecursiveFilterIterator_hasChildren arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveFilterIterator_hasChildren arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveFilterIterator_getChildren, 0, 0, RecursiveFilterIterator, 1) ZEND_END_ARG_INFO() #define arginfo_class_ParentIterator___construct arginfo_class_RecursiveFilterIterator___construct -#define arginfo_class_ParentIterator_accept arginfo_class_EmptyIterator_valid +#define arginfo_class_ParentIterator_accept arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SeekableIterator_seek, 0, 1, IS_VOID, 0) ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0) @@ -139,7 +140,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_LimitIterator_rewind arginfo_class_EmptyIterator_next -#define arginfo_class_LimitIterator_valid arginfo_class_EmptyIterator_valid +#define arginfo_class_LimitIterator_valid arginfo_class_CallbackFilterIterator_accept #define arginfo_class_LimitIterator_next arginfo_class_EmptyIterator_next @@ -156,11 +157,11 @@ ZEND_END_ARG_INFO() #define arginfo_class_CachingIterator_rewind arginfo_class_EmptyIterator_next -#define arginfo_class_CachingIterator_valid arginfo_class_EmptyIterator_valid +#define arginfo_class_CachingIterator_valid arginfo_class_CallbackFilterIterator_accept #define arginfo_class_CachingIterator_next arginfo_class_EmptyIterator_next -#define arginfo_class_CachingIterator_hasNext arginfo_class_EmptyIterator_valid +#define arginfo_class_CachingIterator_hasNext arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator___toString, 0, 0, IS_STRING, 0) ZEND_END_ARG_INFO() @@ -198,7 +199,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveCachingIterator___construct, 0, 0, ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "RecursiveCachingIterator::CALL_TOSTRING") ZEND_END_ARG_INFO() -#define arginfo_class_RecursiveCachingIterator_hasChildren arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveCachingIterator_hasChildren arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveCachingIterator_getChildren, 0, 0, RecursiveCachingIterator, 1) ZEND_END_ARG_INFO() @@ -207,7 +208,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_NoRewindIterator_rewind arginfo_class_EmptyIterator_next -#define arginfo_class_NoRewindIterator_valid arginfo_class_EmptyIterator_valid +#define arginfo_class_NoRewindIterator_valid arginfo_class_CallbackFilterIterator_accept #define arginfo_class_NoRewindIterator_key arginfo_class_RecursiveIteratorIterator_key @@ -224,7 +225,7 @@ ZEND_END_ARG_INFO() #define arginfo_class_AppendIterator_rewind arginfo_class_EmptyIterator_next -#define arginfo_class_AppendIterator_valid arginfo_class_EmptyIterator_valid +#define arginfo_class_AppendIterator_valid arginfo_class_CallbackFilterIterator_accept #define arginfo_class_AppendIterator_current arginfo_class_RecursiveIteratorIterator_key @@ -248,7 +249,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RegexIterator___construct, 0, 0, 2) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pregFlags, IS_LONG, 0, "0") ZEND_END_ARG_INFO() -#define arginfo_class_RegexIterator_accept arginfo_class_EmptyIterator_valid +#define arginfo_class_RegexIterator_accept arginfo_class_CallbackFilterIterator_accept #define arginfo_class_RegexIterator_getMode arginfo_class_RecursiveIteratorIterator_getDepth @@ -277,9 +278,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveRegexIterator___construct, 0, 0, 2 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pregFlags, IS_LONG, 0, "0") ZEND_END_ARG_INFO() -#define arginfo_class_RecursiveRegexIterator_accept arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveRegexIterator_accept arginfo_class_CallbackFilterIterator_accept -#define arginfo_class_RecursiveRegexIterator_hasChildren arginfo_class_EmptyIterator_valid +#define arginfo_class_RecursiveRegexIterator_hasChildren arginfo_class_CallbackFilterIterator_accept ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveRegexIterator_getChildren, 0, 0, RecursiveRegexIterator, 0) ZEND_END_ARG_INFO() diff --git a/ext/spl/tests/iterator_009.phpt b/ext/spl/tests/iterator_009.phpt index bd8eb99c4d0..6fa9c440e1b 100644 --- a/ext/spl/tests/iterator_009.phpt +++ b/ext/spl/tests/iterator_009.phpt @@ -10,7 +10,7 @@ class EmptyIteratorEx extends EmptyIterator echo __METHOD__ . "\n"; parent::rewind(); } - function valid(): bool + function valid(): false { echo __METHOD__ . "\n"; return parent::valid();