[automerger skipped] DO NOT MERGE Track tzdb 2023d update. [SC_V2 CTS] am: 9c14af3c90 -s ours am: 25d9d020f2 -s ours am: 1117be9642 -s ours
am skip reason: contains skip directive
Original change: https://android-review.googlesource.com/c/platform/external/icu/+/2985516
Change-Id: Ia9317605c147fe661153ed901698d49da9929470
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index f1c850e..8abda73 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_applicable_licenses: ["external_icu_license"],
}
@@ -62,10 +63,12 @@
"-Wall",
"-Werror",
// Make all warnings into errors, but ignore a set of warnings used in headers by default.
+ "-Wno-ambiguous-reversed-operator",
+ "-Wno-deprecated-declarations",
"-Wno-unused-parameter",
"-Wno-unused-const-variable",
"-Wno-unneeded-internal-declaration",
- "-Wno-deprecated-declarations",
+ "-DUCONFIG_USE_ML_PHRASE_BREAKING=1",
],
target: {
android: {
@@ -80,3 +83,30 @@
},
},
}
+
+aconfig_declarations {
+ name: "icu_aconfig_flags",
+ package: "com.android.icu",
+ container: "system",
+ srcs: [
+ "icu.aconfig",
+ ],
+}
+
+java_aconfig_library {
+ name: "icu_aconfig_flags_lib",
+ aconfig_declarations: "icu_aconfig_flags",
+ host_supported: true,
+ // "fake_device_config" is needed for the host.
+ libs: [
+ "fake_device_config",
+ "aconfig-annotations-lib-sdk-none",
+ "unsupportedappusage-sdk-none",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.i18n",
+ ],
+ sdk_version: "none",
+ system_modules: "core-all-system-modules",
+}
diff --git a/OWNERS b/OWNERS
index 5737ec8..2a49be3 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,8 +1,6 @@
# Default reviewers
vichang@google.com
mingaleev@google.com
-mscherer@google.com
-oth@google.com
# Bug component: 24949
# libcore team is the larger team owning the library.
@@ -11,7 +9,4 @@
libcore-bugs-triage@google.com
# g2.corp.android-icu-maintainers@google.com
# android-libcore-team+review@google.com
-# icu-team+reviews@google.com
-# Others in the ICU team
-roubert@google.com
diff --git a/android_icu4c/Android.bp b/android_icu4c/Android.bp
index 2a8e8bd..0cc0405 100644
--- a/android_icu4c/Android.bp
+++ b/android_icu4c/Android.bp
@@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: ["//external/icu:__subpackages__"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
diff --git a/android_icu4j/Android.bp b/android_icu4j/Android.bp
index e0e2851..43b66e6 100644
--- a/android_icu4j/Android.bp
+++ b/android_icu4j/Android.bp
@@ -15,6 +15,7 @@
//
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: ["//visibility:private"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
@@ -96,7 +97,16 @@
name: "core-repackaged-icu4j",
installable: false,
srcs: [":android_icu4j_repackaged_src_files"],
- libs: ["unsupportedappusage"],
+ libs: [
+ "unsupportedappusage",
+ // Need framework-api-annotations-lib for @FlaggedApi.
+ // Put framework-api-annotations into libs to avoid exposing the definition of framework's
+ // annotations from ICU (wrong place) instead of framework (correct place).
+ "framework-annotations-lib",
+ // We only need the aconfig library for @FlaggedApi. We can move it to static_libs
+ // if we need it for flagging features in the future.
+ "icu_aconfig_flags_lib",
+ ],
// The resource files are generated in the downstream branch master-icu-dev.
java_resource_dirs: ["resources"],
@@ -172,6 +182,9 @@
platform_compat_config {
name: "icu4j-platform-compat-config",
src: ":core-icu4j",
+ visibility: [
+ "//frameworks/base",
+ ],
}
java_sdk_library {
@@ -187,9 +200,16 @@
// locations.
"//prebuilts:__subpackages__",
],
+ // Added to make sure that no private classes leak out in stubs.
+ defaults: ["libcore_icu_bridge_defaults"],
srcs: [
+ // Added to make sure that no private classes leak out in stubs.
+ ":android_icu4j_repackaged_src_files",
":android_icu4j_public_api_files",
],
+ libs: [
+ "icu_aconfig_flags_lib",
+ ],
droiddoc_options: [
"--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.* ",
],
@@ -228,6 +248,9 @@
// version of the API.
dist_stem: "runtime-i18n",
dist_group: "android",
+ aconfig_declarations: [
+ "icu_aconfig_flags",
+ ],
}
// Generates stub source files for the intra-core API of the I18N module.
@@ -467,30 +490,3 @@
],
},
}
-
-java_api_contribution {
- name: "i18n-intra-core-stubs",
- api_surface: "intra-core",
- api_file: "api/intra/current.txt",
- visibility: [
- "//build/orchestrator/apis",
- ],
-}
-
-java_api_contribution {
- name: "i18n-public-stubs",
- api_surface: "public",
- api_file: "api/public/current.txt",
- visibility: [
- "//build/orchestrator/apis",
- ],
-}
-
-java_api_contribution {
- name: "i18n-module-lib-stubs",
- api_surface: "module-lib",
- api_file: "api/stable_platform/current.txt",
- visibility: [
- "//build/orchestrator/apis",
- ],
-}
diff --git a/android_icu4j/api/public/current.txt b/android_icu4j/api/public/current.txt
index fd2e6fe..ca5a60c 100644
--- a/android_icu4j/api/public/current.txt
+++ b/android_icu4j/api/public/current.txt
@@ -370,6 +370,9 @@
}
public static interface UCharacter.LineBreak {
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final int AKSARA = 43; // 0x2b
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final int AKSARA_PREBASE = 44; // 0x2c
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final int AKSARA_START = 45; // 0x2d
field public static final int ALPHABETIC = 2; // 0x2
field public static final int AMBIGUOUS = 1; // 0x1
field public static final int BREAK_AFTER = 4; // 0x4
@@ -411,6 +414,8 @@
field public static final int SPACE = 26; // 0x1a
field public static final int SURROGATE = 25; // 0x19
field public static final int UNKNOWN = 0; // 0x0
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final int VIRAMA = 47; // 0x2f
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final int VIRAMA_FINAL = 46; // 0x2e
field public static final int WORD_JOINER = 30; // 0x1e
field public static final int ZWJ = 42; // 0x2a
field public static final int ZWSPACE = 28; // 0x1c
@@ -567,6 +572,8 @@
field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_ID = 302; // 0x12e
field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H;
field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_ID = 322; // 0x142
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID = 328; // 0x148
field public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71; // 0x47
field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED;
@@ -1709,12 +1716,14 @@
public class FormattedNumber implements android.icu.text.FormattedValue {
method public <A extends java.lang.Appendable> A appendTo(A);
method public char charAt(int);
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.NounClass getNounClass();
method public android.icu.util.MeasureUnit getOutputUnit();
method public int length();
method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
method public CharSequence subSequence(int, int);
method public java.math.BigDecimal toBigDecimal();
method public java.text.AttributedCharacterIterator toCharacterIterator();
+ method public String toString();
}
public class FormattedNumberRange implements android.icu.text.FormattedValue {
@@ -1727,6 +1736,7 @@
method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
method public CharSequence subSequence(int, int);
method public java.text.AttributedCharacterIterator toCharacterIterator();
+ method public String toString();
}
public abstract class FractionPrecision extends android.icu.number.Precision {
@@ -1815,6 +1825,7 @@
public abstract class NumberFormatterSettings<T extends android.icu.number.NumberFormatterSettings<?>> {
method public T decimal(android.icu.number.NumberFormatter.DecimalSeparatorDisplay);
+ method @FlaggedApi("com.android.icu.icu_v_api") public T displayOptions(android.icu.text.DisplayOptions);
method public T grouping(android.icu.number.NumberFormatter.GroupingStrategy);
method public T integerWidth(android.icu.number.IntegerWidth);
method public T notation(android.icu.number.Notation);
@@ -2199,6 +2210,7 @@
method public android.icu.text.Collator cloneAsThawed();
method public abstract int compare(String, String);
method public int compare(Object, Object);
+ method public boolean equals(Object);
method public boolean equals(String, String);
method public android.icu.text.Collator freeze();
method public static java.util.Locale[] getAvailableLocales();
@@ -2576,6 +2588,7 @@
method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
method public CharSequence subSequence(int, int);
method public java.text.AttributedCharacterIterator toCharacterIterator();
+ method public String toString();
}
public class DateIntervalInfo implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateIntervalInfo> java.io.Serializable {
@@ -2612,6 +2625,7 @@
method public String getBestPattern(String);
method public String getBestPattern(String, int);
method public String getDateTimeFormat();
+ method @FlaggedApi("com.android.icu.icu_v_api") public String getDateTimeFormat(int);
method public String getDecimal();
method public android.icu.text.DateFormat.HourCycle getDefaultHourCycle();
method public static android.icu.text.DateTimePatternGenerator getEmptyInstance();
@@ -2627,6 +2641,7 @@
method public void setAppendItemFormat(int, String);
method public void setAppendItemName(int, String);
method public void setDateTimeFormat(String);
+ method @FlaggedApi("com.android.icu.icu_v_api") public void setDateTimeFormat(int, String);
method public void setDecimal(String);
field public static final int DAY = 7; // 0x7
field public static final int DAYPERIOD = 10; // 0xa
@@ -2852,6 +2867,108 @@
enum_constant public static final android.icu.text.DisplayContext.Type SUBSTITUTE_HANDLING;
}
+ @FlaggedApi("com.android.icu.icu_v_api") public final class DisplayOptions {
+ method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.Builder builder();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder copyToBuilder();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Capitalization getCapitalization();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.DisplayLength getDisplayLength();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.GrammaticalCase getGrammaticalCase();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.NameStyle getNameStyle();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.NounClass getNounClass();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.PluralCategory getPluralCategory();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.SubstituteHandling getSubstituteHandling();
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public static class DisplayOptions.Builder {
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions build();
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setCapitalization(android.icu.text.DisplayOptions.Capitalization);
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setDisplayLength(android.icu.text.DisplayOptions.DisplayLength);
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setGrammaticalCase(android.icu.text.DisplayOptions.GrammaticalCase);
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setNameStyle(android.icu.text.DisplayOptions.NameStyle);
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setNounClass(android.icu.text.DisplayOptions.NounClass);
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setPluralCategory(android.icu.text.DisplayOptions.PluralCategory);
+ method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setSubstituteHandling(android.icu.text.DisplayOptions.SubstituteHandling);
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.Capitalization {
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization BEGINNING_OF_SENTENCE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization MIDDLE_OF_SENTENCE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization STANDALONE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization UI_LIST_OR_MENU;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization UNDEFINED;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.Capitalization> VALUES;
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.DisplayLength {
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.DisplayLength LENGTH_FULL;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.DisplayLength LENGTH_SHORT;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.DisplayLength UNDEFINED;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.DisplayLength> VALUES;
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.GrammaticalCase {
+ method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.GrammaticalCase fromIdentifier(String);
+ method @FlaggedApi("com.android.icu.icu_v_api") public String getIdentifier();
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase ABLATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase ACCUSATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase COMITATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase DATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase ERGATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase GENITIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase INSTRUMENTAL;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase LOCATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase LOCATIVE_COPULATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase NOMINATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase OBLIQUE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase PREPOSITIONAL;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase SOCIATIVE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase UNDEFINED;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase VOCATIVE;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.GrammaticalCase> VALUES;
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.NameStyle {
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NameStyle DIALECT_NAMES;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NameStyle STANDARD_NAMES;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NameStyle UNDEFINED;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.NameStyle> VALUES;
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.NounClass {
+ method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.NounClass fromIdentifier(String);
+ method @FlaggedApi("com.android.icu.icu_v_api") public String getIdentifier();
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass ANIMATE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass COMMON;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass FEMININE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass INANIMATE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass MASCULINE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass NEUTER;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass OTHER;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass PERSONAL;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass UNDEFINED;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.NounClass> VALUES;
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.PluralCategory {
+ method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.PluralCategory fromIdentifier(String);
+ method @FlaggedApi("com.android.icu.icu_v_api") public String getIdentifier();
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory FEW;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory MANY;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory ONE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory OTHER;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory TWO;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory UNDEFINED;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory ZERO;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.PluralCategory> VALUES;
+ }
+
+ @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.SubstituteHandling {
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.SubstituteHandling NO_SUBSTITUTE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.SubstituteHandling SUBSTITUTE;
+ enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.SubstituteHandling UNDEFINED;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.SubstituteHandling> VALUES;
+ }
+
public final class Edits {
ctor public Edits();
method public void addReplace(int, int);
@@ -2947,6 +3064,7 @@
method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
method public CharSequence subSequence(int, int);
method public java.text.AttributedCharacterIterator toCharacterIterator();
+ method public String toString();
}
public enum ListFormatter.Type {
@@ -3272,6 +3390,7 @@
public static class NumberFormat.Field extends java.text.Format.Field {
ctor protected NumberFormat.Field(String);
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.NumberFormat.Field APPROXIMATELY_SIGN;
field public static final android.icu.text.NumberFormat.Field COMPACT;
field public static final android.icu.text.NumberFormat.Field CURRENCY;
field public static final android.icu.text.NumberFormat.Field DECIMAL_SEPARATOR;
@@ -3412,6 +3531,7 @@
method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
method public CharSequence subSequence(int, int);
method public java.text.AttributedCharacterIterator toCharacterIterator();
+ method public String toString();
}
public enum RelativeDateTimeFormatter.RelativeDateTimeUnit {
@@ -4663,6 +4783,7 @@
field public static final android.icu.util.MeasureUnit POUND;
field public static final android.icu.util.MeasureUnit POUND_PER_SQUARE_INCH;
field public static final android.icu.util.MeasureUnit QUART;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.util.MeasureUnit QUARTER;
field public static final android.icu.util.MeasureUnit RADIAN;
field public static final android.icu.util.MeasureUnit REVOLUTION_ANGLE;
field public static final android.icu.util.TimeUnit SECOND;
@@ -4679,6 +4800,7 @@
field public static final android.icu.util.MeasureUnit TERABIT;
field public static final android.icu.util.MeasureUnit TERABYTE;
field public static final android.icu.util.MeasureUnit TON;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.util.MeasureUnit TONNE;
field public static final android.icu.util.MeasureUnit VOLT;
field public static final android.icu.util.MeasureUnit WATT;
field public static final android.icu.util.TimeUnit WEEK;
@@ -5035,6 +5157,7 @@
field public static final android.icu.util.VersionInfo UNICODE_13_0;
field public static final android.icu.util.VersionInfo UNICODE_14_0;
field public static final android.icu.util.VersionInfo UNICODE_15_0;
+ field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.util.VersionInfo UNICODE_15_1;
field public static final android.icu.util.VersionInfo UNICODE_1_0;
field public static final android.icu.util.VersionInfo UNICODE_1_0_1;
field public static final android.icu.util.VersionInfo UNICODE_1_1_0;
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java b/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java
index 8e88c1d..166389f 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java
@@ -19,6 +19,7 @@
import android.compat.Compatibility;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledAfter;
+import android.icu.impl.ZoneMeta;
import android.icu.platform.AndroidDataFiles;
import android.icu.impl.CacheValue;
import android.icu.text.DateFormatSymbols;
@@ -63,6 +64,9 @@
// Framework's LocalLog is used during app start-up. It indirectly uses the current ICU time
// zone. Pre-loading the current time zone in ICU improves app startup time. b/150605074
TimeZone.getDefault();
+
+ // Preload the String[] ZoneMeta#ZONEIDS. See http://b/73282298
+ ZoneMeta.getAvailableIDs(TimeZone.SystemTimeZoneType.ANY, null, null);
}
/**
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java b/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java
index e3cf9e4..dae3bec 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java
@@ -20,6 +20,8 @@
/**
* A {@link BufferIterator} that wraps a {@link ByteBuffer}.
+ *
+ * @hide
*/
public class ByteBufferIterator extends BufferIterator {
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java
index 21fee8e..f6be66c 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java
@@ -15,6 +15,8 @@
/**
* This class is used from native code associated with {@link NativeConverter}.
+ *
+ * @hide
*/
public final class CharsetICU extends Charset {
private final String icuCanonicalName;
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java
index 1159e68..4d02056 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java
@@ -16,6 +16,9 @@
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CodingErrorAction;
+/**
+ * @hide
+ */
public final class NativeConverter {
private static final NativeAllocationRegistry registry = NativeAllocationRegistry
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java
index 804054e..f373717 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java
@@ -26,6 +26,8 @@
/**
* This class is used by android.webkit.DateSorter.
+ *
+ * @hide
*/
@libcore.api.CorePlatformApi
public class DateSorterBridge {
@@ -34,6 +36,8 @@
/**
* @throws AssertionError for the legacy behavior when the ICU data is missing
+ *
+ * @hide
*/
@libcore.api.CorePlatformApi
public static DateSorterBridge createInstance(Locale locale) throws AssertionError {
@@ -62,11 +66,17 @@
today = caseMap.apply(locale, breakIterator, todayStr);
}
+ /**
+ * @hide
+ */
@libcore.api.CorePlatformApi
public String getYesterday() {
return yesterday;
}
+ /**
+ * @hide
+ */
@libcore.api.CorePlatformApi
public String getToday() {
return today;
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
index 8d2cb1f..a7d7050 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
@@ -16,6 +16,9 @@
package com.android.icu.util;
+/**
+ * @hide
+ */
public class Icu4cMetadata {
/** Returns the TZData version as reported by ICU4C. */
diff --git a/android_icu4j/libcore_bridge/src/native/Android.bp b/android_icu4j/libcore_bridge/src/native/Android.bp
index 28642cc..cd4833f 100644
--- a/android_icu4j/libcore_bridge/src/native/Android.bp
+++ b/android_icu4j/libcore_bridge/src/native/Android.bp
@@ -14,6 +14,7 @@
// limitations under the License.
//
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: [
"//packages/modules/RuntimeI18n/apex",
],
diff --git a/android_icu4j/libcore_bridge/src/native/TEST_MAPPING b/android_icu4j/libcore_bridge/src/native/TEST_MAPPING
index 18d7bf5..7671338 100644
--- a/android_icu4j/libcore_bridge/src/native/TEST_MAPPING
+++ b/android_icu4j/libcore_bridge/src/native/TEST_MAPPING
@@ -1,7 +1,7 @@
{
"imports": [
{
- "path": "external/icu/android_icu4j/src/main/java/com/android/icu/util/regex"
+ "path": "external/icu/android_icu4j/libcore_bridge/src/java/com/android/icu/util/regex"
}
]
}
diff --git a/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp b/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp
index a5a2d61..9e23c39 100644
--- a/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp
+++ b/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp
@@ -16,6 +16,7 @@
#define LOG_TAG "Log"
+#include <functional>
#include <memory>
#include "jni.h"
diff --git a/android_icu4j/resources/android/icu/ICUConfig.properties b/android_icu4j/resources/android/icu/ICUConfig.properties
index ae97732..959b662 100644
--- a/android_icu4j/resources/android/icu/ICUConfig.properties
+++ b/android_icu4j/resources/android/icu/ICUConfig.properties
@@ -69,4 +69,4 @@
# Enable ML phrase breaking
# Android patch, http://b/219529457, for ML-based phrase line breaking
# @internal
-android.icu.impl.breakiter.useMLPhraseBreaking = false
+android.icu.impl.breakiter.useMLPhraseBreaking = true
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUService.java b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
index 4ece905..d6ebaa4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
@@ -597,13 +597,15 @@
Factory f = lIter.previous();
f.updateVisibleIDs(mutableMap);
}
- this.idcache = Collections.unmodifiableMap(mutableMap);
+ Map<String, Factory> result = Collections.unmodifiableMap(mutableMap);
+ this.idcache = result;
+ return result;
} finally {
factoryLock.releaseRead();
}
}
+ return idcache;
}
- return idcache;
}
private Map<String, Factory> idcache;
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
index f2da2c6..8dc245a 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
@@ -1118,6 +1118,12 @@
/***/
public static final int NAG_MUNDARI_ID = 327; /*[1E4D0]*/
+ // New block in Unicode 15.1
+
+ /***/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID = 328; /*[2EBF0]*/
+
/**
* One more than the highest normal UnicodeBlock value.
* The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.BLOCK).
@@ -2383,6 +2389,14 @@
public static final UnicodeBlock NAG_MUNDARI =
new UnicodeBlock("NAG_MUNDARI", NAG_MUNDARI_ID); /*[1E4D0]*/
+ // New block in Unicode 15.1
+
+ /***/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I =
+ new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I",
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID); /*[2EBF0]*/
+
/**
*/
public static final UnicodeBlock INVALID_CODE
@@ -2505,7 +2519,9 @@
{
super(name);
m_id_ = id;
- if (id >= 0) {
+ // Android-changed: Avoid leaking flagged UnicodeBlock until ICU 74 data is integrated.
+ // if (id >= 0) {
+ if (id >= 0 && id < BLOCKS_.length) {
BLOCKS_[id] = this;
}
}
@@ -3275,6 +3291,21 @@
public static final int E_MODIFIER = 41; /*[EM]*/
/***/
public static final int ZWJ = 42; /*[ZWJ]*/
+ /***/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final int AKSARA = 43; /*[AK]*/ /* from here on: new in Unicode 15.1/ICU 74 */
+ /***/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final int AKSARA_PREBASE = 44; /*[AP]*/
+ /***/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final int AKSARA_START = 45; /*[AS]*/
+ /***/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final int VIRAMA_FINAL = 46; /*[VF]*/
+ /***/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final int VIRAMA = 47; /*[VI]*/
/**
* One more than the highest normal LineBreak value.
* The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK).
diff --git a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
index 7855bbf..f4ea46a 100644
--- a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
+++ b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
@@ -126,8 +126,8 @@
* supported yet.
*
* @return NounClass
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public DisplayOptions.NounClass getNounClass() {
return DisplayOptions.NounClass.fromIdentifier(this.gender);
}
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
index 76946f6..ccd403b 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
@@ -535,8 +535,8 @@
* the desired case for a unit formatter's output (e.g. accusative, dative, genitive).
*
* @return The fluent chain.
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public T displayOptions(DisplayOptions displayOptions) {
// `displayCase` does not recognise the `undefined`
if (displayOptions.getGrammaticalCase() == GrammaticalCase.UNDEFINED) {
diff --git a/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java b/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
index 1c51b1e..c6dd9c0 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
@@ -1089,8 +1089,8 @@
* be thrown if out of range.
* @param dateTimeFormat
* the new dateTimeFormat to set for the specified style
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public void setDateTimeFormat(int style, String dateTimeFormat) {
if (style < DateFormat.FULL || style > DateFormat.SHORT) {
throw new IllegalArgumentException("Illegal style here: " + style);
@@ -1107,8 +1107,8 @@
* be thrown if out of range.
* @return
* the current dateTimeFormat for the specified style.
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public String getDateTimeFormat(int style) {
if (style < DateFormat.FULL || style > DateFormat.SHORT) {
throw new IllegalArgumentException("Illegal style here: " + style);
diff --git a/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java b/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java
index 3f890e8..9089a64 100644
--- a/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java
+++ b/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java
@@ -21,10 +21,8 @@
* .setPluralCategory(PluralCategory.FEW)
* .build();
* }
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+@android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public final class DisplayOptions {
private final GrammaticalCase grammaticalCase;
private final NounClass nounClass;
@@ -48,8 +46,8 @@
* Creates a builder with the {@code UNDEFINED} value for all the parameters.
*
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static Builder builder() {
return new Builder();
}
@@ -58,8 +56,8 @@
* Creates a builder with the same parameters from this object.
*
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder copyToBuilder() {
return new Builder(this);
}
@@ -68,8 +66,8 @@
* Gets the grammatical case.
*
* @return GrammaticalCase
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public GrammaticalCase getGrammaticalCase() {
return this.grammaticalCase;
}
@@ -78,8 +76,8 @@
* Gets the noun class.
*
* @return NounClass
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public NounClass getNounClass() {
return this.nounClass;
}
@@ -88,8 +86,8 @@
* Gets the plural category.
*
* @return PluralCategory
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public PluralCategory getPluralCategory() {
return this.pluralCategory;
}
@@ -98,8 +96,8 @@
* Gets the capitalization.
*
* @return Capitalization
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Capitalization getCapitalization() {
return this.capitalization;
}
@@ -108,8 +106,8 @@
* Gets the name style.
*
* @return NameStyle
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public NameStyle getNameStyle() {
return this.nameStyle;
}
@@ -118,8 +116,8 @@
* Gets the display length.
*
* @return DisplayLength
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public DisplayLength getDisplayLength() {
return this.displayLength;
}
@@ -128,18 +126,16 @@
* Gets the substitute handling.
*
* @return SubstituteHandling
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public SubstituteHandling getSubstituteHandling() {
return this.substituteHandling;
}
/**
* Responsible for building {@code DisplayOptions}.
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static class Builder {
private GrammaticalCase grammaticalCase;
private NounClass nounClass;
@@ -151,8 +147,6 @@
/**
* Creates a {@code DisplayOptions.Builder} with the default values.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
private Builder() {
this.grammaticalCase = GrammaticalCase.UNDEFINED;
@@ -168,7 +162,6 @@
* Creates a {@code Builder} with all the information from a {@code DisplayOptions}.
*
* @param displayOptions Options to be copied.
- * @hide draft / provisional / internal are hidden on Android
*/
private Builder(DisplayOptions displayOptions) {
this.grammaticalCase = displayOptions.grammaticalCase;
@@ -185,8 +178,8 @@
*
* @param grammaticalCase The grammatical case.
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder setGrammaticalCase(GrammaticalCase grammaticalCase) {
this.grammaticalCase = grammaticalCase;
return this;
@@ -197,8 +190,8 @@
*
* @param nounClass The noun class.
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder setNounClass(NounClass nounClass) {
this.nounClass = nounClass;
return this;
@@ -209,8 +202,8 @@
*
* @param pluralCategory The plural category.
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder setPluralCategory(PluralCategory pluralCategory) {
this.pluralCategory = pluralCategory;
return this;
@@ -221,8 +214,8 @@
*
* @param capitalization The capitalization.
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder setCapitalization(Capitalization capitalization) {
this.capitalization = capitalization;
return this;
@@ -233,8 +226,8 @@
*
* @param nameStyle The name style.
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder setNameStyle(NameStyle nameStyle) {
this.nameStyle = nameStyle;
return this;
@@ -245,8 +238,8 @@
*
* @param displayLength The display length.
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder setDisplayLength(DisplayLength displayLength) {
this.displayLength = displayLength;
return this;
@@ -257,8 +250,8 @@
*
* @param substituteHandling The substitute handling.
* @return Builder
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public Builder setSubstituteHandling(SubstituteHandling substituteHandling) {
this.substituteHandling = substituteHandling;
return this;
@@ -268,8 +261,8 @@
* Builds the display options.
*
* @return DisplayOptions
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public DisplayOptions build() {
DisplayOptions displayOptions = new DisplayOptions(this);
return displayOptions;
@@ -278,49 +271,46 @@
/**
* Represents all the grammatical noun classes that are supported by CLDR.
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public enum NounClass {
/**
* A possible setting for NounClass. The noun class context to be used is unknown (this is the
* default value).
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UNDEFINED("undefined"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
OTHER("other"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
NEUTER("neuter"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
FEMININE("feminine"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
MASCULINE("masculine"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
ANIMATE("animate"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
INANIMATE("inanimate"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
PERSONAL("personal"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
COMMON("common");
private final String identifier;
@@ -331,16 +321,15 @@
/**
* Unmodifiable List of all noun classes constants. List version of {@link #values()}.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final List<NounClass> VALUES =
Collections.unmodifiableList(Arrays.asList(NounClass.values()));
/**
* @return the lowercase CLDR keyword string for the noun class.
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public final String getIdentifier() {
return this.identifier;
}
@@ -348,8 +337,8 @@
/**
* @param identifier in lower case such as "feminine" or "masculine"
* @return the plural category corresponding to the identifier, or {@code UNDEFINED}
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final NounClass fromIdentifier(String identifier) {
if (identifier == null) {
return NounClass.UNDEFINED;
@@ -367,217 +356,188 @@
/**
* Represents all the name styles.
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public enum NameStyle {
/**
* A possible setting for NameStyle. The NameStyle context to be used is unknown (this is the
* default value).
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UNDEFINED,
/**
* Use standard names when generating a locale name, e.g. en_GB displays as 'English (United
* Kingdom)'.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
STANDARD_NAMES,
/**
* Use dialect names, when generating a locale name, e.g. en_GB displays as 'British English'.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
DIALECT_NAMES;
/**
* Unmodifiable List of all name styles constants. List version of {@link #values()}.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final List<NameStyle> VALUES =
Collections.unmodifiableList(Arrays.asList(NameStyle.values()));
}
/**
* Represents all the substitute handlings.
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public enum SubstituteHandling {
/**
* A possible setting for SubstituteHandling. The SubstituteHandling context to be used is
* unknown (this is the default value).
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UNDEFINED,
/**
* Returns a fallback value (e.g., the input code) when no data is available. This is the
* default behaviour.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
SUBSTITUTE,
/**
* Returns a null value when no data is available.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
NO_SUBSTITUTE;
/**
* Unmodifiable List of all substitute handlings constants. List version of {@link #values()}.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final List<SubstituteHandling> VALUES =
Collections.unmodifiableList(Arrays.asList(SubstituteHandling.values()));
}
/**
* Represents all the display lengths.
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public enum DisplayLength {
/**
* A possible setting for DisplayLength. The DisplayLength context to be used is unknown (this
* is the default value).
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UNDEFINED,
/**
* Uses full names when generating a locale name, e.g. "United States" for US.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
LENGTH_FULL,
/**
* Use short names when generating a locale name, e.g. "U.S." for US.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
LENGTH_SHORT;
/**
* Unmodifiable List of all display lengths constants. List version of {@link #values()}.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final List<DisplayLength> VALUES =
Collections.unmodifiableList(Arrays.asList(DisplayLength.values()));
}
/**
* Represents all the capitalization options.
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public enum Capitalization {
/**
* A possible setting for Capitalization. The capitalization context to be used is unknown (this
* is the default value).
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UNDEFINED,
/**
* The capitalization context if a date, date symbol or display name is to be formatted with
* capitalization appropriate for the beginning of a sentence.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
BEGINNING_OF_SENTENCE,
/**
* The capitalization context if a date, date symbol or display name is to be formatted with
* capitalization appropriate for the middle of a sentence.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
MIDDLE_OF_SENTENCE,
/**
* The capitalization context if a date, date symbol or display name is to be formatted with
* capitalization appropriate for stand-alone usage such as an isolated name on a calendar
* page.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
STANDALONE,
/**
* The capitalization context if a date, date symbol or display name is to be formatted with
* capitalization appropriate for a user-interface list or menu item.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UI_LIST_OR_MENU;
/**
* Unmodifiable List of all the capitalizations constants. List version of {@link #values()}.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final List<Capitalization> VALUES =
Collections.unmodifiableList(Arrays.asList(Capitalization.values()));
}
/**
* Standard CLDR plural category constants. See http://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public enum PluralCategory {
/**
* A possible setting for PluralCategory. The plural category context to be used is unknown
* (this is the default value).
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UNDEFINED("undefined"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
ZERO("zero"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
ONE("one"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
TWO("two"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
FEW("few"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
MANY("many"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
OTHER("other");
private final String identifier;
@@ -588,16 +548,15 @@
/**
* Unmodifiable List of all plural categories constants. List version of {@link #values()}.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final List<PluralCategory> VALUES =
Collections.unmodifiableList(Arrays.asList(PluralCategory.values()));
/**
* @return the lowercase CLDR keyword string for the plural category
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public final String getIdentifier() {
return this.identifier;
}
@@ -605,8 +564,8 @@
/**
* @param identifier in lower case such as "few" or "other"
* @return the plural category corresponding to the identifier, or {@code UNDEFINED}
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final PluralCategory fromIdentifier(String identifier) {
if (identifier == null) {
return PluralCategory.UNDEFINED;
@@ -624,87 +583,84 @@
/**
* Represents all the grammatical cases that are supported by CLDR.
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public enum GrammaticalCase {
/**
* A possible setting for GrammaticalCase. The grammatical case context to be used is unknown
* (this is the default value).
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
UNDEFINED("undefined"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
ABLATIVE("ablative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
ACCUSATIVE("accusative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
COMITATIVE("comitative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
DATIVE("dative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
ERGATIVE("ergative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
GENITIVE("genitive"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
INSTRUMENTAL("instrumental"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
LOCATIVE("locative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
LOCATIVE_COPULATIVE("locative_copulative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
NOMINATIVE("nominative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
OBLIQUE("oblique"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
PREPOSITIONAL("prepositional"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
SOCIATIVE("sociative"),
/**
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
VOCATIVE("vocative");
private final String identifier;
@@ -715,16 +671,15 @@
/**
* Unmodifiable List of all grammatical cases constants. List version of {@link #values()}.
- *
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final List<GrammaticalCase> VALUES =
Collections.unmodifiableList(Arrays.asList(GrammaticalCase.values()));
/**
* @return the lowercase CLDR keyword string for the grammatical case.
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public final String getIdentifier() {
return this.identifier;
}
@@ -732,8 +687,8 @@
/**
* @param identifier in lower case such as "dative" or "nominative"
* @return the plural category corresponding to the identifier, or {@code UNDEFINED}
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final GrammaticalCase fromIdentifier(String identifier) {
if (identifier == null) {
return GrammaticalCase.UNDEFINED;
diff --git a/android_icu4j/src/main/java/android/icu/text/NumberFormat.java b/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
index c03bc08..0034e03 100644
--- a/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
@@ -1867,8 +1867,8 @@
/**
* Approximately sign. In ICU 70, this was categorized under the generic SIGN field.
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final Field APPROXIMATELY_SIGN = new Field("approximately sign");
/**
diff --git a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
index e75a849..c9c4143 100644
--- a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
+++ b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
@@ -1073,8 +1073,8 @@
/**
* Constant for unit of duration: quarter
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final MeasureUnit QUARTER = MeasureUnit.internalGetInstance("duration", "quarter");
/**
@@ -1465,8 +1465,8 @@
/**
* Constant for unit of mass: tonne
- * @hide draft / provisional / internal are hidden on Android
*/
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
public static final MeasureUnit TONNE = MeasureUnit.internalGetInstance("mass", "tonne");
/**
diff --git a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
index 426aee7..0bb82e4 100644
--- a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
+++ b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
@@ -178,6 +178,12 @@
public static final VersionInfo UNICODE_15_0;
/**
+ * Unicode 15.1 version
+ */
+ @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+ public static final VersionInfo UNICODE_15_1;
+
+ /**
* ICU4J current release version
*/
public static final VersionInfo ICU_VERSION;
@@ -519,6 +525,7 @@
UNICODE_13_0 = getInstance(13, 0, 0, 0);
UNICODE_14_0 = getInstance(14, 0, 0, 0);
UNICODE_15_0 = getInstance(15, 0, 0, 0);
+ UNICODE_15_1 = getInstance(15, 1, 0, 0);
ICU_VERSION = getInstance(72, 1, 0, 0);
ICU_DATA_VERSION = ICU_VERSION;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
index c01440a..89f105f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
@@ -1481,11 +1481,6 @@
}
@Test
- // Android-added: Ignore this test on CTS branches.
- // This test is written is such a way that it is heavily coupled with
- // tzdata. Keeping it passing with system image tzdata and a newer one, which changes
- // canonicality rules (i.e. 2023d), would probably mean re-writing this test.
- @org.junit.Ignore
public void TestCanonicalID() {
// Olson (IANA) tzdata used to have very few "Link"s long time ago.
// This test case was written when most of CLDR canonical time zones are
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
index a7841f5..87c1633 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
@@ -93,8 +93,7 @@
{"OK", "en-u-ss-none"},
{"OK", "en-t-t0-und"},
{"OK", "en-t-x0-12345678"},
- // Android-removed: Ignore en-u-tz-camtr. Behaviour is different after 2023d.
- // {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
+ {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
// tests from LDML spec section on Hybrid Locale Identifiers
{"OK", "hi-t-en-h0-hybrid"},
@@ -184,7 +183,6 @@
//{"{u, ca-civil}", "en-u-ca-islamicc"}, // deprecated, but turns into valid
{"{u, co-direct}", "en-u-co-direct"}, // deprecated
{"{u, kh}", "en-u-kh-false"}, // deprecated
- // Android-removed: Ignore en-u-tz-camtr. Behaviour is different after 2023d.
// {"{u, tz-camtr}", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
{"{u, vt}", "en-u-vt-0020-0041"}, // deprecated
};
diff --git a/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java b/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java
index fafbb7b..250b6cd 100644
--- a/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java
+++ b/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java
@@ -275,15 +275,12 @@
String apexRootDir = TimeZoneDataFiles.getTimeZoneModuleFile("");
List<String> dataModuleFiles =
createModuleTzFiles(TimeZoneDataFiles::getTimeZoneModuleTzFile);
- String icuOverlayFile = AndroidDataFiles.getTimeZoneModuleIcuFile("icu_tzdata.dat");
if (fileExists(apexRootDir)) {
assertEquals("OK", tzModuleStatus);
dataModuleFiles.forEach(TimeZoneIntegrationTest::assertFileExists);
- assertFileExists(icuOverlayFile);
} else {
assertEquals("NOT_FOUND", tzModuleStatus);
dataModuleFiles.forEach(TimeZoneIntegrationTest::assertFileDoesNotExist);
- assertFileDoesNotExist(icuOverlayFile);
}
String icuDatFileName = "icudt" + VersionInfo.ICU_VERSION.getMajor() + "l.dat";
diff --git a/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java b/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
index 1005b43..7a6e046 100644
--- a/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
+++ b/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
@@ -49,10 +49,10 @@
// below assert statement.
assertEquals('.', dfs.getGroupingSeparator());
assertEquals(',', dfs.getDecimalSeparator());
- // Disable this monetary separator check due to an intended bug fix in ART. http://b/318786838
- // assertEquals(',', dfs.getMonetaryDecimalSeparator());
+ // TODO(b/322774673): Re-enable this test in 24Q3.
+ // assertEquals('.', dfs.getMonetaryDecimalSeparator());
// assertEquals(',', dfs.getMonetaryGroupingSeparator());
// Assert that the separators in DecimalFormatSymbols are used.
- // assertEquals("€9,876,66",df.format(9876.66));
+ // assertEquals("€9,876.66",df.format(9876.66));
}
}
diff --git a/build/Android.bp b/build/Android.bp
index f6675e7..c1ab0ff 100644
--- a/build/Android.bp
+++ b/build/Android.bp
@@ -15,6 +15,7 @@
//
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_license"
diff --git a/icu.aconfig b/icu.aconfig
new file mode 100644
index 0000000..3d5c7f8
--- /dev/null
+++ b/icu.aconfig
@@ -0,0 +1,33 @@
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+package: "com.android.icu"
+container: "system"
+
+flag {
+ namespace: "core_libraries"
+ name: "icu74"
+ description: "This flag is deprecated. Use icu_v_api flag instead."
+ bug: "312171264"
+}
+
+
+flag {
+ namespace: "core_libraries"
+ name: "icu_v_api"
+ description: "This flag controls whether exposing ICU 74 APIs and implementation"
+ bug: "312171264"
+ # ICU is used before SettingsProvider starts
+ is_fixed_read_only: true
+}
diff --git a/icu4c/Android.bp b/icu4c/Android.bp
index 11b315a..6c45893 100644
--- a/icu4c/Android.bp
+++ b/icu4c/Android.bp
@@ -14,6 +14,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_applicable_licenses: ["external_icu_icu4c_license"],
}
diff --git a/icu4c/source/Android.bp b/icu4c/source/Android.bp
index e000efb..3c6c961 100644
--- a/icu4c/source/Android.bp
+++ b/icu4c/source/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
@@ -57,6 +58,7 @@
dist: {
targets: ["layoutlib"],
dir: "layoutlib_native/windows",
+ tag: "stripped_all",
},
},
android: {
diff --git a/icu4c/source/common/Android.bp b/icu4c/source/common/Android.bp
index d6f9931..88e05b2 100644
--- a/icu4c/source/common/Android.bp
+++ b/icu4c/source/common/Android.bp
@@ -17,6 +17,7 @@
//
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
@@ -119,6 +120,7 @@
dist: {
targets: ["layoutlib"],
dir: "layoutlib_native/windows",
+ tag: "stripped_all",
},
},
},
diff --git a/icu4c/source/common/umapfile.cpp b/icu4c/source/common/umapfile.cpp
index 145582e..b5aa00e 100644
--- a/icu4c/source/common/umapfile.cpp
+++ b/icu4c/source/common/umapfile.cpp
@@ -249,7 +249,8 @@
pData->map = (char *)data + length;
pData->pHeader=(const DataHeader *)data;
pData->mapAddr = data;
-#if U_PLATFORM == U_PF_IPHONE
+ // Android-changed: madvise on Android for performance reason.
+#if U_PLATFORM == U_PF_IPHONE || U_PLATFORM == U_PF_ANDROID
posix_madvise(data, length, POSIX_MADV_RANDOM);
#endif
return true;
diff --git a/icu4c/source/data/locales/es_419.txt b/icu4c/source/data/locales/es_419.txt
index 2a22471..3d0bc54 100644
--- a/icu4c/source/data/locales/es_419.txt
+++ b/icu4c/source/data/locales/es_419.txt
@@ -13,12 +13,15 @@
patternsLong{
decimalFormat{
1000000000000{
+ one{"0 billón"}
other{"0 billón"}
}
10000000000000{
+ one{"00 billones"}
other{"00 billones"}
}
100000000000000{
+ one{"000 billones"}
other{"000 billones"}
}
}
diff --git a/icu4c/source/data/locales/es_MX.txt b/icu4c/source/data/locales/es_MX.txt
index 4046f5b..3cc0680 100644
--- a/icu4c/source/data/locales/es_MX.txt
+++ b/icu4c/source/data/locales/es_MX.txt
@@ -12,12 +12,15 @@
patternsLong{
decimalFormat{
1000000000000{
+ one{"0 billón"}
other{"0 billones"}
}
10000000000000{
+ one{"00 billones"}
other{"00 billones"}
}
100000000000000{
+ one{"000 billones"}
other{"000 billones"}
}
}
diff --git a/icu4c/source/data/locales/km.txt b/icu4c/source/data/locales/km.txt
index 5beb590..3b85c22 100644
--- a/icu4c/source/data/locales/km.txt
+++ b/icu4c/source/data/locales/km.txt
@@ -25,6 +25,22 @@
MoreInformation{"?"}
NumberElements{
default{"latn"}
+ khmr{
+ symbols{
+ decimal{","}
+ exponential{"E"}
+ group{"."}
+ infinity{"∞"}
+ list{";"}
+ minusSign{"-"}
+ nan{"NaN"}
+ perMille{"‰"}
+ percentSign{"%"}
+ plusSign{"+"}
+ superscriptingExponent{"×"}
+ timeSeparator{":"}
+ }
+ }
latn{
miscPatterns{
approximately{"~{0}"}
@@ -198,9 +214,9 @@
}
}
symbols{
- decimal{","}
+ decimal{"."}
exponential{"E"}
- group{"."}
+ group{","}
infinity{"∞"}
list{";"}
minusSign{"-"}
diff --git a/icu4c/source/data/misc/keyTypeData.txt b/icu4c/source/data/misc/keyTypeData.txt
index 75ff90f..ea27a45 100644
--- a/icu4c/source/data/misc/keyTypeData.txt
+++ b/icu4c/source/data/misc/keyTypeData.txt
@@ -72,9 +72,6 @@
co{
direct{"true"}
}
- tz{
- camtr{"true"}
- }
}
}
typeMap{
diff --git a/icu4c/source/data/misc/metaZones.txt b/icu4c/source/data/misc/metaZones.txt
index 3f74b39..6e70ca7 100644
--- a/icu4c/source/data/misc/metaZones.txt
+++ b/icu4c/source/data/misc/metaZones.txt
@@ -361,6 +361,9 @@
Goose_Bay{
001{"America/Goose_Bay"}
}
+ Greenland{
+ 001{"America/Godthab"}
+ }
Greenland_Central{
001{"America/Scoresbysund"}
}
@@ -500,9 +503,6 @@
Mawson{
001{"Antarctica/Mawson"}
}
- Mexico_Northwest{
- 001{"America/Santa_Isabel"}
- }
Mexico_Pacific{
001{"America/Mazatlan"}
}
@@ -773,6 +773,7 @@
geor{"Georgia"}
giis{"Gilbert_Islands"}
grea{"Greenland_Eastern"}
+ gree{"Greenland"}
grwe{"Greenland_Western"}
guam{"Guam"}
gulf{"Gulf"}
@@ -809,7 +810,6 @@
marq{"Marquesas"}
maur{"Mauritius"}
maws{"Mawson"}
- meno{"Mexico_Northwest"}
mepa{"Mexico_Pacific"}
mgmt{"GMT"}
mong{"Mongolia"}
@@ -1823,6 +1823,13 @@
"America:Godthab"{
{
"Greenland_Western",
+ "1970-01-01 00:00",
+ "2024-03-26 01:00",
+ }
+ {
+ "Greenland",
+ "2024-03-26 01:00",
+ "9999-12-31 23:59",
}
}
"America:Goose_Bay"{
@@ -2324,11 +2331,6 @@
"America_Eastern",
}
}
- "America:Nipigon"{
- {
- "America_Eastern",
- }
- }
"America:Nome"{
{
"Bering",
@@ -2404,23 +2406,6 @@
"America_Eastern",
}
}
- "America:Pangnirtung"{
- {
- "America_Eastern",
- "1970-01-01 00:00",
- "1999-10-31 06:00",
- }
- {
- "America_Central",
- "1999-10-31 06:00",
- "2000-10-29 07:00",
- }
- {
- "America_Eastern",
- "2000-10-29 07:00",
- "9999-12-31 23:59",
- }
- }
"America:Paramaribo"{
{
"Dutch_Guiana",
@@ -2465,11 +2450,6 @@
"2016-12-03 23:00",
}
}
- "America:Rainy_River"{
- {
- "America_Central",
- }
- }
"America:Rankin_Inlet"{
{
"America_Central",
@@ -2541,11 +2521,6 @@
"9999-12-31 23:59",
}
}
- "America:Santa_Isabel"{
- {
- "Mexico_Northwest",
- }
- }
"America:Santarem"{
{
"Amazon",
@@ -2599,6 +2574,11 @@
{
"Greenland_Eastern",
"1981-03-29 02:00",
+ "2024-03-31 01:00",
+ }
+ {
+ "Greenland",
+ "2024-03-31 01:00",
"9999-12-31 23:59",
}
}
@@ -2666,11 +2646,6 @@
"Atlantic",
}
}
- "America:Thunder_Bay"{
- {
- "America_Eastern",
- }
- }
"America:Tijuana"{
{
"America_Pacific",
@@ -2715,11 +2690,6 @@
"9999-12-31 23:59",
}
}
- "America:Yellowknife"{
- {
- "America_Mountain",
- }
- }
"Antarctica:Casey"{
{
"Australia_Western",
@@ -2779,6 +2749,31 @@
{
"Casey",
"2020-10-03 16:01",
+ "2021-03-13 13:00",
+ }
+ {
+ "Australia_Western",
+ "2021-03-13 13:00",
+ "2021-10-02 16:01",
+ }
+ {
+ "Casey",
+ "2021-10-02 16:01",
+ "2022-03-12 13:00",
+ }
+ {
+ "Australia_Western",
+ "2022-03-12 13:00",
+ "2022-10-01 16:01",
+ }
+ {
+ "Casey",
+ "2022-10-01 16:01",
+ "2023-03-08 16:00",
+ }
+ {
+ "Australia_Western",
+ "2023-03-08 16:00",
"9999-12-31 23:59",
}
}
@@ -2858,6 +2853,11 @@
{
"Kazakhstan_Eastern",
"2004-10-30 20:00",
+ "2024-02-29 18:00",
+ }
+ {
+ "Kazakhstan_Western",
+ "2024-02-29 18:00",
"9999-12-31 23:59",
}
}
@@ -3373,6 +3373,11 @@
{
"Kazakhstan_Eastern",
"2004-10-30 21:00",
+ "2024-02-29 18:00",
+ }
+ {
+ "Kazakhstan_Western",
+ "2024-02-29 18:00",
"9999-12-31 23:59",
}
}
@@ -3658,11 +3663,6 @@
"Australia_Central",
}
}
- "Australia:Currie"{
- {
- "Australia_Eastern",
- }
- }
"Australia:Darwin"{
{
"Australia_Central",
@@ -4158,18 +4158,6 @@
"2016-03-26 23:00",
}
}
- "Europe:Uzhgorod"{
- {
- "Moscow",
- "1970-01-01 00:00",
- "1990-06-30 22:00",
- }
- {
- "Europe_Eastern",
- "1990-06-30 22:00",
- "9999-12-31 23:59",
- }
- }
"Europe:Vaduz"{
{
"Europe_Central",
@@ -4222,18 +4210,6 @@
"Europe_Central",
}
}
- "Europe:Zaporozhye"{
- {
- "Moscow",
- "1970-01-01 00:00",
- "1990-06-30 22:00",
- }
- {
- "Europe_Eastern",
- "1990-06-30 22:00",
- "9999-12-31 23:59",
- }
- }
"Europe:Zurich"{
{
"Europe_Central",
@@ -4402,18 +4378,6 @@
"9999-12-31 23:59",
}
}
- "Pacific:Johnston"{
- {
- "Alaska_Hawaii",
- "1970-01-01 00:00",
- "1983-10-30 11:00",
- }
- {
- "Hawaii_Aleutian",
- "1983-10-30 11:00",
- "9999-12-31 23:59",
- }
- }
"Pacific:Kiritimati"{
{
"Line_Islands",
diff --git a/icu4c/source/data/misc/timezoneTypes.txt b/icu4c/source/data/misc/timezoneTypes.txt
index d46182c..23878b9 100644
--- a/icu4c/source/data/misc/timezoneTypes.txt
+++ b/icu4c/source/data/misc/timezoneTypes.txt
@@ -5,10 +5,21 @@
bcpTypeAlias{
tz{
aqams{"nzakl"}
+ aukns{"auhba"}
+ caffs{"cawnp"}
+ camtr{"cator"}
+ canpg{"cator"}
+ capnt{"caiql"}
+ cathu{"cator"}
+ cayzf{"caedm"}
cnckg{"cnsha"}
cnhrb{"cnsha"}
cnkhg{"cnurc"}
gaza{"gazastrp"}
+ mxstis{"mxtij"}
+ uaozh{"uaiev"}
+ uauzh{"uaiev"}
+ umjon{"ushnl"}
usnavajo{"usden"}
}
}
@@ -29,11 +40,18 @@
"America:Indiana:Indianapolis"{"America/Indianapolis"}
"America:Kentucky:Louisville"{"America/Louisville"}
"America:Knox_IN"{"America/Indiana/Knox"}
+ "America:Montreal"{"America/Toronto"}
+ "America:Nipigon"{"America/Toronto"}
"America:Nuuk"{"America/Godthab"}
+ "America:Pangnirtung"{"America/Iqaluit"}
"America:Porto_Acre"{"America/Rio_Branco"}
+ "America:Rainy_River"{"America/Winnipeg"}
"America:Rosario"{"America/Cordoba"}
+ "America:Santa_Isabel"{"America/Tijuana"}
"America:Shiprock"{"America/Denver"}
+ "America:Thunder_Bay"{"America/Toronto"}
"America:Virgin"{"America/St_Thomas"}
+ "America:Yellowknife"{"America/Edmonton"}
"Antarctica:South_Pole"{"Pacific/Auckland"}
"Asia:Ashkhabad"{"Asia/Ashgabat"}
"Asia:Chongqing"{"Asia/Shanghai"}
@@ -55,6 +73,7 @@
"Atlantic:Jan_Mayen"{"Arctic/Longyearbyen"}
"Australia:ACT"{"Australia/Sydney"}
"Australia:Canberra"{"Australia/Sydney"}
+ "Australia:Currie"{"Australia/Hobart"}
"Australia:LHI"{"Australia/Lord_Howe"}
"Australia:NSW"{"Australia/Sydney"}
"Australia:North"{"Australia/Darwin"}
@@ -90,10 +109,13 @@
"Europe:Kyiv"{"Europe/Kiev"}
"Europe:Nicosia"{"Asia/Nicosia"}
"Europe:Tiraspol"{"Europe/Chisinau"}
+ "Europe:Uzhgorod"{"Europe/Kiev"}
+ "Europe:Zaporozhye"{"Europe/Kiev"}
"Mexico:BajaNorte"{"America/Tijuana"}
"Mexico:BajaSur"{"America/Mazatlan"}
"Mexico:General"{"America/Mexico_City"}
"Pacific:Chuuk"{"Pacific/Truk"}
+ "Pacific:Johnston"{"Pacific/Honolulu"}
"Pacific:Kanton"{"Pacific/Enderbury"}
"Pacific:Pohnpei"{"Pacific/Ponape"}
"Pacific:Samoa"{"Pacific/Pago_Pago"}
@@ -302,11 +324,9 @@
"America:Moncton"{"camon"}
"America:Monterrey"{"mxmty"}
"America:Montevideo"{"uymvd"}
- "America:Montreal"{"camtr"}
"America:Montserrat"{"msmni"}
"America:Nassau"{"bsnas"}
"America:New_York"{"usnyc"}
- "America:Nipigon"{"canpg"}
"America:Nome"{"usome"}
"America:Noronha"{"brfen"}
"America:North_Dakota:Beulah"{"usxul"}
@@ -314,7 +334,6 @@
"America:North_Dakota:New_Salem"{"usndnsl"}
"America:Ojinaga"{"mxoji"}
"America:Panama"{"papty"}
- "America:Pangnirtung"{"capnt"}
"America:Paramaribo"{"srpbm"}
"America:Phoenix"{"usphx"}
"America:Port-au-Prince"{"htpap"}
@@ -322,13 +341,11 @@
"America:Porto_Velho"{"brpvh"}
"America:Puerto_Rico"{"prsju"}
"America:Punta_Arenas"{"clpuq"}
- "America:Rainy_River"{"caffs"}
"America:Rankin_Inlet"{"cayek"}
"America:Recife"{"brrec"}
"America:Regina"{"careg"}
"America:Resolute"{"careb"}
"America:Rio_Branco"{"brrbr"}
- "America:Santa_Isabel"{"mxstis"}
"America:Santarem"{"brstm"}
"America:Santiago"{"clscl"}
"America:Santo_Domingo"{"dosdq"}
@@ -344,7 +361,6 @@
"America:Swift_Current"{"cayyn"}
"America:Tegucigalpa"{"hntgu"}
"America:Thule"{"glthu"}
- "America:Thunder_Bay"{"cathu"}
"America:Tijuana"{"mxtij"}
"America:Toronto"{"cator"}
"America:Tortola"{"vgtov"}
@@ -352,7 +368,6 @@
"America:Whitehorse"{"cayxy"}
"America:Winnipeg"{"cawnp"}
"America:Yakutat"{"usyak"}
- "America:Yellowknife"{"cayzf"}
"Antarctica:Casey"{"aqcas"}
"Antarctica:Davis"{"aqdav"}
"Antarctica:DumontDUrville"{"aqddu"}
@@ -461,7 +476,6 @@
"Australia:Adelaide"{"auadl"}
"Australia:Brisbane"{"aubne"}
"Australia:Broken_Hill"{"aubhq"}
- "Australia:Currie"{"aukns"}
"Australia:Darwin"{"audrw"}
"Australia:Eucla"{"aueuc"}
"Australia:Hobart"{"auhba"}
@@ -549,7 +563,6 @@
"Europe:Tallinn"{"eetll"}
"Europe:Tirane"{"altia"}
"Europe:Ulyanovsk"{"ruuly"}
- "Europe:Uzhgorod"{"uauzh"}
"Europe:Vaduz"{"livdz"}
"Europe:Vatican"{"vavat"}
"Europe:Vienna"{"atvie"}
@@ -557,7 +570,6 @@
"Europe:Volgograd"{"ruvog"}
"Europe:Warsaw"{"plwaw"}
"Europe:Zagreb"{"hrzag"}
- "Europe:Zaporozhye"{"uaozh"}
"Europe:Zurich"{"chzrh"}
"Indian:Antananarivo"{"mgtnr"}
"Indian:Chagos"{"iodga"}
@@ -585,7 +597,6 @@
"Pacific:Guadalcanal"{"sbhir"}
"Pacific:Guam"{"gugum"}
"Pacific:Honolulu"{"ushnl"}
- "Pacific:Johnston"{"umjon"}
"Pacific:Kiritimati"{"kicxi"}
"Pacific:Kosrae"{"fmksa"}
"Pacific:Kwajalein"{"mhkwa"}
diff --git a/icu4c/source/data/misc/windowsZones.txt b/icu4c/source/data/misc/windowsZones.txt
index 1535e88..6ba9ca1 100644
--- a/icu4c/source/data/misc/windowsZones.txt
+++ b/icu4c/source/data/misc/windowsZones.txt
@@ -126,12 +126,11 @@
ZZ{"Etc/GMT+6"}
}
"Central Asia Standard Time"{
- 001{"Asia/Almaty"}
+ 001{"Asia/Bishkek"}
AQ{"Antarctica/Vostok"}
CN{"Asia/Urumqi"}
IO{"Indian/Chagos"}
KG{"Asia/Bishkek"}
- KZ{"Asia/Almaty Asia/Qostanay"}
ZZ{"Etc/GMT-6"}
}
"Central Brazilian Standard Time"{
@@ -168,16 +167,13 @@
001{"America/Mexico_City"}
MX{
"America/Mexico_City America/Bahia_Banderas America/Merida America/Mo"
- "nterrey"
+ "nterrey America/Chihuahua "
}
}
"Central Standard Time"{
001{"America/Chicago"}
- CA{
- "America/Winnipeg America/Rainy_River America/Rankin_Inlet America/Re"
- "solute"
- }
- MX{"America/Matamoros"}
+ CA{"America/Winnipeg America/Rankin_Inlet America/Resolute"}
+ MX{"America/Matamoros America/Ojinaga"}
US{
"America/Chicago America/Indiana/Knox America/Indiana/Tell_City Ameri"
"ca/Menominee America/North_Dakota/Beulah America/North_Dakota/Center"
@@ -241,10 +237,7 @@
"Eastern Standard Time"{
001{"America/New_York"}
BS{"America/Nassau"}
- CA{
- "America/Toronto America/Iqaluit America/Montreal America/Nipigon Ame"
- "rica/Pangnirtung America/Thunder_Bay"
- }
+ CA{"America/Toronto America/Iqaluit"}
US{
"America/New_York America/Detroit America/Indiana/Petersburg America/"
"Indiana/Vincennes America/Indiana/Winamac America/Kentucky/Monticell"
@@ -268,7 +261,7 @@
FI{"Europe/Helsinki"}
LT{"Europe/Vilnius"}
LV{"Europe/Riga"}
- UA{"Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye"}
+ UA{"Europe/Kiev"}
}
"Fiji Standard Time"{
001{"Pacific/Fiji"}
@@ -325,7 +318,6 @@
001{"Pacific/Honolulu"}
CK{"Pacific/Rarotonga"}
PF{"Pacific/Tahiti"}
- UM{"Pacific/Johnston"}
US{"Pacific/Honolulu"}
ZZ{"Etc/GMT+10"}
}
@@ -398,16 +390,13 @@
MA{"Africa/Casablanca"}
}
"Mountain Standard Time (Mexico)"{
- 001{"America/Chihuahua"}
- MX{"America/Chihuahua America/Mazatlan"}
+ 001{"America/Mazatlan"}
+ MX{"America/Mazatlan"}
}
"Mountain Standard Time"{
001{"America/Denver"}
- CA{
- "America/Edmonton America/Cambridge_Bay America/Inuvik America/Yellow"
- "knife"
- }
- MX{"America/Ojinaga"}
+ CA{"America/Edmonton America/Cambridge_Bay America/Inuvik"}
+ MX{"America/Ciudad_Juarez"}
US{"America/Denver America/Boise"}
ZZ{"MST7MDT"}
}
@@ -463,7 +452,7 @@
}
"Pacific Standard Time (Mexico)"{
001{"America/Tijuana"}
- MX{"America/Tijuana America/Santa_Isabel"}
+ MX{"America/Tijuana"}
}
"Pacific Standard Time"{
001{"America/Los_Angeles"}
@@ -638,7 +627,7 @@
}
"Tasmania Standard Time"{
001{"Australia/Hobart"}
- AU{"Australia/Hobart Australia/Currie Antarctica/Macquarie"}
+ AU{"Australia/Hobart Antarctica/Macquarie"}
}
"Tocantins Standard Time"{
001{"America/Araguaina"}
@@ -789,7 +778,10 @@
"West Asia Standard Time"{
001{"Asia/Tashkent"}
AQ{"Antarctica/Mawson"}
- KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau"}
+ KZ{
+ "Asia/Oral Asia/Almaty Asia/Aqtau Asia/Aqtobe Asia/Atyrau Asia/Qostan"
+ "ay"
+ }
MV{"Indian/Maldives"}
TF{"Indian/Kerguelen"}
TJ{"Asia/Dushanbe"}
diff --git a/icu4c/source/data/misc/zoneinfo64.txt b/icu4c/source/data/misc/zoneinfo64.txt
index f007378..1d6242f 100644
--- a/icu4c/source/data/misc/zoneinfo64.txt
+++ b/icu4c/source/data/misc/zoneinfo64.txt
@@ -3,9 +3,9 @@
// License & terms of use: http://www.unicode.org/copyright.html
//---------------------------------------------------------
// Build tool: tz2icu
-// Build date: Mon Mar 27 13:30:20 2023
+// Build date: Fri Feb 9 16:46:01 2024
// tz database: ftp://ftp.iana.org/tz/
-// tz version: 2023a
+// tz version: 2024a
// ICU version: 72.1
//---------------------------------------------------------
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
@@ -13,7 +13,7 @@
//---------------------------------------------------------
zoneinfo64:table(nofallback) {
- TZVersion { "2023a" }
+ TZVersion { "2024a" }
Zones:array {
/* ACT */ :int { 357 } //Z#0
/* AET */ :int { 369 } //Z#1
@@ -759,7 +759,7 @@
links:intvector { 166, 542 }
} //Z#166
/* America/Miquelon */ :table {
- trans:intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }
+ trans:intvector { -1847650520, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }
typeOffsets:intvector { -13480, 0, -14400, 0, -10800, 0, -10800, 3600 }
typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
finalRule { "Canada" }
@@ -842,9 +842,9 @@
finalYear:int { 2008 }
} //Z#180
/* America/Nuuk */ :table {
- trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1698541200, 1711846800, 1729990800 }
+ trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1711846800, 1729990800 }
typeOffsets:intvector { -12416, 0, -10800, 0, -10800, 3600, -7200, 0, -7200, 3600 }
- typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030403" }
+ typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201030403" }
finalRule { "EU" }
finalRaw:int { -7200 }
finalYear:int { 2025 }
@@ -970,12 +970,12 @@
links:intvector { 204, 374, 378 }
} //Z#204
/* America/Scoresbysund */ :table {
- trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1698541200, 1711846800, 1729990800 }
typeOffsets:intvector { -5272, 0, -7200, 0, -7200, 3600, -3600, 0, -3600, 3600 }
- typeMap:bin { "0102010403040304030403040304030403040304030403040304030403040304030403" }
+ typeMap:bin { "01020104030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030201" }
finalRule { "EU" }
- finalRaw:int { -3600 }
- finalYear:int { 1997 }
+ finalRaw:int { -7200 }
+ finalYear:int { 2025 }
} //Z#205
/* America/Shiprock */ :int { 110 } //Z#206
/* America/Sitka */ :table {
@@ -1031,7 +1031,7 @@
} //Z#218
/* America/Toronto */ :table {
transPre32:intvector { -1, 1928231148 }
- trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
+ trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -634154400, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
typeOffsets:intvector { -19052, 0, -18000, 0, -18000, 3600 }
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "Canada" }
@@ -1079,9 +1079,9 @@
} //Z#225
/* America/Yellowknife */ :int { 113 } //Z#226
/* Antarctica/Casey */ :table {
- trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200, 1538856000, 1552752000, 1570129200, 1583596800, 1601740860 }
+ trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200, 1538856000, 1552752000, 1570129200, 1583596800, 1601740860, 1615640400, 1633190460, 1647090000, 1664640060, 1678291200 }
typeOffsets:intvector { 0, 0, 28800, 0, 39600, 0 }
- typeMap:bin { "010201020102010201020102" }
+ typeMap:bin { "0102010201020102010201020102010201" }
} //Z#227
/* Antarctica/Davis */ :table {
trans:intvector { -409190400, -163062000, -28857600, 1255806000, 1268251200, 1319742000, 1329854400 }
@@ -1124,13 +1124,17 @@
finalRaw:int { 0 }
finalYear:int { 2006 }
} //Z#237
- /* Antarctica/Vostok */ :int { 331 } //Z#238
+ /* Antarctica/Vostok */ :table {
+ trans:intvector { -380073600, 760035600, 783648000, 1702839600 }
+ typeOffsets:intvector { 0, 0, 18000, 0, 25200, 0 }
+ typeMap:bin { "02000201" }
+ } //Z#238
/* Arctic/Longyearbyen */ :int { 447 } //Z#239
/* Asia/Aden */ :int { 311 } //Z#240
/* Asia/Almaty */ :table {
- trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400 }
+ trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1709229600 }
typeOffsets:intvector { 18468, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
- typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" }
+ typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040301" }
} //Z#241
/* Asia/Amman */ :table {
trans:intvector { -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938124000, 954367200, 970178400, 985816800, 1001628000, 1017352800, 1033077600, 1048802400, 1066946400, 1080252000, 1097791200, 1112306400, 1128031200, 1143756000, 1161900000, 1175205600, 1193349600, 1206655200, 1225404000, 1238104800, 1256853600, 1269554400, 1288303200, 1301608800, 1319752800, 1333058400, 1387486800, 1395957600, 1414706400, 1427407200, 1446156000, 1459461600, 1477605600, 1490911200, 1509055200, 1522360800, 1540504800, 1553810400, 1571954400, 1585260000, 1604008800, 1616709600, 1635458400, 1645740000, 1666908000 }
@@ -1260,10 +1264,10 @@
} //Z#269
/* Asia/Gaza */ :table {
transPre32:intvector { -1, 2109557424 }
- trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
- transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 }
+ trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1713571200, 1729897200, 1744416000, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
+ transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2078807296, 0, -2064900496, 0, -2060663296, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2030423296, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -1999578496, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1968733696, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1938493696, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1907648896, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1876804096, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1846564096, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1815719296, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1785479296, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1754634496, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1723789696, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1693549696, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1662704896, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1631860096, 0, -1618558096, 0, -1601620096, 0, -1586503696, 0, -1570775296, 0, -1555054096, 0, -1540535296, 0, -1523604496, 0, -1509690496, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1050647296, 0, -1050046096, 0, -1037341696, 0, -1023434896, 0, -1019802496, 0, -1018596496, 0, -1005892096, 0, -993194896, 0, -988957696, 0, -987146896, 0, -973837696, 0, -962350096, 0, -958717696, 0, -955697296, 0, -942388096, 0, -932110096, 0, -927872896, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897028096, 0, -892193296, 0, -879488896, 0, -870420496, 0, -866788096, 0, -860743696, 0, -848039296, 0, -840180496, 0, -835943296, 0, -829294096, 0, -815984896, 0, -809335696, 0, -805703296, 0, -797844496, 0, -784535296, 0, -778490896, 0, -774858496, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744013696, 0, -734945296, 0, -721636096, 0, -717406096, 0, -713773696, 0, -702890896, 0, -690186496, 0, -687166096, 0, -682928896, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652084096, 0, -639991696, 0, -626682496, 0, -625476496, 0, -621844096, 0, -608542096, 0, -595232896, 0, -577092496 }
typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 }
- typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "Palestine" }
finalRaw:int { 7200 }
finalYear:int { 2088 }
@@ -1271,16 +1275,16 @@
/* Asia/Harbin */ :int { 316 } //Z#271
/* Asia/Hebron */ :table {
transPre32:intvector { -1, 2109557273 }
- trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
- transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 }
+ trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1713571200, 1729897200, 1744416000, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
+ transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2078807296, 0, -2064900496, 0, -2060663296, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2030423296, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -1999578496, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1968733696, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1938493696, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1907648896, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1876804096, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1846564096, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1815719296, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1785479296, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1754634496, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1723789696, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1693549696, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1662704896, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1631860096, 0, -1618558096, 0, -1601620096, 0, -1586503696, 0, -1570775296, 0, -1555054096, 0, -1540535296, 0, -1523604496, 0, -1509690496, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1050647296, 0, -1050046096, 0, -1037341696, 0, -1023434896, 0, -1019802496, 0, -1018596496, 0, -1005892096, 0, -993194896, 0, -988957696, 0, -987146896, 0, -973837696, 0, -962350096, 0, -958717696, 0, -955697296, 0, -942388096, 0, -932110096, 0, -927872896, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897028096, 0, -892193296, 0, -879488896, 0, -870420496, 0, -866788096, 0, -860743696, 0, -848039296, 0, -840180496, 0, -835943296, 0, -829294096, 0, -815984896, 0, -809335696, 0, -805703296, 0, -797844496, 0, -784535296, 0, -778490896, 0, -774858496, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744013696, 0, -734945296, 0, -721636096, 0, -717406096, 0, -713773696, 0, -702890896, 0, -690186496, 0, -687166096, 0, -682928896, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652084096, 0, -639991696, 0, -626682496, 0, -625476496, 0, -621844096, 0, -608542096, 0, -595232896, 0, -577092496 }
typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 }
- typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+ typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "Palestine" }
finalRaw:int { 7200 }
finalYear:int { 2088 }
} //Z#272
/* Asia/Ho_Chi_Minh */ :table {
- trans:intvector { -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 }
+ trans:intvector { -1851577590, -852105600, -782643600, -767869200, -718095600, -457772400, -315648000, 171820800 }
typeOffsets:intvector { 25590, 0, 25200, 0, 28800, 0, 32400, 0 }
typeMap:bin { "0102030102010201" }
links:intvector { 273, 312, 634 }
@@ -1444,9 +1448,9 @@
links:intvector { 250, 307 }
} //Z#307
/* Asia/Qostanay */ :table {
- trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }
+ trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1709229600 }
typeOffsets:intvector { 15268, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
- typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030405" }
+ typeMap:bin { "01030405040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040503" }
} //Z#308
/* Asia/Qyzylorda */ :table {
trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1545328800 }
@@ -1550,7 +1554,7 @@
trans:intvector { -1325483420 }
typeOffsets:intvector { 21020, 0, 21600, 0 }
typeMap:bin { "01" }
- links:intvector { 238, 284, 331 }
+ links:intvector { 284, 331 }
} //Z#331
/* Asia/Ust-Nera */ :table {
trans:intvector { -1579426374, -1247558400, 354898800, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1315828800, 1414249200 }
@@ -2542,10 +2546,9 @@
typeOffsets:intvector { -14400, 0 }
} //Z#604
/* SystemV/AST4ADT */ :table {
- transPre32:intvector { -1, 2096195296, -1, 2111916496, -1, 2127644896, -1, 2143366096 }
trans:intvector { -2135872800, -2120151600, -2104423200, -2088702000, -2072973600, -2056647600, -2040919200, -2025198000, -2009469600, -1993748400, -1978020000, -1962298800, -1946570400, -1930849200, -1915120800, -1898794800, -1883671200, -1867345200, -1851616800, -1835895600, -1820167200, -1804446000, -1788717600, -1772996400, -1757268000, -1741546800, -1725818400, -1709492400, -1693764000, -1678042800, -1662314400, -1646593200, -1630864800, -1615143600, -1599415200, -1583694000, -1567965600, -1551639600, -1536516000, -1520190000, -1504461600, -1488740400, -1473012000, -1457290800, -1441562400, -1425841200, -1410112800, -1394391600, -1378663200, -1362337200, -1347213600, -1330887600, -1315159200, -1299438000, -1283709600, -1267988400, -1252260000, -1236538800, -1220810400, -1205089200, -1189360800, -1173034800, -1157306400, -1141585200, -1125856800, -1110135600, -1094407200, -1078686000, -1062957600, -1047236400, -1031508000, -1015182000, -1000058400, -983732400, -968004000, -952282800, -936554400, -920833200, -905104800, -889383600, -873655200, -857934000, -842205600, -825879600, -810151200, -794430000, -778701600, -762980400, -747252000, -731530800, -715802400, -700081200, -684352800, -668026800, -652903200, -636577200, -620848800, -605127600, -589399200, -573678000, -557949600, -542228400, -526500000, -510778800, -495050400, -478724400, -463600800, -447274800, -431546400, -415825200, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 126684000, 154501200, 162367200, 183531600, 199260000, 215586000 }
typeOffsets:intvector { -14400, 0, -14400, 3600 }
- typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
finalRule { "SystemV" }
finalRaw:int { -14400 }
finalYear:int { 1977 }
@@ -2554,10 +2557,9 @@
typeOffsets:intvector { -21600, 0 }
} //Z#606
/* SystemV/CST6CDT */ :table {
- transPre32:intvector { -1, 2096202496, -1, 2111923696, -1, 2127652096, -1, 2143373296 }
trans:intvector { -2135865600, -2120144400, -2104416000, -2088694800, -2072966400, -2056640400, -2040912000, -2025190800, -2009462400, -1993741200, -1978012800, -1962291600, -1946563200, -1930842000, -1915113600, -1898787600, -1883664000, -1867338000, -1851609600, -1835888400, -1820160000, -1804438800, -1788710400, -1772989200, -1757260800, -1741539600, -1725811200, -1709485200, -1693756800, -1678035600, -1662307200, -1646586000, -1630857600, -1615136400, -1599408000, -1583686800, -1567958400, -1551632400, -1536508800, -1520182800, -1504454400, -1488733200, -1473004800, -1457283600, -1441555200, -1425834000, -1410105600, -1394384400, -1378656000, -1362330000, -1347206400, -1330880400, -1315152000, -1299430800, -1283702400, -1267981200, -1252252800, -1236531600, -1220803200, -1205082000, -1189353600, -1173027600, -1157299200, -1141578000, -1125849600, -1110128400, -1094400000, -1078678800, -1062950400, -1047229200, -1031500800, -1015174800, -1000051200, -983725200, -967996800, -952275600, -936547200, -920826000, -905097600, -889376400, -873648000, -857926800, -842198400, -825872400, -810144000, -794422800, -778694400, -762973200, -747244800, -731523600, -715795200, -700074000, -684345600, -668019600, -652896000, -636570000, -620841600, -605120400, -589392000, -573670800, -557942400, -542221200, -526492800, -510771600, -495043200, -478717200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 154508400, 162374400, 183538800, 199267200, 215593200 }
typeOffsets:intvector { -21600, 0, -21600, 3600 }
- typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
finalRule { "SystemV" }
finalRaw:int { -21600 }
finalYear:int { 1977 }
@@ -2566,10 +2568,9 @@
typeOffsets:intvector { -18000, 0 }
} //Z#608
/* SystemV/EST5EDT */ :table {
- transPre32:intvector { -1, 2096198896, -1, 2111920096, -1, 2127648496, -1, 2143369696 }
trans:intvector { -2135869200, -2120148000, -2104419600, -2088698400, -2072970000, -2056644000, -2040915600, -2025194400, -2009466000, -1993744800, -1978016400, -1962295200, -1946566800, -1930845600, -1915117200, -1898791200, -1883667600, -1867341600, -1851613200, -1835892000, -1820163600, -1804442400, -1788714000, -1772992800, -1757264400, -1741543200, -1725814800, -1709488800, -1693760400, -1678039200, -1662310800, -1646589600, -1630861200, -1615140000, -1599411600, -1583690400, -1567962000, -1551636000, -1536512400, -1520186400, -1504458000, -1488736800, -1473008400, -1457287200, -1441558800, -1425837600, -1410109200, -1394388000, -1378659600, -1362333600, -1347210000, -1330884000, -1315155600, -1299434400, -1283706000, -1267984800, -1252256400, -1236535200, -1220806800, -1205085600, -1189357200, -1173031200, -1157302800, -1141581600, -1125853200, -1110132000, -1094403600, -1078682400, -1062954000, -1047232800, -1031504400, -1015178400, -1000054800, -983728800, -968000400, -952279200, -936550800, -920829600, -905101200, -889380000, -873651600, -857930400, -842202000, -825876000, -810147600, -794426400, -778698000, -762976800, -747248400, -731527200, -715798800, -700077600, -684349200, -668023200, -652899600, -636573600, -620845200, -605124000, -589395600, -573674400, -557946000, -542224800, -526496400, -510775200, -495046800, -478720800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 154504800, 162370800, 183535200, 199263600, 215589600 }
typeOffsets:intvector { -18000, 0, -18000, 3600 }
- typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
finalRule { "SystemV" }
finalRaw:int { -18000 }
finalYear:int { 1977 }
@@ -2581,10 +2582,9 @@
typeOffsets:intvector { -25200, 0 }
} //Z#611
/* SystemV/MST7MDT */ :table {
- transPre32:intvector { -1, 2096206096, -1, 2111927296, -1, 2127655696, -1, 2143376896 }
trans:intvector { -2135862000, -2120140800, -2104412400, -2088691200, -2072962800, -2056636800, -2040908400, -2025187200, -2009458800, -1993737600, -1978009200, -1962288000, -1946559600, -1930838400, -1915110000, -1898784000, -1883660400, -1867334400, -1851606000, -1835884800, -1820156400, -1804435200, -1788706800, -1772985600, -1757257200, -1741536000, -1725807600, -1709481600, -1693753200, -1678032000, -1662303600, -1646582400, -1630854000, -1615132800, -1599404400, -1583683200, -1567954800, -1551628800, -1536505200, -1520179200, -1504450800, -1488729600, -1473001200, -1457280000, -1441551600, -1425830400, -1410102000, -1394380800, -1378652400, -1362326400, -1347202800, -1330876800, -1315148400, -1299427200, -1283698800, -1267977600, -1252249200, -1236528000, -1220799600, -1205078400, -1189350000, -1173024000, -1157295600, -1141574400, -1125846000, -1110124800, -1094396400, -1078675200, -1062946800, -1047225600, -1031497200, -1015171200, -1000047600, -983721600, -967993200, -952272000, -936543600, -920822400, -905094000, -889372800, -873644400, -857923200, -842194800, -825868800, -810140400, -794419200, -778690800, -762969600, -747241200, -731520000, -715791600, -700070400, -684342000, -668016000, -652892400, -636566400, -620838000, -605116800, -589388400, -573667200, -557938800, -542217600, -526489200, -510768000, -495039600, -478713600, -463590000, -447264000, -431535600, -415814400, -400086000, -384364800, -368636400, -352915200, -337186800, -321465600, -305737200, -289411200, -273682800, -257961600, -242233200, -226512000, -210783600, -195062400, -179334000, -163612800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 154512000, 162378000, 183542400, 199270800, 215596800 }
typeOffsets:intvector { -25200, 0, -25200, 3600 }
- typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
finalRule { "SystemV" }
finalRaw:int { -25200 }
finalYear:int { 1977 }
@@ -2593,10 +2593,9 @@
typeOffsets:intvector { -28800, 0 }
} //Z#613
/* SystemV/PST8PDT */ :table {
- transPre32:intvector { -1, 2096209696, -1, 2111930896, -1, 2127659296, -1, 2143380496 }
trans:intvector { -2135858400, -2120137200, -2104408800, -2088687600, -2072959200, -2056633200, -2040904800, -2025183600, -2009455200, -1993734000, -1978005600, -1962284400, -1946556000, -1930834800, -1915106400, -1898780400, -1883656800, -1867330800, -1851602400, -1835881200, -1820152800, -1804431600, -1788703200, -1772982000, -1757253600, -1741532400, -1725804000, -1709478000, -1693749600, -1678028400, -1662300000, -1646578800, -1630850400, -1615129200, -1599400800, -1583679600, -1567951200, -1551625200, -1536501600, -1520175600, -1504447200, -1488726000, -1472997600, -1457276400, -1441548000, -1425826800, -1410098400, -1394377200, -1378648800, -1362322800, -1347199200, -1330873200, -1315144800, -1299423600, -1283695200, -1267974000, -1252245600, -1236524400, -1220796000, -1205074800, -1189346400, -1173020400, -1157292000, -1141570800, -1125842400, -1110121200, -1094392800, -1078671600, -1062943200, -1047222000, -1031493600, -1015167600, -1000044000, -983718000, -967989600, -952268400, -936540000, -920818800, -905090400, -889369200, -873640800, -857919600, -842191200, -825865200, -810136800, -794415600, -778687200, -762966000, -747237600, -731516400, -715788000, -700066800, -684338400, -668012400, -652888800, -636562800, -620834400, -605113200, -589384800, -573663600, -557935200, -542214000, -526485600, -510764400, -495036000, -478710000, -463586400, -447260400, -431532000, -415810800, -400082400, -384361200, -368632800, -352911600, -337183200, -321462000, -305733600, -289407600, -273679200, -257958000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 154515600, 162381600, 183546000, 199274400, 215600400 }
typeOffsets:intvector { -28800, 0, -28800, 3600 }
- typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
finalRule { "SystemV" }
finalRaw:int { -28800 }
finalYear:int { 1977 }
@@ -2605,10 +2604,9 @@
typeOffsets:intvector { -32400, 0 }
} //Z#615
/* SystemV/YST9YDT */ :table {
- transPre32:intvector { -1, 2096213296, -1, 2111934496, -1, 2127662896, -1, 2143384096 }
trans:intvector { -2135854800, -2120133600, -2104405200, -2088684000, -2072955600, -2056629600, -2040901200, -2025180000, -2009451600, -1993730400, -1978002000, -1962280800, -1946552400, -1930831200, -1915102800, -1898776800, -1883653200, -1867327200, -1851598800, -1835877600, -1820149200, -1804428000, -1788699600, -1772978400, -1757250000, -1741528800, -1725800400, -1709474400, -1693746000, -1678024800, -1662296400, -1646575200, -1630846800, -1615125600, -1599397200, -1583676000, -1567947600, -1551621600, -1536498000, -1520172000, -1504443600, -1488722400, -1472994000, -1457272800, -1441544400, -1425823200, -1410094800, -1394373600, -1378645200, -1362319200, -1347195600, -1330869600, -1315141200, -1299420000, -1283691600, -1267970400, -1252242000, -1236520800, -1220792400, -1205071200, -1189342800, -1173016800, -1157288400, -1141567200, -1125838800, -1110117600, -1094389200, -1078668000, -1062939600, -1047218400, -1031490000, -1015164000, -1000040400, -983714400, -967986000, -952264800, -936536400, -920815200, -905086800, -889365600, -873637200, -857916000, -842187600, -825861600, -810133200, -794412000, -778683600, -762962400, -747234000, -731512800, -715784400, -700063200, -684334800, -668008800, -652885200, -636559200, -620830800, -605109600, -589381200, -573660000, -557931600, -542210400, -526482000, -510760800, -495032400, -478706400, -463582800, -447256800, -431528400, -415807200, -400078800, -384357600, -368629200, -352908000, -337179600, -321458400, -305730000, -289404000, -273675600, -257954400, -242226000, -226504800, -210776400, -195055200, -179326800, -163605600, -147877200, -131551200, -116427600, -100101600, -84373200, -68652000, -52923600, -37202400, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 154519200, 162385200, 183549600, 199278000, 215604000 }
typeOffsets:intvector { -32400, 0, -32400, 3600 }
- typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
finalRule { "SystemV" }
finalRaw:int { -32400 }
finalYear:int { 1977 }
diff --git a/icu4c/source/i18n/Android.bp b/icu4c/source/i18n/Android.bp
index 05ce061..58861ff 100644
--- a/icu4c/source/i18n/Android.bp
+++ b/icu4c/source/i18n/Android.bp
@@ -17,6 +17,7 @@
//
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/samples/break/Android.bp b/icu4c/source/samples/break/Android.bp
index 378d59b..0376c52 100644
--- a/icu4c/source/samples/break/Android.bp
+++ b/icu4c/source/samples/break/Android.bp
@@ -25,6 +25,7 @@
*/
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/stubdata/Android.bp b/icu4c/source/stubdata/Android.bp
index 3e008e6..071c4f0 100644
--- a/icu4c/source/stubdata/Android.bp
+++ b/icu4c/source/stubdata/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/stubdata/icudt72l.dat b/icu4c/source/stubdata/icudt72l.dat
index d3305ed..ae431ca 100644
--- a/icu4c/source/stubdata/icudt72l.dat
+++ b/icu4c/source/stubdata/icudt72l.dat
Binary files differ
diff --git a/icu4c/source/test/Android.bp b/icu4c/source/test/Android.bp
index 4531fb8..7216c7d 100644
--- a/icu4c/source/test/Android.bp
+++ b/icu4c/source/test/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
@@ -32,12 +33,15 @@
name: "icu_test_defaults",
gtest: false,
rtti: true,
+ cpp_std: "gnu++17",
cflags: [
"-Wno-deprecated-declarations",
"-Wno-missing-field-initializers",
+ "-Wno-tautological-undefined-compare",
"-Wno-unused-function",
"-Wno-unused-parameter",
"-Wno-unused-variable",
+ "-DUCONFIG_USE_ML_PHRASE_BREAKING=1",
],
shared_libs: [
"libicu_cts_stub",
diff --git a/icu4c/source/test/cintltst/Android.bp b/icu4c/source/test/cintltst/Android.bp
index e05c72d..042e1cd 100644
--- a/icu4c/source/test/cintltst/Android.bp
+++ b/icu4c/source/test/cintltst/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/test/fuzzer/Android.bp b/icu4c/source/test/fuzzer/Android.bp
index d361b9d..e8b051f 100644
--- a/icu4c/source/test/fuzzer/Android.bp
+++ b/icu4c/source/test/fuzzer/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: [
"//external/icu:__subpackages__",
],
diff --git a/icu4c/source/test/intltest/Android.bp b/icu4c/source/test/intltest/Android.bp
index cef26ba..50db89f 100644
--- a/icu4c/source/test/intltest/Android.bp
+++ b/icu4c/source/test/intltest/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp
index 08cafb4..c675006 100644
--- a/icu4c/source/test/intltest/tztest.cpp
+++ b/icu4c/source/test/intltest/tztest.cpp
@@ -68,11 +68,7 @@
TESTCASE_AUTO(TestFractionalDST);
TESTCASE_AUTO(TestFebruary);
TESTCASE_AUTO(TestCanonicalIDAPI);
- // Android-changed: Ignore this test on CTS branches.
- // This test is written is such a way that it is heavily coupled with
- // tzdata. Keeping it passing with system image tzdata and a newer one, which changes
- // canonicality rules (i.e. 2023d), would probably mean re-writing this test.
- // TESTCASE_AUTO(TestCanonicalID);
+ TESTCASE_AUTO(TestCanonicalID);
TESTCASE_AUTO(TestDisplayNamesMeta);
TESTCASE_AUTO(TestGetRegion);
TESTCASE_AUTO(TestGetAvailableIDsNew);
diff --git a/icu4c/source/tools/ctestfw/Android.bp b/icu4c/source/tools/ctestfw/Android.bp
index 929491e..57e770c 100644
--- a/icu4c/source/tools/ctestfw/Android.bp
+++ b/icu4c/source/tools/ctestfw/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/tools/toolutil/Android.bp b/icu4c/source/tools/toolutil/Android.bp
index 765461f..b37cc63 100644
--- a/icu4c/source/tools/toolutil/Android.bp
+++ b/icu4c/source/tools/toolutil/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/tools/tzcode/Makefile.in b/icu4c/source/tools/tzcode/Makefile.in
index 4ba969f..d100842 100644
--- a/icu4c/source/tools/tzcode/Makefile.in
+++ b/icu4c/source/tools/tzcode/Makefile.in
@@ -101,7 +101,7 @@
sed -e '/if (line ~ \/^R SystemV \/) return/s/^/#/' $(TZORIG)/zishrink.awk.orig > $(TZORIG)/zishrink.awk
# -mv $(TZORIG)/Makefile $(TZORIG)/Makefile.orig
# sed -e "s/^BACKWARD=.*/BACKWARD= backward pacificnew/" $(TZORIG)/Makefile.orig > $(TZORIG)/Makefile
- $(MAKE) -C $@ $(TZORIG_OPTS) zdump zones
+ $(MAKE) -C $@ $(TZORIG_OPTS) tzdir.h zdump zones
$(ZDUMPOUT): tzorig
( cd $(TZORIG) ; ./zdump$(EXEEXT) $(ZDUMP_OPTS) )
diff --git a/icu4c/source/tools/tzcode/icuzones b/icu4c/source/tools/tzcode/icuzones
index 52f5698..940b055 100644
--- a/icu4c/source/tools/tzcode/icuzones
+++ b/icu4c/source/tools/tzcode/icuzones
@@ -31,13 +31,24 @@
Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
Rule SystemV 1976 max - Oct lastSun 2:00 0 S
+# Note: 1901 Dec 13 20:45:52u is the minimum value of int32 seconds.
+# A zone with infinite "min" year rule cannot be supported by 64 bit TZif,
+# so adding explicit transition to zones with SystemV rule at the minimum
+# int32 seconds.
+
# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
-Zone SystemV/AST4ADT -4:00 SystemV A%sT
-Zone SystemV/EST5EDT -5:00 SystemV E%sT
-Zone SystemV/CST6CDT -6:00 SystemV C%sT
-Zone SystemV/MST7MDT -7:00 SystemV M%sT
-Zone SystemV/PST8PDT -8:00 SystemV P%sT
-Zone SystemV/YST9YDT -9:00 SystemV Y%sT
+Zone SystemV/AST4ADT -4:00 - AST 1901 Dec 13 20:45:52u
+ -4:00 SystemV A%sT
+Zone SystemV/EST5EDT -5:00 - EST 1901 Dec 13 20:45:52u
+ -5:00 SystemV E%sT
+Zone SystemV/CST6CDT -6:00 - CST 1901 Dec 13 20:45:52u
+ -6:00 SystemV C%sT
+Zone SystemV/MST7MDT -7:00 - MST 1901 Dec 13 20:45:52u
+ -7:00 SystemV M%sT
+Zone SystemV/PST8PDT -8:00 - PST 1901 Dec 13 20:45:52u
+ -8:00 SystemV P%sT
+Zone SystemV/YST9YDT -9:00 - YST 1901 Dec 13 20:45:52u
+ -9:00 SystemV Y%sT
Zone SystemV/AST4 -4:00 - AST
Zone SystemV/EST5 -5:00 - EST
Zone SystemV/CST6 -6:00 - CST
diff --git a/icu4c/source/tools/tzcode/zdump.c b/icu4c/source/tools/tzcode/zdump.c
index ebd7a5c..b9cab22 100644
--- a/icu4c/source/tools/tzcode/zdump.c
+++ b/icu4c/source/tools/tzcode/zdump.c
@@ -32,6 +32,7 @@
#define ICU
#ifdef ICU
+#include "tzdir.h"
#include "dirent.h"
#include "sys/stat.h"
#endif
diff --git a/icu4c/source/tools/tzcode/zic.c b/icu4c/source/tools/tzcode/zic.c
index 5457678..ed3e792 100644
--- a/icu4c/source/tools/tzcode/zic.c
+++ b/icu4c/source/tools/tzcode/zic.c
@@ -3,6 +3,9 @@
** 2006-07-17 by Arthur David Olson.
*/
+/* https://man7.org/linux/man-pages/man2/symlink.2.html */
+#define _POSIX_C_SOURCE 200112L
+
/* Enable extensions and modifications for ICU. */
#define ICU
diff --git a/icu4j/Android.bp b/icu4j/Android.bp
index daa1a6b..2479211 100644
--- a/icu4j/Android.bp
+++ b/icu4j/Android.bp
@@ -15,6 +15,7 @@
//
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: ["//visibility:private"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
@@ -55,6 +56,7 @@
"-Xep:IdentityBinaryExpression:WARN",
],
},
+ sdk_version: "core_current",
}
java_library {
@@ -71,6 +73,14 @@
"//system/timezone/input_tools/android/tzlookup_generator",
],
defaults: ["icu4j-defaults"],
+ libs: [
+ // Need the following shared libraries for @FlaggedApi. These libraries are only needed
+ // compile-time, not runtime, and it shouldn't need to be statically linked.
+ // framework-api-annotations are not static libs to avoid exposing the definition of
+ // framework's annotations from ICU (wrong place) instead of framework (correct place).
+ "framework-annotations-lib",
+ "icu_aconfig_flags_lib",
+ ],
srcs: ["main/classes/**/*.java"],
java_resource_dirs: ["main/classes/*/src"],
@@ -95,6 +105,7 @@
java_library_static {
name: "icu4j_calendar_astronomer",
host_supported: false,
+ sdk_version: "core_current",
srcs: ["main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java"],
visibility: [
"//frameworks/base/services/core",
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties b/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
index 7c66c50..e64b2f3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
+++ b/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
@@ -69,4 +69,4 @@
# Enable ML phrase breaking
# Android patch, http://b/219529457, for ML-based phrase line breaking
# @internal
-com.ibm.icu.impl.breakiter.useMLPhraseBreaking = false
+com.ibm.icu.impl.breakiter.useMLPhraseBreaking = true
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
index 2b6981d..4b6d929 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
@@ -592,13 +592,15 @@
Factory f = lIter.previous();
f.updateVisibleIDs(mutableMap);
}
- this.idcache = Collections.unmodifiableMap(mutableMap);
+ Map<String, Factory> result = Collections.unmodifiableMap(mutableMap);
+ this.idcache = result;
+ return result;
} finally {
factoryLock.releaseRead();
}
}
+ return idcache;
}
- return idcache;
}
private Map<String, Factory> idcache;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
index 575eaeb..fbf544b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
@@ -1309,6 +1309,11 @@
/** @stable ICU 72 */
public static final int NAG_MUNDARI_ID = 327; /*[1E4D0]*/
+ // New block in Unicode 15.1
+
+ /** @stable ICU 74 */
+ public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID = 328; /*[2EBF0]*/
+
/**
* One more than the highest normal UnicodeBlock value.
* The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.BLOCK).
@@ -2747,6 +2752,13 @@
public static final UnicodeBlock NAG_MUNDARI =
new UnicodeBlock("NAG_MUNDARI", NAG_MUNDARI_ID); /*[1E4D0]*/
+ // New block in Unicode 15.1
+
+ /** @stable ICU 74 */
+ public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I =
+ new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I",
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID); /*[2EBF0]*/
+
/**
* @stable ICU 2.4
*/
@@ -2874,7 +2886,9 @@
{
super(name);
m_id_ = id;
- if (id >= 0) {
+ // Android-changed: Avoid leaking flagged UnicodeBlock until ICU 74 data is integrated.
+ // if (id >= 0) {
+ if (id >= 0 && id < BLOCKS_.length) {
BLOCKS_[id] = this;
}
}
@@ -3807,6 +3821,16 @@
public static final int E_MODIFIER = 41; /*[EM]*/
/** @stable ICU 58 */
public static final int ZWJ = 42; /*[ZWJ]*/
+ /** @stable ICU 74 */
+ public static final int AKSARA = 43; /*[AK]*/ /* from here on: new in Unicode 15.1/ICU 74 */
+ /** @stable ICU 74 */
+ public static final int AKSARA_PREBASE = 44; /*[AP]*/
+ /** @stable ICU 74 */
+ public static final int AKSARA_START = 45; /*[AS]*/
+ /** @stable ICU 74 */
+ public static final int VIRAMA_FINAL = 46; /*[VF]*/
+ /** @stable ICU 74 */
+ public static final int VIRAMA = 47; /*[VI]*/
/**
* One more than the highest normal LineBreak value.
* The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK).
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
index 4c80c30..cf8b7c8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
@@ -142,7 +142,7 @@
* supported yet.
*
* @return NounClass
- * @draft ICU 71.
+ * @stable ICU 71.
*/
public DisplayOptions.NounClass getNounClass() {
return DisplayOptions.NounClass.fromIdentifier(this.gender);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
index 1cdf5e6..cf89463 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
@@ -559,7 +559,7 @@
* the desired case for a unit formatter's output (e.g. accusative, dative, genitive).
*
* @return The fluent chain.
- * @draft ICU 72
+ * @stable ICU 72
*/
public T displayOptions(DisplayOptions displayOptions) {
// `displayCase` does not recognise the `undefined`
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
index 9b50307..6a361bc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -1105,7 +1105,7 @@
* be thrown if out of range.
* @param dateTimeFormat
* the new dateTimeFormat to set for the specified style
- * @draft ICU 71
+ * @stable ICU 71
*/
public void setDateTimeFormat(int style, String dateTimeFormat) {
if (style < DateFormat.FULL || style > DateFormat.SHORT) {
@@ -1123,7 +1123,7 @@
* be thrown if out of range.
* @return
* the current dateTimeFormat for the specified style.
- * @draft ICU 71
+ * @stable ICU 71
*/
public String getDateTimeFormat(int style) {
if (style < DateFormat.FULL || style > DateFormat.SHORT) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java
index ebf0fa7..ef9e7e1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java
@@ -21,7 +21,7 @@
* .build();
* }
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public final class DisplayOptions {
private final GrammaticalCase grammaticalCase;
@@ -46,7 +46,7 @@
* Creates a builder with the {@code UNDEFINED} value for all the parameters.
*
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public static Builder builder() {
return new Builder();
@@ -56,7 +56,7 @@
* Creates a builder with the same parameters from this object.
*
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder copyToBuilder() {
return new Builder(this);
@@ -66,7 +66,7 @@
* Gets the grammatical case.
*
* @return GrammaticalCase
- * @draft ICU 72
+ * @stable ICU 72
*/
public GrammaticalCase getGrammaticalCase() {
return this.grammaticalCase;
@@ -76,7 +76,7 @@
* Gets the noun class.
*
* @return NounClass
- * @draft ICU 72
+ * @stable ICU 72
*/
public NounClass getNounClass() {
return this.nounClass;
@@ -86,7 +86,7 @@
* Gets the plural category.
*
* @return PluralCategory
- * @draft ICU 72
+ * @stable ICU 72
*/
public PluralCategory getPluralCategory() {
return this.pluralCategory;
@@ -96,7 +96,7 @@
* Gets the capitalization.
*
* @return Capitalization
- * @draft ICU 72
+ * @stable ICU 72
*/
public Capitalization getCapitalization() {
return this.capitalization;
@@ -106,7 +106,7 @@
* Gets the name style.
*
* @return NameStyle
- * @draft ICU 72
+ * @stable ICU 72
*/
public NameStyle getNameStyle() {
return this.nameStyle;
@@ -116,7 +116,7 @@
* Gets the display length.
*
* @return DisplayLength
- * @draft ICU 72
+ * @stable ICU 72
*/
public DisplayLength getDisplayLength() {
return this.displayLength;
@@ -126,7 +126,7 @@
* Gets the substitute handling.
*
* @return SubstituteHandling
- * @draft ICU 72
+ * @stable ICU 72
*/
public SubstituteHandling getSubstituteHandling() {
return this.substituteHandling;
@@ -135,7 +135,7 @@
/**
* Responsible for building {@code DisplayOptions}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static class Builder {
private GrammaticalCase grammaticalCase;
@@ -149,7 +149,7 @@
/**
* Creates a {@code DisplayOptions.Builder} with the default values.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
private Builder() {
this.grammaticalCase = GrammaticalCase.UNDEFINED;
@@ -165,7 +165,7 @@
* Creates a {@code Builder} with all the information from a {@code DisplayOptions}.
*
* @param displayOptions Options to be copied.
- * @draft ICU 72
+ * @stable ICU 72
*/
private Builder(DisplayOptions displayOptions) {
this.grammaticalCase = displayOptions.grammaticalCase;
@@ -182,7 +182,7 @@
*
* @param grammaticalCase The grammatical case.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder setGrammaticalCase(GrammaticalCase grammaticalCase) {
this.grammaticalCase = grammaticalCase;
@@ -194,7 +194,7 @@
*
* @param nounClass The noun class.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder setNounClass(NounClass nounClass) {
this.nounClass = nounClass;
@@ -206,7 +206,7 @@
*
* @param pluralCategory The plural category.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder setPluralCategory(PluralCategory pluralCategory) {
this.pluralCategory = pluralCategory;
@@ -218,7 +218,7 @@
*
* @param capitalization The capitalization.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder setCapitalization(Capitalization capitalization) {
this.capitalization = capitalization;
@@ -230,7 +230,7 @@
*
* @param nameStyle The name style.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder setNameStyle(NameStyle nameStyle) {
this.nameStyle = nameStyle;
@@ -242,7 +242,7 @@
*
* @param displayLength The display length.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder setDisplayLength(DisplayLength displayLength) {
this.displayLength = displayLength;
@@ -254,7 +254,7 @@
*
* @param substituteHandling The substitute handling.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
public Builder setSubstituteHandling(SubstituteHandling substituteHandling) {
this.substituteHandling = substituteHandling;
@@ -265,7 +265,7 @@
* Builds the display options.
*
* @return DisplayOptions
- * @draft ICU 72
+ * @stable ICU 72
*/
public DisplayOptions build() {
DisplayOptions displayOptions = new DisplayOptions(this);
@@ -276,46 +276,46 @@
/**
* Represents all the grammatical noun classes that are supported by CLDR.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public enum NounClass {
/**
* A possible setting for NounClass. The noun class context to be used is unknown (this is the
* default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UNDEFINED("undefined"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
OTHER("other"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
NEUTER("neuter"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
FEMININE("feminine"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
MASCULINE("masculine"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
ANIMATE("animate"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
INANIMATE("inanimate"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
PERSONAL("personal"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
COMMON("common");
@@ -328,14 +328,14 @@
/**
* Unmodifiable List of all noun classes constants. List version of {@link #values()}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final List<NounClass> VALUES =
Collections.unmodifiableList(Arrays.asList(NounClass.values()));
/**
* @return the lowercase CLDR keyword string for the noun class.
- * @draft ICU 72
+ * @stable ICU 72
*/
public final String getIdentifier() {
return this.identifier;
@@ -344,7 +344,7 @@
/**
* @param identifier in lower case such as "feminine" or "masculine"
* @return the plural category corresponding to the identifier, or {@code UNDEFINED}
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final NounClass fromIdentifier(String identifier) {
if (identifier == null) {
@@ -364,35 +364,35 @@
/**
* Represents all the name styles.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public enum NameStyle {
/**
* A possible setting for NameStyle. The NameStyle context to be used is unknown (this is the
* default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UNDEFINED,
/**
* Use standard names when generating a locale name, e.g. en_GB displays as 'English (United
* Kingdom)'.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
STANDARD_NAMES,
/**
* Use dialect names, when generating a locale name, e.g. en_GB displays as 'British English'.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
DIALECT_NAMES;
/**
* Unmodifiable List of all name styles constants. List version of {@link #values()}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final List<NameStyle> VALUES =
Collections.unmodifiableList(Arrays.asList(NameStyle.values()));
@@ -401,35 +401,35 @@
/**
* Represents all the substitute handlings.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public enum SubstituteHandling {
/**
* A possible setting for SubstituteHandling. The SubstituteHandling context to be used is
* unknown (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UNDEFINED,
/**
* Returns a fallback value (e.g., the input code) when no data is available. This is the
* default behaviour.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
SUBSTITUTE,
/**
* Returns a null value when no data is available.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
NO_SUBSTITUTE;
/**
* Unmodifiable List of all substitute handlings constants. List version of {@link #values()}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final List<SubstituteHandling> VALUES =
Collections.unmodifiableList(Arrays.asList(SubstituteHandling.values()));
@@ -438,34 +438,34 @@
/**
* Represents all the display lengths.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public enum DisplayLength {
/**
* A possible setting for DisplayLength. The DisplayLength context to be used is unknown (this
* is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UNDEFINED,
/**
* Uses full names when generating a locale name, e.g. "United States" for US.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
LENGTH_FULL,
/**
* Use short names when generating a locale name, e.g. "U.S." for US.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
LENGTH_SHORT;
/**
* Unmodifiable List of all display lengths constants. List version of {@link #values()}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final List<DisplayLength> VALUES =
Collections.unmodifiableList(Arrays.asList(DisplayLength.values()));
@@ -474,14 +474,14 @@
/**
* Represents all the capitalization options.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public enum Capitalization {
/**
* A possible setting for Capitalization. The capitalization context to be used is unknown (this
* is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UNDEFINED,
@@ -489,7 +489,7 @@
* The capitalization context if a date, date symbol or display name is to be formatted with
* capitalization appropriate for the beginning of a sentence.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
BEGINNING_OF_SENTENCE,
@@ -497,7 +497,7 @@
* The capitalization context if a date, date symbol or display name is to be formatted with
* capitalization appropriate for the middle of a sentence.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
MIDDLE_OF_SENTENCE,
@@ -506,7 +506,7 @@
* capitalization appropriate for stand-alone usage such as an isolated name on a calendar
* page.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
STANDALONE,
@@ -514,14 +514,14 @@
* The capitalization context if a date, date symbol or display name is to be formatted with
* capitalization appropriate for a user-interface list or menu item.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UI_LIST_OR_MENU;
/**
* Unmodifiable List of all the capitalizations constants. List version of {@link #values()}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final List<Capitalization> VALUES =
Collections.unmodifiableList(Arrays.asList(Capitalization.values()));
@@ -530,44 +530,44 @@
/**
* Standard CLDR plural category constants. See http://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public enum PluralCategory {
/**
* A possible setting for PluralCategory. The plural category context to be used is unknown
* (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UNDEFINED("undefined"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
ZERO("zero"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
ONE("one"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
TWO("two"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
FEW("few"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
MANY("many"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
OTHER("other");
@@ -580,14 +580,14 @@
/**
* Unmodifiable List of all plural categories constants. List version of {@link #values()}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final List<PluralCategory> VALUES =
Collections.unmodifiableList(Arrays.asList(PluralCategory.values()));
/**
* @return the lowercase CLDR keyword string for the plural category
- * @draft ICU 72
+ * @stable ICU 72
*/
public final String getIdentifier() {
return this.identifier;
@@ -596,7 +596,7 @@
/**
* @param identifier in lower case such as "few" or "other"
* @return the plural category corresponding to the identifier, or {@code UNDEFINED}
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final PluralCategory fromIdentifier(String identifier) {
if (identifier == null) {
@@ -616,84 +616,84 @@
/**
* Represents all the grammatical cases that are supported by CLDR.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public enum GrammaticalCase {
/**
* A possible setting for GrammaticalCase. The grammatical case context to be used is unknown
* (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UNDEFINED("undefined"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
ABLATIVE("ablative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
ACCUSATIVE("accusative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
COMITATIVE("comitative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
DATIVE("dative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
ERGATIVE("ergative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
GENITIVE("genitive"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
INSTRUMENTAL("instrumental"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
LOCATIVE("locative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
LOCATIVE_COPULATIVE("locative_copulative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
NOMINATIVE("nominative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
OBLIQUE("oblique"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
PREPOSITIONAL("prepositional"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
SOCIATIVE("sociative"),
/**
- * @draft ICU 72
+ * @stable ICU 72
*/
VOCATIVE("vocative");
@@ -706,14 +706,14 @@
/**
* Unmodifiable List of all grammatical cases constants. List version of {@link #values()}.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final List<GrammaticalCase> VALUES =
Collections.unmodifiableList(Arrays.asList(GrammaticalCase.values()));
/**
* @return the lowercase CLDR keyword string for the grammatical case.
- * @draft ICU 72
+ * @stable ICU 72
*/
public final String getIdentifier() {
return this.identifier;
@@ -722,7 +722,7 @@
/**
* @param identifier in lower case such as "dative" or "nominative"
* @return the plural category corresponding to the identifier, or {@code UNDEFINED}
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final GrammaticalCase fromIdentifier(String identifier) {
if (identifier == null) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
index b9ba1d9..c5aaf51 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
@@ -1971,7 +1971,7 @@
/**
* Approximately sign. In ICU 70, this was categorized under the generic SIGN field.
- * @draft ICU 71
+ * @stable ICU 71
*/
public static final Field APPROXIMATELY_SIGN = new Field("approximately sign");
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
index 3ee12c4..9d021c4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
@@ -1211,7 +1211,7 @@
/**
* Constant for unit of duration: quarter
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final MeasureUnit QUARTER = MeasureUnit.internalGetInstance("duration", "quarter");
@@ -1663,7 +1663,7 @@
/**
* Constant for unit of mass: tonne
- * @draft ICU 72
+ * @stable ICU 72
*/
public static final MeasureUnit TONNE = MeasureUnit.internalGetInstance("mass", "tonne");
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
index 3439098..b01d983 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
@@ -212,6 +212,12 @@
public static final VersionInfo UNICODE_15_0;
/**
+ * Unicode 15.1 version
+ * @stable ICU 74
+ */
+ public static final VersionInfo UNICODE_15_1;
+
+ /**
* ICU4J current release version
* @stable ICU 2.8
*/
@@ -566,6 +572,7 @@
UNICODE_13_0 = getInstance(13, 0, 0, 0);
UNICODE_14_0 = getInstance(14, 0, 0, 0);
UNICODE_15_0 = getInstance(15, 0, 0, 0);
+ UNICODE_15_1 = getInstance(15, 1, 0, 0);
ICU_VERSION = getInstance(72, 1, 0, 0);
ICU_DATA_VERSION = ICU_VERSION;
diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar
index 2bcae34..3f5625f 100644
--- a/icu4j/main/shared/data/icudata.jar
+++ b/icu4j/main/shared/data/icudata.jar
Binary files differ
diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar
index 6670a03..9232344 100644
--- a/icu4j/main/shared/data/icutzdata.jar
+++ b/icu4j/main/shared/data/icutzdata.jar
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
index ba8e5d3..1d2a48a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -1478,11 +1478,6 @@
}
@Test
- // Android-added: Ignore this test on CTS branches.
- // This test is written is such a way that it is heavily coupled with
- // tzdata. Keeping it passing with system image tzdata and a newer one, which changes
- // canonicality rules (i.e. 2023d), would probably mean re-writing this test.
- @org.junit.Ignore
public void TestCanonicalID() {
// Olson (IANA) tzdata used to have very few "Link"s long time ago.
// This test case was written when most of CLDR canonical time zones are
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
index 5d7c4978..60da0a9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
@@ -90,8 +90,7 @@
{"OK", "en-u-ss-none"},
{"OK", "en-t-t0-und"},
{"OK", "en-t-x0-12345678"},
- // Android-removed: ignore en-u-tz-camtr. Behaviour is different after 2023d.
- // {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
+ {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
// tests from LDML spec section on Hybrid Locale Identifiers
{"OK", "hi-t-en-h0-hybrid"},
@@ -181,7 +180,6 @@
//{"{u, ca-civil}", "en-u-ca-islamicc"}, // deprecated, but turns into valid
{"{u, co-direct}", "en-u-co-direct"}, // deprecated
{"{u, kh}", "en-u-kh-false"}, // deprecated
- // Android-removed: Ignore en-u-tz-camtr. Behaviour is different after 2023d.
// {"{u, tz-camtr}", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
{"{u, vt}", "en-u-vt-0020-0041"}, // deprecated
};
diff --git a/icu_version_upgrade.md b/icu_version_upgrade.md
index 027e761..8ef4e7e 100644
--- a/icu_version_upgrade.md
+++ b/icu_version_upgrade.md
@@ -12,8 +12,8 @@
2. Generate a github read-access token and setup a local ~/.m2/setting.xml
* See http://cldr.unicode.org/development/maven. This is required to download
the prebuilt ICU to break the circular dependency between CLDR and icu.
-3. Check out aosp/master
- * http://go/repo-init/aosp-master-with-phones
+3. Check out aosp/main
+ * http://go/repo-init/aosp-main-with-phones
# Steps
1. Create a new branch in AOSP
@@ -21,11 +21,11 @@
* See detailed instruction at http://g3doc/company/teams/android-build-team/playbook/create_branch#creating-new-git-branches.
* **Choose a branch name**
* Create aosp/icu{version} branch, e.g. `aosp/icu67` in the `external/icu` project
- forked from `aosp/master`
+ forked from `aosp/main`
* For the external/cldr project, we don't need a new branch.
We use the **`aosp/upstream-release-cldr** as the mirror of the upstream release branch.
We don’t modify this branch with Android patches, but merge this branch
- into aosp/master where the Android patches are located.
+ into aosp/main where the Android patches are located.
2. Configure the versions and temp directory
2a. Customize the following environment variables.
@@ -75,13 +75,13 @@
repo upload --cbr .
```
- 3b. Merge the upstream sources with patches in `aosp/master`
+ 3b. Merge the upstream sources with patches in `aosp/main`
```shell
- export CLDR_BRANCH=cldr${CLDR_VERSION}-master
- git branch ${CLDR_BRANCH} --track aosp/master
+ export CLDR_BRANCH=cldr${CLDR_VERSION}-main
+ git branch ${CLDR_BRANCH} --track aosp/main
git checkout ${CLDR_BRANCH}
git merge ${CLDR_UPSTREAM_BRANCH} -m "
- Merge CLDR ${CLDR_VERSION} in upstream-release-cldr into aosp/master
+ Merge CLDR ${CLDR_VERSION} in upstream-release-cldr into aosp/main
Bug: ${ICU_UPGRADE_BUG}
Test: external/icu/tools/updatecldrdata.py
@@ -94,7 +94,7 @@
git merge --continue
```
- 3d. Upload the CL to master branch
+ 3d. Upload the CL to main branch
```shell
repo upload --cbr .
```
@@ -146,7 +146,7 @@
```
5b. Cherry-pick the patches since the ICU upgrade
* Find the patches with this query.
- https://r.android.com/q/%2522Android+patch%2522+project:platform/external/icu+status:merged+-owner:automerger+-owner:android-build-coastguard-worker%2540google.com+branch:master
+ https://r.android.com/q/%2522Android+patch%2522+project:platform/external/icu+status:merged+-owner:automerger+-owner:android-build-coastguard-worker%2540google.com+branch:main
6. Regenerate and commit the artifacts
@@ -264,7 +264,7 @@
```
6g. [Not required for every ICU release] Increment Distro major version
- * See https://android.googlesource.com/platform/system/timezone/+/master/README.android
+ * See https://android.googlesource.com/platform/system/timezone/+/main/README.android
for details. Usually, it’s needed only when it’s the first ICU upgrade
in the Android dessert release.
@@ -330,16 +330,20 @@
* ICU4J host-side test `ant check`
* ICU4C host-side test `make CINTLTST_OPTS=-w INTLTEST_OPTS=-w check`
(Currently, it has some failing tests. No of failures?)
+
+ 7d. If libcore/ tests are changed, verify the change
+ * To verify the test change in ART MTS, run `m mts && mts-tradefed run mts-art` on Android S.
+ * To verify the test change on LUCI bot, run `art/tools/run-libcore-tests.sh --mode=host`, because LUCI uses older ICU versions.
8. Upload the CLs to gerrit for code reviews from `aosp/icu${ICU_VERSION}` in `external/icu` and `aosp/upstream-release-cldr` in `external/cldr`
```shell
repo upload --cbr -o uploadvalidator~skip --no-verify .
```
-9. Merge `aosp/icu*` branch to aosp/master
+9. Merge `aosp/icu*` branch to aosp/main
```shell
cd $ANDROID_BUILD_TOP/external/icu
-repo start icu${ICU_VERSION}-master .
+repo start icu${ICU_VERSION}-main .
git merge --no-ff icu${ICU_VERSION} -m "
-Merge branch aosp/icu${ICU_VERSION} into aosp/master
+Merge branch aosp/icu${ICU_VERSION} into aosp/main
Bug: ${ICU_UPGRADE_BUG}
Test: atest CtsIcu4cTestCases CtsIcuTestCases CtsLibcoreTestCases CtsLibcoreOjTestCases CtsBionicTestCases CtsTextTestCases minikin_tests
@@ -354,7 +358,7 @@
app compatibility issues if the app depends on them. However, app
has been warned to check the availability before invoking them.
https://developer.android.com/reference/android/icu/text/Transliterator#getAvailableIDs()
-11. After submitting all the CLs to aosp/master, expose the new stable ICU4J APIs to Android SDK
+11. After submitting all the CLs to aosp/main, expose the new stable ICU4J APIs to Android SDK
```shell
rm tools/srcgen/allowlisted-public-api.txt
./tools/generate_android_icu4j.sh
@@ -378,7 +382,7 @@
Hi, Libcore and ICU team,
ICU <version> just landed Android AOSP.
- https://android.googlesource.com/platform/external/icu/+/master/README.version
+ https://android.googlesource.com/platform/external/icu/+/main/README.version
as well as Android S (or Android 12).
https://googleplex-android.googlesource.com/platform/external/icu/+/sc-dev/README.version
diff --git a/libandroidicu/Android.bp b/libandroidicu/Android.bp
index 911848b..3224931 100644
--- a/libandroidicu/Android.bp
+++ b/libandroidicu/Android.bp
@@ -20,6 +20,7 @@
// With the exception of a few special cases like host apex build targets,
// host binaries should use libicuuc + libicui18n directly.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_license"
diff --git a/libandroidicu/static_shim/Android.bp b/libandroidicu/static_shim/Android.bp
index 7e4820d..a027b0e 100644
--- a/libandroidicu/static_shim/Android.bp
+++ b/libandroidicu/static_shim/Android.bp
@@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: ["//external/icu:__subpackages__"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
diff --git a/libandroidicuinit/Android.bp b/libandroidicuinit/Android.bp
index dbd6898..4730b73 100644
--- a/libandroidicuinit/Android.bp
+++ b/libandroidicuinit/Android.bp
@@ -14,6 +14,7 @@
// A library of shared initialization code for use by libicuuc.so only.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_license"
diff --git a/libandroidicuinit/IcuRegistration.cpp b/libandroidicuinit/IcuRegistration.cpp
index ed076a4..63397fd 100644
--- a/libandroidicuinit/IcuRegistration.cpp
+++ b/libandroidicuinit/IcuRegistration.cpp
@@ -24,6 +24,7 @@
#include <string.h>
#include <unistd.h>
+#include <unicode/putil.h>
#include <unicode/udata.h>
#include <unicode/utypes.h>
@@ -211,24 +212,28 @@
// Init ICU, configuring it and loading the data files.
IcuRegistration::IcuRegistration() {
- // Note: This logic below should match the logic for ICU4J in
- // TimeZoneDataFiles.java in external/icu/ to ensure consistent behavior between
- // ICU4C and ICU4J.
-
// Check the timezone override file exists from a mounted APEX file.
// If it does, map it so we use its data in preference to later ones.
+ // However, I18N apex is not expected to have the time zone data resources.
+ // http://b/171542040
std::string tzModulePath = getTimeZoneModulePath();
- if (pathExists(tzModulePath)) {
- AICU_LOGD("Time zone APEX ICU file found: %s", tzModulePath.c_str());
- icu_datamap_from_tz_module_ = impl::IcuDataMap::Create(tzModulePath);
+ std::string tzIcuDataPath = tzModulePath + "icu_tzdata.dat";
+ if (pathExists(tzIcuDataPath)) {
+ AICU_LOGD("Time zone APEX ICU file found: %s", tzIcuDataPath.c_str());
+ icu_datamap_from_tz_module_ = impl::IcuDataMap::Create(tzIcuDataPath);
if (icu_datamap_from_tz_module_ == nullptr) {
- AICU_LOGW(
- "TZ module override file %s exists but could not be loaded. "
- "Skipping.",
- tzModulePath.c_str());
+ AICU_LOGW("TZ module .dat file %s exists but could not be loaded. Skipping.",
+ tzIcuDataPath.c_str());
}
} else {
- AICU_LOGV("No time zone module override file found: %s", tzModulePath.c_str());
+ UErrorCode status = U_ZERO_ERROR;
+ u_setTimeZoneFilesDirectory(tzModulePath.c_str(), &status);
+ if (U_SUCCESS(status)) {
+ AICU_LOGD("u_setTimeZoneFilesDirectory(\"%s\") succeeded. ", tzModulePath.c_str());
+ } else {
+ AICU_LOGE("u_setTimeZoneFilesDirectory(\"%s\") failed: %s",
+ tzModulePath.c_str(), u_errorName(status));
+ }
}
// Use the ICU data files that shipped with the i18n module for everything
@@ -254,8 +259,8 @@
return stat(path.c_str(), &sb) == 0;
}
-// Returns a string containing the expected path of the (optional) /apex tz
-// module data file
+// Returns a string containing the expected path of the /apex tz
+// module ICU data directory
std::string IcuRegistration::getTimeZoneModulePath() {
const char* tzdataModulePathPrefix = getenv("ANDROID_TZDATA_ROOT");
if (tzdataModulePathPrefix == NULL) {
@@ -265,7 +270,7 @@
std::string tzdataModulePath;
tzdataModulePath = tzdataModulePathPrefix;
- tzdataModulePath += "/etc/icu/icu_tzdata.dat";
+ tzdataModulePath += "/etc/icu/";
return tzdataModulePath;
}
diff --git a/libicu/Android.bp b/libicu/Android.bp
index d9cb658..fb291fe 100644
--- a/libicu/Android.bp
+++ b/libicu/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_license"
diff --git a/libicu/src/Android.bp b/libicu/src/Android.bp
index 92a06d9..5f983dc 100644
--- a/libicu/src/Android.bp
+++ b/libicu/src/Android.bp
@@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: ["//external/icu:__subpackages__"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
diff --git a/libicu/test/Android.bp b/libicu/test/Android.bp
index f4e7f31..f078d5e 100644
--- a/libicu/test/Android.bp
+++ b/libicu/test/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: [
"//external/icu:__subpackages__",
"//cts/tests/tests/icu:__subpackages__",
diff --git a/tools/srcgen/Android.bp b/tools/srcgen/Android.bp
index f37cc68..6cb389e 100644
--- a/tools/srcgen/Android.bp
+++ b/tools/srcgen/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: ["//visibility:private"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
diff --git a/tools/srcgen/currysrc/Android.bp b/tools/srcgen/currysrc/Android.bp
index 934a41d..014a4ae 100644
--- a/tools/srcgen/currysrc/Android.bp
+++ b/tools/srcgen/currysrc/Android.bp
@@ -13,6 +13,7 @@
// limitations under the License.
package {
+ default_team: "trendy_team_java_core_libraries",
default_visibility: ["//visibility:private"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
diff --git a/tools/srcgen/flagged-api-list.txt b/tools/srcgen/flagged-api-list.txt
new file mode 100644
index 0000000..abb3a09
--- /dev/null
+++ b/tools/srcgen/flagged-api-list.txt
@@ -0,0 +1,99 @@
+method:android.icu.number.FormattedNumber#getNounClass()
+method:android.icu.number.NumberFormatterSettings#displayOptions(DisplayOptions)
+method:android.icu.text.DateTimePatternGenerator#setDateTimeFormat(int,String)
+method:android.icu.text.DateTimePatternGenerator#getDateTimeFormat(int)
+type:android.icu.text.DisplayOptions
+method:android.icu.text.DisplayOptions#builder()
+method:android.icu.text.DisplayOptions#copyToBuilder()
+method:android.icu.text.DisplayOptions#getGrammaticalCase()
+method:android.icu.text.DisplayOptions#getNounClass()
+method:android.icu.text.DisplayOptions#getPluralCategory()
+method:android.icu.text.DisplayOptions#getCapitalization()
+method:android.icu.text.DisplayOptions#getNameStyle()
+method:android.icu.text.DisplayOptions#getDisplayLength()
+method:android.icu.text.DisplayOptions#getSubstituteHandling()
+type:android.icu.text.DisplayOptions$Builder
+method:android.icu.text.DisplayOptions$Builder#setGrammaticalCase(GrammaticalCase)
+method:android.icu.text.DisplayOptions$Builder#setNounClass(NounClass)
+method:android.icu.text.DisplayOptions$Builder#setPluralCategory(PluralCategory)
+method:android.icu.text.DisplayOptions$Builder#setCapitalization(Capitalization)
+method:android.icu.text.DisplayOptions$Builder#setNameStyle(NameStyle)
+method:android.icu.text.DisplayOptions$Builder#setDisplayLength(DisplayLength)
+method:android.icu.text.DisplayOptions$Builder#setSubstituteHandling(SubstituteHandling)
+method:android.icu.text.DisplayOptions$Builder#build()
+type:android.icu.text.DisplayOptions$NounClass
+enumConstant:android.icu.text.DisplayOptions$NounClass#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$NounClass#OTHER
+enumConstant:android.icu.text.DisplayOptions$NounClass#NEUTER
+enumConstant:android.icu.text.DisplayOptions$NounClass#FEMININE
+enumConstant:android.icu.text.DisplayOptions$NounClass#MASCULINE
+enumConstant:android.icu.text.DisplayOptions$NounClass#ANIMATE
+enumConstant:android.icu.text.DisplayOptions$NounClass#INANIMATE
+enumConstant:android.icu.text.DisplayOptions$NounClass#PERSONAL
+enumConstant:android.icu.text.DisplayOptions$NounClass#COMMON
+field:android.icu.text.DisplayOptions$NounClass#VALUES
+method:android.icu.text.DisplayOptions$NounClass#getIdentifier()
+method:android.icu.text.DisplayOptions$NounClass#fromIdentifier(String)
+type:android.icu.text.DisplayOptions$NameStyle
+enumConstant:android.icu.text.DisplayOptions$NameStyle#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$NameStyle#STANDARD_NAMES
+enumConstant:android.icu.text.DisplayOptions$NameStyle#DIALECT_NAMES
+field:android.icu.text.DisplayOptions$NameStyle#VALUES
+type:android.icu.text.DisplayOptions$SubstituteHandling
+enumConstant:android.icu.text.DisplayOptions$SubstituteHandling#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$SubstituteHandling#SUBSTITUTE
+enumConstant:android.icu.text.DisplayOptions$SubstituteHandling#NO_SUBSTITUTE
+field:android.icu.text.DisplayOptions$SubstituteHandling#VALUES
+type:android.icu.text.DisplayOptions$DisplayLength
+enumConstant:android.icu.text.DisplayOptions$DisplayLength#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$DisplayLength#LENGTH_FULL
+enumConstant:android.icu.text.DisplayOptions$DisplayLength#LENGTH_SHORT
+field:android.icu.text.DisplayOptions$DisplayLength#VALUES
+type:android.icu.text.DisplayOptions$Capitalization
+enumConstant:android.icu.text.DisplayOptions$Capitalization#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$Capitalization#BEGINNING_OF_SENTENCE
+enumConstant:android.icu.text.DisplayOptions$Capitalization#MIDDLE_OF_SENTENCE
+enumConstant:android.icu.text.DisplayOptions$Capitalization#STANDALONE
+enumConstant:android.icu.text.DisplayOptions$Capitalization#UI_LIST_OR_MENU
+field:android.icu.text.DisplayOptions$Capitalization#VALUES
+type:android.icu.text.DisplayOptions$PluralCategory
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#ZERO
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#ONE
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#TWO
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#FEW
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#MANY
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#OTHER
+field:android.icu.text.DisplayOptions$PluralCategory#VALUES
+method:android.icu.text.DisplayOptions$PluralCategory#getIdentifier()
+method:android.icu.text.DisplayOptions$PluralCategory#fromIdentifier(String)
+type:android.icu.text.DisplayOptions$GrammaticalCase
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#ABLATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#ACCUSATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#COMITATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#DATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#ERGATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#GENITIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#INSTRUMENTAL
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#LOCATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#LOCATIVE_COPULATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#NOMINATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#OBLIQUE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#PREPOSITIONAL
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#SOCIATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#VOCATIVE
+field:android.icu.text.DisplayOptions$GrammaticalCase#VALUES
+method:android.icu.text.DisplayOptions$GrammaticalCase#getIdentifier()
+method:android.icu.text.DisplayOptions$GrammaticalCase#fromIdentifier(String)
+field:android.icu.text.NumberFormat$Field#APPROXIMATELY_SIGN
+field:android.icu.util.MeasureUnit#QUARTER
+field:android.icu.util.MeasureUnit#TONNE
+field:android.icu.lang.UCharacter$LineBreak#AKSARA
+field:android.icu.lang.UCharacter$LineBreak#AKSARA_PREBASE
+field:android.icu.lang.UCharacter$LineBreak#AKSARA_START
+field:android.icu.lang.UCharacter$LineBreak#VIRAMA
+field:android.icu.lang.UCharacter$LineBreak#VIRAMA_FINAL
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID
+field:android.icu.util.VersionInfo#UNICODE_15_1
diff --git a/tools/srcgen/generate_android_icu4j.sh b/tools/srcgen/generate_android_icu4j.sh
index 3ababae..557e38f 100755
--- a/tools/srcgen/generate_android_icu4j.sh
+++ b/tools/srcgen/generate_android_icu4j.sh
@@ -45,6 +45,7 @@
ALLOWLIST_API_FILE=${ICU_SRCGEN_DIR}/allowlisted-public-api.txt
CORE_PLATFORM_API_FILE=${ICU_SRCGEN_DIR}/core-platform-api.txt
+FLAGGED_API_FILE=${ICU_SRCGEN_DIR}/flagged-api-list.txt
INTRA_CORE_API_FILE=${ICU_SRCGEN_DIR}/intra-core-api.txt
UNSUPPORTED_APP_USAGE_FILE=${ICU_SRCGEN_DIR}/unsupported-app-usage.json
@@ -60,11 +61,15 @@
# Generate the source code needed by Android.
# Branches used for testing new versions of ICU will have have the ${ALLOWLIST_API_FILE} file
# that prevents new (stable) APIs being added to the Android public SDK API. The file should
-# not exist on "normal" release branches and master.
+# not exist on "normal" release branches and main.
ICU4J_BASE_COMMAND="${SRCGEN_TOOL_BINARY} Icu4jTransform"
if [ -e "${ALLOWLIST_API_FILE}" ]; then
ICU4J_BASE_COMMAND+=" --hide-non-allowlisted-api ${ALLOWLIST_API_FILE}"
fi
+if [ -e "${FLAGGED_API_FILE}" ]; then
+ ICU4J_BASE_COMMAND+=" --flagged-api-list ${FLAGGED_API_FILE}"
+fi
+
${ICU4J_BASE_COMMAND} ${INPUT_DIRS} ${DEST_SRC_DIR} ${CORE_PLATFORM_API_FILE} ${INTRA_CORE_API_FILE} ${UNSUPPORTED_APP_USAGE_FILE}
# Copy / transform the resources needed by the android_icu4j code.
diff --git a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
index a435d43..cfb5340 100644
--- a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
+++ b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
@@ -34,6 +34,7 @@
import com.google.currysrc.api.process.ast.TypeLocator;
import com.google.currysrc.processors.AddAnnotation;
import com.google.currysrc.processors.AddDefaultConstructor;
+import com.google.currysrc.processors.AnnotationInfo;
import com.google.currysrc.processors.HidePublicClasses;
import com.google.currysrc.processors.InsertHeader;
import com.google.currysrc.processors.ModifyQualifiedNames;
@@ -155,6 +156,15 @@
"android.icu.text.DecimalFormatSymbols",
"android.icu.text.DisplayContext",
"android.icu.text.DisplayContext$Type",
+ "android.icu.text.DisplayOptions",
+ "android.icu.text.DisplayOptions$Builder",
+ "android.icu.text.DisplayOptions$Capitalization",
+ "android.icu.text.DisplayOptions$DisplayLength",
+ "android.icu.text.DisplayOptions$GrammaticalCase",
+ "android.icu.text.DisplayOptions$NameStyle",
+ "android.icu.text.DisplayOptions$NounClass",
+ "android.icu.text.DisplayOptions$PluralCategory",
+ "android.icu.text.DisplayOptions$SubstituteHandling",
"android.icu.text.Edits",
"android.icu.text.Edits$Iterator",
"android.icu.text.FormattedValue",
@@ -893,6 +903,7 @@
private static final String SOURCE_CODE_HEADER = "/* GENERATED SOURCE. DO NOT MODIFY. */\n";
private static final String COMMAND_USAGE = "Usage: " + Icu4jTransform.class.getCanonicalName()
+ " [--hide-non-allowlisted-api <allowlisted-api-file>]"
+ + " [--flagged-api-list <flagged-api-file>]"
+ " <source-dir>+ <target-dir> <core-platform-api-file> <intra-core-api-file>"
+ " <unsupported-app-usage-file>";
@@ -901,20 +912,26 @@
private final BasicOutputSourceFileGenerator outputSourceFileGenerator;
public Icu4jRules(String[] args) {
- if (args.length < 3) {
- throw new IllegalArgumentException(COMMAND_USAGE);
- }
Path allowlistedApiPath = null;
if ("--hide-non-allowlisted-api".equals(args[0])) {
allowlistedApiPath = Paths.get(args[1]);
- if (args.length < 6) {
- throw new IllegalArgumentException(COMMAND_USAGE);
- }
String[] newArgs = new String[args.length - 2];
System.arraycopy(args, 2, newArgs, 0, args.length - 2);
args = newArgs;
}
+ Path flaggedApiListPath = null;
+ if ("--flagged-api-list".equals(args[0])) {
+ flaggedApiListPath = Paths.get(args[1]);
+ String[] newArgs = new String[args.length - 2];
+ System.arraycopy(args, 2, newArgs, 0, args.length - 2);
+ args = newArgs;
+ }
+
+ if (args.length < 5) {
+ throw new IllegalArgumentException(COMMAND_USAGE);
+ }
+
// Extract the source directories.
String[] inputDirNames = new String[args.length - 4];
System.arraycopy(args, 0, inputDirNames, 0, args.length - 4);
@@ -933,7 +950,7 @@
}
rules = createTransformRules(corePlatformApiFile, intraCoreApiFile,
- unsupportedAppUsageFile, allowlistedApiPath);
+ unsupportedAppUsageFile, allowlistedApiPath, flaggedApiListPath);
outputSourceFileGenerator = Icu4jTransformRules.createOutputFileGenerator(targetDir);
}
@@ -972,7 +989,7 @@
private static List<Rule> createTransformRules(Path corePlatformApiFile,
Path intraCoreApiFile,
Path unsupportedAppUsagePath,
- Path allowlistedApiPath) {
+ Path allowlistedApiPath, Path flaggedApiListPath) {
// The rules needed to repackage source code that declares or references com.ibm.icu code
// so it references android.icu instead.
Rule[] repackageRules = getRepackagingRules();
@@ -1030,7 +1047,7 @@
createOptionalRule(AddAnnotation.markerAnnotationFromFlatFile(
"libcore.api.CorePlatformApi", corePlatformApiFile)),
- // AST change: Add CorePlatformApi to specified classes and members
+ // AST change: Add IntraCoreApi to specified classes and members
createOptionalRule(AddAnnotation.markerAnnotationFromFlatFile(
"libcore.api.IntraCoreApi", intraCoreApiFile)),
@@ -1048,6 +1065,10 @@
List<Rule> rulesList = Lists.newArrayList(repackageRules);
rulesList.addAll(Arrays.asList(apiDocsRules));
+ if (flaggedApiListPath != null) {
+ // AST change: Add FlaggedApi to specified classes and members
+ rulesList.add(createFlaggedApiRule(flaggedApiListPath));
+ }
return rulesList;
}
@@ -1121,4 +1142,14 @@
return createOptionalRule(new HideNonAllowlistedDeclarations(bodyDeclarationLocators,
"@hide Hide new API in Android temporarily"));
}
+
+ private static Rule createFlaggedApiRule(Path flaggedApiListPath) {
+ return createOptionalRule(AddAnnotation.markerAnnotationWithPropertyFromFlatFile(
+ "android.annotation.FlaggedApi",
+ "value",
+ String.class,
+ new AnnotationInfo.Placeholder("com.android.icu.Flags.FLAG_ICU_V_API"),
+ flaggedApiListPath));
+ }
+
}
diff --git a/tools/testing/test_harness/Android.bp b/tools/testing/test_harness/Android.bp
index 46b9f88..da7bb15 100644
--- a/tools/testing/test_harness/Android.bp
+++ b/tools/testing/test_harness/Android.bp
@@ -14,6 +14,7 @@
//
package {
+ default_team: "trendy_team_java_core_libraries",
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_license"