Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormonojenkins <jo.shields+jenkins@xamarin.com>2019-09-03 23:33:48 +0300
committerJo Shields <joshield@microsoft.com>2019-09-03 23:33:48 +0300
commit6256b82d62fbfe09fe37f717a66657ef9558abce (patch)
tree82433206e412dc81781adb76be288f1cf55a6f9c
parent20aebce49db2803fa1657237e4040c15b950f2c3 (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.cs42
-rw-r--r--mcs/class/corlib/corlib.csproj2
-rw-r--r--mcs/class/corlib/corlib.dll.sources2
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