Skip to content

Commit 65b9639

Browse files
authored
Declare tentative return types for ext/intl (#6986)
1 parent 54c4c7d commit 65b9639

40 files changed

+946
-852
lines changed

ext/intl/breakiterator/breakiterator.stub.php

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,67 +4,67 @@
44

55
class IntlBreakIterator implements IteratorAggregate
66
{
7-
/** @return IntlBreakIterator|null */
8-
public static function createCharacterInstance(?string $locale = null) {}
7+
/** @tentative-return-type */
8+
public static function createCharacterInstance(?string $locale = null): ?IntlBreakIterator {}
99

10-
/** @return IntlCodePointBreakIterator */
11-
public static function createCodePointInstance() {}
10+
/** @tentative-return-type */
11+
public static function createCodePointInstance(): IntlCodePointBreakIterator {}
1212

13-
/** @return IntlBreakIterator|null */
14-
public static function createLineInstance(?string $locale = null) {}
13+
/** @tentative-return-type */
14+
public static function createLineInstance(?string $locale = null): ?IntlBreakIterator {}
1515

16-
/** @return IntlBreakIterator|null */
17-
public static function createSentenceInstance(?string $locale = null) {}
16+
/** @tentative-return-type */
17+
public static function createSentenceInstance(?string $locale = null): ?IntlBreakIterator {}
1818

19-
/** @return IntlBreakIterator|null */
20-
public static function createTitleInstance(?string $locale = null) {}
19+
/** @tentative-return-type */
20+
public static function createTitleInstance(?string $locale = null): ?IntlBreakIterator {}
2121

22-
/** @return IntlBreakIterator|null */
23-
public static function createWordInstance(?string $locale = null) {}
22+
/** @tentative-return-type */
23+
public static function createWordInstance(?string $locale = null): ?IntlBreakIterator {}
2424

2525
private function __construct() {}
2626

27-
/** @return int */
28-
public function current() {}
27+
/** @tentative-return-type */
28+
public function current(): int {}
2929

30-
/** @return int */
31-
public function first() {}
30+
/** @tentative-return-type */
31+
public function first(): int {}
3232

33-
/** @return int */
34-
public function following(int $offset) {}
33+
/** @tentative-return-type */
34+
public function following(int $offset): int {}
3535

36-
/** @return int */
37-
public function getErrorCode() {}
36+
/** @tentative-return-type */
37+
public function getErrorCode(): int {}
3838

39-
/** @return string|false */
40-
public function getErrorMessage() {}
39+
/** @tentative-return-type */
40+
public function getErrorMessage(): string {}
4141

42-
/** @return string */
43-
public function getLocale(int $type) {}
42+
/** @tentative-return-type */
43+
public function getLocale(int $type): string|false {}
4444

45-
/** @return IntlPartsIterator */
46-
public function getPartsIterator(string $type = IntlPartsIterator::KEY_SEQUENTIAL) {}
45+
/** @tentative-return-type */
46+
public function getPartsIterator(string $type = IntlPartsIterator::KEY_SEQUENTIAL): IntlPartsIterator {}
4747

48-
/** @return string|null */
49-
public function getText() {}
48+
/** @tentative-return-type */
49+
public function getText(): ?string {}
5050

51-
/** @return bool */
52-
public function isBoundary(int $offset) {}
51+
/** @tentative-return-type */
52+
public function isBoundary(int $offset): bool {}
5353

54-
/** @return int */
55-
public function last() {}
54+
/** @tentative-return-type */
55+
public function last(): int {}
5656

57-
/** @return int */
58-
public function next(?int $offset = null) {}
57+
/** @tentative-return-type */
58+
public function next(?int $offset = null): int {}
5959

60-
/** @return int */
61-
public function preceding(int $offset) {}
60+
/** @tentative-return-type */
61+
public function preceding(int $offset): int {}
6262

63-
/** @return int */
64-
public function previous() {}
63+
/** @tentative-return-type */
64+
public function previous(): int {}
6565

66-
/** @return bool|null */
67-
public function setText(string $text) {}
66+
/** @tentative-return-type */
67+
public function setText(string $text): ?bool {} // TODO return false instead of null in case of failure
6868

6969
public function getIterator(): Iterator {}
7070
}
@@ -73,21 +73,21 @@ class IntlRuleBasedBreakIterator extends IntlBreakIterator
7373
{
7474
public function __construct(string $rules, bool $compiled = false) {}
7575

76-
/** @return string|false */
77-
public function getBinaryRules() {}
76+
/** @tentative-return-type */
77+
public function getBinaryRules(): string|false {}
7878

79-
/** @return string|false */
80-
public function getRules() {}
79+
/** @tentative-return-type */
80+
public function getRules(): string|false {}
8181

82-
/** @return int */
83-
public function getRuleStatus() {}
82+
/** @tentative-return-type */
83+
public function getRuleStatus(): int {}
8484

85-
/** @return array|false */
86-
public function getRuleStatusVec() {}
85+
/** @tentative-return-type */
86+
public function getRuleStatusVec(): array|false {}
8787
}
8888

8989
class IntlCodePointBreakIterator extends IntlBreakIterator
9090
{
91-
/** @return int */
92-
public function getLastCodePoint() {}
91+
/** @tentative-return-type */
92+
public function getLastCodePoint(): int {}
9393
}

ext/intl/breakiterator/breakiterator_arginfo.h

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 9e9dc1cd1302038f351f6075393494d1a58f0d74 */
2+
* Stub hash: 1979da7ee2fa55b27f1c91bb4e0ddc37e8505b08 */
33

4-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_createCharacterInstance, 0, 0, 0)
4+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_IntlBreakIterator_createCharacterInstance, 0, 0, IntlBreakIterator, 1)
55
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, locale, IS_STRING, 1, "null")
66
ZEND_END_ARG_INFO()
77

8-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_createCodePointInstance, 0, 0, 0)
8+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_IntlBreakIterator_createCodePointInstance, 0, 0, IntlCodePointBreakIterator, 0)
99
ZEND_END_ARG_INFO()
1010

1111
#define arginfo_class_IntlBreakIterator_createLineInstance arginfo_class_IntlBreakIterator_createCharacterInstance
@@ -16,43 +16,49 @@ ZEND_END_ARG_INFO()
1616

1717
#define arginfo_class_IntlBreakIterator_createWordInstance arginfo_class_IntlBreakIterator_createCharacterInstance
1818

19-
#define arginfo_class_IntlBreakIterator___construct arginfo_class_IntlBreakIterator_createCodePointInstance
19+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator___construct, 0, 0, 0)
20+
ZEND_END_ARG_INFO()
2021

21-
#define arginfo_class_IntlBreakIterator_current arginfo_class_IntlBreakIterator_createCodePointInstance
22+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlBreakIterator_current, 0, 0, IS_LONG, 0)
23+
ZEND_END_ARG_INFO()
2224

23-
#define arginfo_class_IntlBreakIterator_first arginfo_class_IntlBreakIterator_createCodePointInstance
25+
#define arginfo_class_IntlBreakIterator_first arginfo_class_IntlBreakIterator_current
2426

25-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_following, 0, 0, 1)
27+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlBreakIterator_following, 0, 1, IS_LONG, 0)
2628
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
2729
ZEND_END_ARG_INFO()
2830

29-
#define arginfo_class_IntlBreakIterator_getErrorCode arginfo_class_IntlBreakIterator_createCodePointInstance
31+
#define arginfo_class_IntlBreakIterator_getErrorCode arginfo_class_IntlBreakIterator_current
3032

31-
#define arginfo_class_IntlBreakIterator_getErrorMessage arginfo_class_IntlBreakIterator_createCodePointInstance
33+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlBreakIterator_getErrorMessage, 0, 0, IS_STRING, 0)
34+
ZEND_END_ARG_INFO()
3235

33-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_getLocale, 0, 0, 1)
36+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_IntlBreakIterator_getLocale, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
3437
ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
3538
ZEND_END_ARG_INFO()
3639

37-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_getPartsIterator, 0, 0, 0)
40+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_IntlBreakIterator_getPartsIterator, 0, 0, IntlPartsIterator, 0)
3841
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_STRING, 0, "IntlPartsIterator::KEY_SEQUENTIAL")
3942
ZEND_END_ARG_INFO()
4043

41-
#define arginfo_class_IntlBreakIterator_getText arginfo_class_IntlBreakIterator_createCodePointInstance
44+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlBreakIterator_getText, 0, 0, IS_STRING, 1)
45+
ZEND_END_ARG_INFO()
4246

43-
#define arginfo_class_IntlBreakIterator_isBoundary arginfo_class_IntlBreakIterator_following
47+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlBreakIterator_isBoundary, 0, 1, _IS_BOOL, 0)
48+
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
49+
ZEND_END_ARG_INFO()
4450

45-
#define arginfo_class_IntlBreakIterator_last arginfo_class_IntlBreakIterator_createCodePointInstance
51+
#define arginfo_class_IntlBreakIterator_last arginfo_class_IntlBreakIterator_current
4652

47-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_next, 0, 0, 0)
53+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlBreakIterator_next, 0, 0, IS_LONG, 0)
4854
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 1, "null")
4955
ZEND_END_ARG_INFO()
5056

5157
#define arginfo_class_IntlBreakIterator_preceding arginfo_class_IntlBreakIterator_following
5258

53-
#define arginfo_class_IntlBreakIterator_previous arginfo_class_IntlBreakIterator_createCodePointInstance
59+
#define arginfo_class_IntlBreakIterator_previous arginfo_class_IntlBreakIterator_current
5460

55-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlBreakIterator_setText, 0, 0, 1)
61+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlBreakIterator_setText, 0, 1, _IS_BOOL, 1)
5662
ZEND_ARG_TYPE_INFO(0, text, IS_STRING, 0)
5763
ZEND_END_ARG_INFO()
5864

@@ -64,15 +70,17 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlRuleBasedBreakIterator___construct, 0,
6470
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, compiled, _IS_BOOL, 0, "false")
6571
ZEND_END_ARG_INFO()
6672

67-
#define arginfo_class_IntlRuleBasedBreakIterator_getBinaryRules arginfo_class_IntlBreakIterator_createCodePointInstance
73+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_IntlRuleBasedBreakIterator_getBinaryRules, 0, 0, MAY_BE_STRING|MAY_BE_FALSE)
74+
ZEND_END_ARG_INFO()
6875

69-
#define arginfo_class_IntlRuleBasedBreakIterator_getRules arginfo_class_IntlBreakIterator_createCodePointInstance
76+
#define arginfo_class_IntlRuleBasedBreakIterator_getRules arginfo_class_IntlRuleBasedBreakIterator_getBinaryRules
7077

71-
#define arginfo_class_IntlRuleBasedBreakIterator_getRuleStatus arginfo_class_IntlBreakIterator_createCodePointInstance
78+
#define arginfo_class_IntlRuleBasedBreakIterator_getRuleStatus arginfo_class_IntlBreakIterator_current
7279

73-
#define arginfo_class_IntlRuleBasedBreakIterator_getRuleStatusVec arginfo_class_IntlBreakIterator_createCodePointInstance
80+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_IntlRuleBasedBreakIterator_getRuleStatusVec, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE)
81+
ZEND_END_ARG_INFO()
7482

75-
#define arginfo_class_IntlCodePointBreakIterator_getLastCodePoint arginfo_class_IntlBreakIterator_createCodePointInstance
83+
#define arginfo_class_IntlCodePointBreakIterator_getLastCodePoint arginfo_class_IntlBreakIterator_current
7684

7785

7886
ZEND_METHOD(IntlBreakIterator, createCharacterInstance);

ext/intl/breakiterator/breakiterator_iterators.stub.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44

55
class IntlPartsIterator extends IntlIterator
66
{
7-
/** @return IntlBreakIterator */
8-
public function getBreakIterator() {}
7+
/** @tentative-return-type */
8+
public function getBreakIterator(): IntlBreakIterator {}
99
}

ext/intl/breakiterator/breakiterator_iterators_arginfo.h

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

4-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlPartsIterator_getBreakIterator, 0, 0, 0)
4+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_IntlPartsIterator_getBreakIterator, 0, 0, IntlBreakIterator, 0)
55
ZEND_END_ARG_INFO()
66

77

ext/intl/breakiterator/breakiterator_methods.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ static void _breakiter_factory(const char *func_name,
6363

6464
biter = func(Locale::createFromName(locale_str), status);
6565
intl_error_set_code(NULL, status);
66-
// Todo check if this can happen?
6766
if (U_FAILURE(status)) {
6867
spprintf(&msg, 0, "%s: error creating BreakIterator",
6968
func_name);

0 commit comments

Comments
 (0)