Fix CompareInfo weightless code point handling, plus other improvements (#1514)
authorLevi Broderick <GrabYourPitchforks@users.noreply.github.com>
Fri, 24 Apr 2020 23:45:21 +0000 (16:45 -0700)
committerGitHub <noreply@github.com>
Fri, 24 Apr 2020 23:45:21 +0000 (16:45 -0700)
commit90cc6dff11e4eea07d8b2ed438b25679f0caf7a8
tree6bfcfca98b0eac4654aa0574a770b5490a0982ef
parent8dc13298a89d50e64f24d0e755675bb01a33a399
Fix CompareInfo weightless code point handling, plus other improvements (#1514)

* Create spanified and Rune-accepting overloads of CompareInfo APIs
* Remove much of the duplicated code throughout CompareInfo
* Remove "empty string" optimizations that were causing incorrect comparisons against weightless code points
* Improve error detection around some edge cases
25 files changed:
src/libraries/Common/src/Interop/Interop.Collation.cs
src/libraries/Common/src/Interop/Windows/Kernel32/Interop.Globalization.cs
src/libraries/Common/tests/Tests/System/StringTests.cs
src/libraries/Native/Unix/System.Globalization.Native/pal_collation.c
src/libraries/Native/Unix/System.Globalization.Native/pal_collation.h
src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs
src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.IndexOf.cs
src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.IsPrefix.cs
src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.IsSuffix.cs
src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.LastIndexOf.cs
src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.cs
src/libraries/System.Globalization/tests/Invariant/Invariant.Tests.csproj
src/libraries/System.Globalization/tests/Invariant/InvariantMode.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Icu.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Invariant.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Nls.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs
src/libraries/System.Private.CoreLib/src/System/MemoryExtensions.Globalization.cs
src/libraries/System.Private.CoreLib/src/System/String.Manipulation.cs
src/libraries/System.Private.CoreLib/src/System/String.Searching.cs
src/libraries/System.Private.CoreLib/src/System/String.cs
src/libraries/System.Private.CoreLib/src/System/Text/Rune.cs
src/libraries/System.Private.CoreLib/src/System/Text/Utf8Span.Searching.cs
src/libraries/System.Private.CoreLib/src/System/ThrowHelper.cs
src/libraries/System.Runtime/ref/System.Runtime.cs