diff options
author | monojenkins <jo.shields+jenkins@xamarin.com> | 2019-09-03 21:09:37 +0300 |
---|---|---|
committer | Steve Pfister <steveisok@users.noreply.github.com> | 2019-09-03 21:09:37 +0300 |
commit | 2c3aeaf3780de7392a0d3cbe4dcf86846eb4dffa (patch) | |
tree | d2928c87841b4c558b92806f2f344b04eb39d3aa | |
parent | 3216a3c1e3e04ab86fd71939d0ea93e59a722e05 (diff) |
[2019-06] [corlib] Add hack for Hebrew calendar data (#16642)
-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 ffcc46fbe59..153e454055e 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" /> @@ -1067,7 +1068,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 3abc8e8f55c..1bfb37576d4 100644 --- a/mcs/class/corlib/corlib.dll.sources +++ b/mcs/class/corlib/corlib.dll.sources @@ -1105,7 +1105,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 |