Require ICU ≥ 50.1

Given that ICU is a set of lively developed libraries, that ICU 50.1
has been released on 2012-11-05, and PHP 7.4 is scheduled to be
released seven years after it, we consider it appropriate to ditch
these legacy versions.

Particularly, that would be a reasonable groundwork to implement part
two of the “Deprecate and remove INTL_IDNA_VARIANT_2003” RFC[1], namely
to default idn_to_ascii()'s and idn_to_utf8()'s $variant parameter to
INTL_IDNA_VARIANT_UTS46, which is not defined in ICU < 4.6.

See also the related discussion on internals@[2].

[1] <https://wiki.php.net/rfc/deprecate-and-remove-intl_idna_variant_2003>
[2] <http://news.php.net/php.internals/101626>ff
This commit is contained in:
Christoph M. Becker 2018-09-06 14:04:44 +02:00
parent b820a7b2ff
commit 8a4c2f1621
110 changed files with 31 additions and 4082 deletions

View file

@ -44,10 +44,6 @@ extern "C" {
#include "../timezone/timezone_class.h"
}
#if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
#define HAS_MESSAGE_PATTERN 1
#endif
U_NAMESPACE_BEGIN
/**
* This class isolates our access to private internal methods of
@ -58,9 +54,7 @@ class MessageFormatAdapter {
public:
static const Formattable::Type* getArgTypeList(const MessageFormat& m,
int32_t& count);
#ifdef HAS_MESSAGE_PATTERN
static const MessagePattern getMessagePattern(MessageFormat* m);
#endif
};
const Formattable::Type*
@ -69,21 +63,17 @@ MessageFormatAdapter::getArgTypeList(const MessageFormat& m,
return m.getArgTypeList(count);
}
#ifdef HAS_MESSAGE_PATTERN
const MessagePattern
MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
return m->msgPattern;
}
#endif
U_NAMESPACE_END
using icu::Formattable;
using icu::Format;
using icu::DateFormat;
using icu::MessageFormat;
#ifdef HAS_MESSAGE_PATTERN
using icu::MessagePattern;
#endif
using icu::MessageFormatAdapter;
using icu::FieldPosition;
@ -138,7 +128,6 @@ static HashTable *umsg_get_numeric_types(MessageFormatter_object *mfo,
return ret;
}
#ifdef HAS_MESSAGE_PATTERN
static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
const MessagePattern& mp,
intl_error& err)
@ -265,10 +254,8 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
type = Formattable::kDouble;
} else if (argType == UMSGPAT_ARG_TYPE_SELECT) {
type = Formattable::kString;
#if U_ICU_VERSION_MAJOR_NUM >= 50
} else if (argType == UMSGPAT_ARG_TYPE_SELECTORDINAL) {
type = Formattable::kDouble;
#endif
} else {
type = Formattable::kString;
}
@ -295,26 +282,15 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
return ret;
}
#endif
static HashTable *umsg_get_types(MessageFormatter_object *mfo,
intl_error& err)
{
MessageFormat *mf = (MessageFormat *)mfo->mf_data.umsgf;
#ifdef HAS_MESSAGE_PATTERN
const MessagePattern mp = MessageFormatAdapter::getMessagePattern(mf);
return umsg_parse_format(mfo, mp, err);
#else
if (mf->usesNamedArguments()) {
intl_errors_set(&err, U_UNSUPPORTED_ERROR,
"This extension supports named arguments only on ICU 4.8+",
0);
return NULL;
}
return umsg_get_numeric_types(mfo, err);
#endif
}
static void umsg_set_timezone(MessageFormatter_object *mfo,