diff options
author | monojenkins <jo.shields+jenkins@xamarin.com> | 2019-09-03 23:33:48 +0300 |
---|---|---|
committer | Jo Shields <joshield@microsoft.com> | 2019-09-03 23:33:48 +0300 |
commit | 6256b82d62fbfe09fe37f717a66657ef9558abce (patch) | |
tree | 82433206e412dc81781adb76be288f1cf55a6f9c | |
parent | 20aebce49db2803fa1657237e4040c15b950f2c3 (diff) |
[2019-02] [corlib] Add hack for Hebrew calendar data (#16645)mono-6.0.0.3342019-02
* [corlib] Add hack for Hebrew calendar data
* Fix month names for the Hebrew calendar
* [csproj] Update project files
-rw-r--r-- | mcs/class/corlib/ReferenceSources/CalendarData.cs | 42 | ||||
-rw-r--r-- | mcs/class/corlib/corlib.csproj | 2 | ||||
-rw-r--r-- | mcs/class/corlib/corlib.dll.sources | 2 |
3 files changed, 43 insertions, 3 deletions
diff --git a/mcs/class/corlib/ReferenceSources/CalendarData.cs b/mcs/class/corlib/ReferenceSources/CalendarData.cs index 37ded82917e..5947c04cb56 100644 --- a/mcs/class/corlib/ReferenceSources/CalendarData.cs +++ b/mcs/class/corlib/ReferenceSources/CalendarData.cs @@ -34,6 +34,36 @@ namespace System.Globalization [StructLayout (LayoutKind.Sequential)] partial class CalendarData { + private static string[] HEBREW_MONTH_NAMES = new[] { + "\u05EA\u05E9\u05E8\u05D9", + "\u05D7\u05E9\u05D5\u05DF", + "\u05DB\u05E1\u05DC\u05D5", + "\u05D8\u05D1\u05EA", + "\u05E9\u05D1\u05D8", + "\u05D0\u05D3\u05E8", + "\u05D0\u05D3\u05E8\u0020\u05D1", + "\u05E0\u05D9\u05E1\u05DF", + "\u05D0\u05D9\u05D9\u05E8", + "\u05E1\u05D9\u05D5\u05DF", + "\u05EA\u05DE\u05D5\u05D6", + "\u05D0\u05D1", + "\u05D0\u05DC\u05D5\u05DC" }; + + private static string[] HEBREW_LEAP_MONTH_NAMES = new[] { + "\u05EA\u05E9\u05E8\u05D9", + "\u05D7\u05E9\u05D5\u05DF", + "\u05DB\u05E1\u05DC\u05D5", + "\u05D8\u05D1\u05EA", + "\u05E9\u05D1\u05D8", + "\u05D0\u05D3\u05E8\u0020\u05D0", + "\u05D0\u05D3\u05E8\u0020\u05D1", + "\u05E0\u05D9\u05E1\u05DF", + "\u05D0\u05D9\u05D9\u05E8", + "\u05E1\u05D9\u05D5\u05DF", + "\u05EA\u05DE\u05D5\u05D6", + "\u05D0\u05D1", + "\u05D0\u05DC\u05D5\u05DC" }; + public static int nativeGetTwoDigitYearMax (int calID) { // -1 mean OS does not override default BCL max year @@ -43,7 +73,17 @@ namespace System.Globalization static bool nativeGetCalendarData (CalendarData data, string localeName, int calendarId) { // TODO: Convert calendar-id to mono runtime calendar-id when it's used - return data.fill_calendar_data (localeName.ToLowerInvariant (), calendarId); + if (data.fill_calendar_data (localeName.ToLowerInvariant (), calendarId)) { + if ((CalendarId)calendarId == CalendarId.HEBREW) { + // HACK: Generate leap month names because the native code does not do it + // and tests would fail to round-trip dates on leap years. + // https://github.com/mono/mono/issues/16623 + data.saMonthNames = HEBREW_MONTH_NAMES; + data.saLeapYearMonthNames = HEBREW_LEAP_MONTH_NAMES; + } + return true; + } + return false; } [MethodImplAttribute (MethodImplOptions.InternalCall)] diff --git a/mcs/class/corlib/corlib.csproj b/mcs/class/corlib/corlib.csproj index 416442cdce9..6b0639f6784 100644 --- a/mcs/class/corlib/corlib.csproj +++ b/mcs/class/corlib/corlib.csproj @@ -331,6 +331,7 @@ <Compile Include="..\..\..\external\corefx\src\Common\src\CoreLib\System\Globalization\DaylightTime.cs" />
<Compile Include="..\..\..\external\corefx\src\Common\src\CoreLib\System\Globalization\DigitShapes.cs" />
<Compile Include="..\..\..\external\corefx\src\Common\src\CoreLib\System\Globalization\GlobalizationExtensions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\Common\src\CoreLib\System\Globalization\HebrewNumber.cs" /> <Compile Include="..\..\..\external\corefx\src\Common\src\CoreLib\System\Globalization\InternalGlobalizationHelper.cs" />
<Compile Include="..\..\..\external\corefx\src\Common\src\CoreLib\System\Globalization\NumberStyles.cs" />
<Compile Include="..\..\..\external\corefx\src\Common\src\CoreLib\System\Globalization\SortVersion.cs" />
@@ -1058,7 +1059,6 @@ <Compile Include="..\referencesource\mscorlib\system\globalization\gregoriancalendarhelper.cs" />
<Compile Include="..\referencesource\mscorlib\system\globalization\gregoriancalendartypes.cs" />
<Compile Include="..\referencesource\mscorlib\system\globalization\hebrewcalendar.cs" />
- <Compile Include="..\referencesource\mscorlib\system\globalization\hebrewnumber.cs" />
<Compile Include="..\referencesource\mscorlib\system\globalization\hijricalendar.cs" />
<Compile Include="..\referencesource\mscorlib\system\globalization\japanesecalendar.cs" />
<Compile Include="..\referencesource\mscorlib\system\globalization\japaneselunisolarcalendar.cs" />
diff --git a/mcs/class/corlib/corlib.dll.sources b/mcs/class/corlib/corlib.dll.sources index a609aea2561..527c9692c70 100644 --- a/mcs/class/corlib/corlib.dll.sources +++ b/mcs/class/corlib/corlib.dll.sources @@ -1103,7 +1103,7 @@ ReferenceSources/AppContextDefaultValues.cs ../referencesource/mscorlib/system/globalization/gregoriancalendarhelper.cs ../referencesource/mscorlib/system/globalization/gregoriancalendartypes.cs ../referencesource/mscorlib/system/globalization/hebrewcalendar.cs -../referencesource/mscorlib/system/globalization/hebrewnumber.cs +../../../external/corefx/src/Common/src/CoreLib/System/Globalization/HebrewNumber.cs ../referencesource/mscorlib/system/globalization/hijricalendar.cs ../referencesource/mscorlib/system/globalization/japanesecalendar.cs ../referencesource/mscorlib/system/globalization/japaneselunisolarcalendar.cs |