ICU-20511 Merge release-64-2 to master
diff --git a/icu4c/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props b/icu4c/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props
index 6e92e87..a00e2c4 100644
--- a/icu4c/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props
+++ b/icu4c/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props
@@ -17,8 +17,10 @@
C4005 Macro redifintion.
C4068 Unknown pragma.
C4267 Conversion from size_t to type, possible loss of data.
+ C4910 __declspec(dllexport) and extern are incompatible on an explicit instantiation.
+ C4003 Not enough parameters for macro.
-->
- <TreatSpecificWarningsAsErrors>4251;4661;4715;4706;4005;4068;4267;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
+ <TreatSpecificWarningsAsErrors>4251;4661;4715;4706;4005;4068;4267;4910;4003;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
</ClCompile>
</ItemDefinitionGroup>
</Project>
diff --git a/icu4c/source/i18n/regexcmp.cpp b/icu4c/source/i18n/regexcmp.cpp
index 2d14aa8..e27c3ca 100644
--- a/icu4c/source/i18n/regexcmp.cpp
+++ b/icu4c/source/i18n/regexcmp.cpp
@@ -2285,7 +2285,7 @@
error(U_REGEX_LOOK_BEHIND_LIMIT);
break;
}
- if (minML == INT32_MAX && maxML == 0) {
+ if (minML == INT32_MAX) {
// This condition happens when no match is possible, such as with a
// [set] expression containing no elements.
// In principle, the generated code to evaluate the expression could be deleted,
@@ -2328,7 +2328,7 @@
error(U_REGEX_LOOK_BEHIND_LIMIT);
break;
}
- if (minML == INT32_MAX && maxML == 0) {
+ if (minML == INT32_MAX) {
// This condition happens when no match is possible, such as with a
// [set] expression containing no elements.
// In principle, the generated code to evaluate the expression could be deleted,
diff --git a/icu4c/source/test/testdata/regextst.txt b/icu4c/source/test/testdata/regextst.txt
index ba84af0..677f482 100644
--- a/icu4c/source/test/testdata/regextst.txt
+++ b/icu4c/source/test/testdata/regextst.txt
@@ -1439,13 +1439,16 @@
"[^\u0000-\U0010ffff]" "a"
"[^[^\u0000-\U0010ffff]]" "<0>a</0>"
+# Bug ICU-20544. Similar to 20385, above. Assertion failure with a negative look-behind assertion containing
+# a set with no contents. Look-behind pattern includes more than just the empty set.
+
+"(?<![ⰿ&&m]c)" "<0></0>abc" # note: first 'ⰿ' is \u2c3f, hence empty set.
+"(?<![^\u0000-\U0010ffff]c)" "<0></0>abc"
+"(?<=[^[^]]†)" "abc" # Problem also exists w positive look-behind
# Random debugging, Temporary
#
-
-
-
#
# Regexps from http://www.regexlib.com
#
diff --git a/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java b/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java
index e062b72..9905eed 100644
--- a/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java
+++ b/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java
@@ -68,10 +68,10 @@
"Deutschland",
"Thailand",
"",
- "United States",
- "Spain",
- "Germany",
- "Thailand",
+ "US",
+ "ES",
+ "DE",
+ "TH",
};
String[] expectedWithoutRegionData = {
"",
@@ -117,34 +117,34 @@
"en",
"es",
"de",
- "und",
+ "",
"",
"English",
"Spanish",
"German",
- "Unknown Language",
+ "",
"",
"ingl\u00E9s",
"espa\u00F1ol",
"alem\u00E1n",
- "lengua desconocida",
+ "",
"",
"Englisch",
"Spanisch",
"Deutsch",
- "Unbestimmte Sprache",
"",
- "English",
- "Spanish",
- "German",
- "Unknown Language",
+ "",
+ "en",
+ "es",
+ "de",
+ "",
};
String[] expectedWithoutLanguageData = {
"",
"en",
"es",
"de",
- "und"
+ "",
};
String[] expected = LocaleDisplayNamesImpl.haveData(LANG) ?
expectedWithLanguageData : expectedWithoutLanguageData;
@@ -166,9 +166,12 @@
for (Locale displayJavaLocale : javaLocales) {
LocaleDisplayNames dn = LocaleDisplayNames.getInstance(displayJavaLocale);
for (Locale targetLocale : javaLocales) {
- String result = dn.languageDisplayName(targetLocale.getLanguage());
- assertEquals(targetLocale + " in " + displayJavaLocale, expected[n++], result);
- if (n == expected.length) {
+ // ICU-20273: ICU and Java handle "und" differently, skip those test cases.
+ if (!"und".equals(targetLocale.getLanguage())) {
+ String result = dn.languageDisplayName(targetLocale.getLanguage());
+ assertEquals(targetLocale + " in " + displayJavaLocale, expected[n], result);
+ }
+ if (++n == expected.length) {
n = 0;
}
}
@@ -180,14 +183,14 @@
@Test
public void testLocaleDisplayNameWithKeywords() {
String[] expectedWithLanguageData = {
- "root (collation=phonebook)",
- "Root (Phonebook Sort Order)",
- "ra\u00EDz (orden de list\u00EDn telef\u00F3nico)",
- "Root (Telefonbuch-Sortierung)",
- "Root (Phonebook Sort Order)",
+ "und (collation=phonebook)",
+ "Unknown language (Phonebook Sort Order)",
+ "lengua desconocida (orden de list\u00EDn telef\u00F3nico)",
+ "Unbekannte Sprache (Telefonbuch-Sortierung)",
+ "und (collation=phonebook)",
};
String[] expectedWithoutLanguageData = {
- "root (collation=phonebook)",
+ "und (collation=phonebook)",
};
String[] expected = LocaleDisplayNamesImpl.haveData(LANG) ?
expectedWithLanguageData : expectedWithoutLanguageData;
diff --git a/tools/commit-checker/README.md b/tools/commit-checker/README.md
index ce76402..4365f9b 100644
--- a/tools/commit-checker/README.md
+++ b/tools/commit-checker/README.md
@@ -30,17 +30,13 @@
Make sure you have updated your repository:
- $ git checkout master
- $ git pull upstream master
$ git fetch --tags upstream
-Sanity check: ensure that the "latest" tag is correct (points to the latest release). You may need to force-fetch the tags.
+Run the tool and save the result into REPORT.md; set fixVersion to the upcoming ICU version, and take the revision range between the previous release and the tip for the upcoming release:
- $ git show latest
- # should show a commit with both "latest" and the previous version number
-
-Run the tool and save the result into REPORT.md; set fixVersion to the *upcoming* ICU version:
-
- $ pipenv run python3 check.py --jira-query "project=ICU AND fixVersion=64.1" > REPORT.md
+ $ pipenv run python3 check.py \
+ --jira-query "project=ICU AND fixVersion=64.1" \
+ --rev-range "release-63-1..upstream/maint/maint-64"
+ > REPORT.md
Create a branch and open a pull request so others can view the report easily.
diff --git a/tools/commit-checker/check.py b/tools/commit-checker/check.py
index 7f6d724..578461d 100644
--- a/tools/commit-checker/check.py
+++ b/tools/commit-checker/check.py
@@ -32,8 +32,8 @@
)
flag_parser.add_argument(
"--rev-range",
- help = "A git revision range; see https://git-scm.com/docs/gitrevisions",
- default = "latest..master"
+ help = "A git revision range; see https://git-scm.com/docs/gitrevisions. Should be the two-dot range between the previous release and the current tip.",
+ required = True
)
flag_parser.add_argument(
"--jira-hostname",
@@ -183,6 +183,7 @@
print("Environment:")
print("- Latest Commit: %s" % commits[0].commit.hexsha)
print("- Jira Query: %s" % args.jira_query)
+ print("- Rev Range: %s" % args.rev_range)
print("- Authenticated: %s" % "Yes" if authenticated else "No (sensitive tickets not shown)")
print()
print("## Problem Categories")