Skip to content

Commit

Permalink
Moving "Generic Math" in box and making it no longer experimental (do…
Browse files Browse the repository at this point in the history
…tnet#65731)

* Moving "Generic Math" in box and making it no longer experimental

* Removing an unused using from the generic math interfaces

* Updating the ordering of the checked keyword for the commented out checked operators
  • Loading branch information
tannergooding authored and radekdoulik committed Mar 30, 2022
1 parent f9ca511 commit 441f31f
Show file tree
Hide file tree
Showing 58 changed files with 178 additions and 2,949 deletions.
2 changes: 0 additions & 2 deletions src/coreclr/clr.featuredefines.props
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
<FeaturePerfTracing>true</FeaturePerfTracing>
<FeatureTypeEquivalence>true</FeatureTypeEquivalence>
<FeatureBasicFreeze>true</FeatureBasicFreeze>
<FeatureGenericMath>true</FeatureGenericMath>
<ProfilingSupportedBuild>true</ProfilingSupportedBuild>
</PropertyGroup>

Expand Down Expand Up @@ -60,7 +59,6 @@
<DefineConstants Condition="'$(FeatureBasicFreeze)' == 'true'">$(DefineConstants);FEATURE_BASICFREEZE</DefineConstants>
<DefineConstants Condition="'$(FeaturePortableShuffleThunks)' == 'true'">$(DefineConstants);FEATURE_PORTABLE_SHUFFLE_THUNKS</DefineConstants>
<DefineConstants Condition="'$(FeatureICastable)' == 'true'">$(DefineConstants);FEATURE_ICASTABLE</DefineConstants>
<DefineConstants Condition="'$(FeatureGenericMath)' == 'true'">$(DefineConstants);FEATURE_GENERIC_MATH</DefineConstants>

<DefineConstants Condition="'$(ProfilingSupportedBuild)' == 'true'">$(DefineConstants);PROFILING_SUPPORTED</DefineConstants>
<DefineConstants Condition="'$(FeatureProfAttach)' == 'true'">$(DefineConstants);FEATURE_PROFAPI_ATTACH_DETACH</DefineConstants>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@
<FeatureHardwareIntrinsics>true</FeatureHardwareIntrinsics>
<FeatureSharedLowLevelLock>true</FeatureSharedLowLevelLock>
</PropertyGroup>
<PropertyGroup>
<FeatureGenericMath>true</FeatureGenericMath>
<DefineConstants Condition="'$(FeatureGenericMath)' == 'true'">$(DefineConstants);FEATURE_GENERIC_MATH</DefineConstants>
</PropertyGroup>

<!-- Sources -->
<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,4 @@
<Compile Include="PlaneTests.cs" />
<Compile Include="QuaternionTests.cs" />
</ItemGroup>
<ItemGroup>
<!-- it's a reference assembly, but the project system doesn't know that - include it during compilation, but don't publish it -->
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime.Experimental\ref\System.Runtime.Experimental.csproj" IncludeAssets="compile" Private="false" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -2366,7 +2366,7 @@
<Link>Interop\Windows\Kernel32\Interop.Threading.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureGenericMath)' == 'true'">
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)System\IAdditionOperators.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\IAdditiveIdentity.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\IBitwiseOperators.cs" />
Expand Down
77 changes: 7 additions & 70 deletions src/libraries/System.Private.CoreLib/src/System/Byte.cs

Large diffs are not rendered by default.

77 changes: 7 additions & 70 deletions src/libraries/System.Private.CoreLib/src/System/Char.cs

Large diffs are not rendered by default.

26 changes: 6 additions & 20 deletions src/libraries/System.Private.CoreLib/src/System/DateOnly.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ namespace System
/// <summary>
/// Represents dates with values ranging from January 1, 0001 Anno Domini (Common Era) through December 31, 9999 A.D. (C.E.) in the Gregorian calendar.
/// </summary>
public readonly struct DateOnly : IComparable, IComparable<DateOnly>, IEquatable<DateOnly>, ISpanFormattable
#if FEATURE_GENERIC_MATH
#pragma warning disable SA1001, CA2252 // SA1001: Comma positioning; CA2252: Preview Features
, IComparisonOperators<DateOnly, DateOnly>,
public readonly struct DateOnly
: IComparable,
IComparable<DateOnly>,
IEquatable<DateOnly>,
ISpanFormattable,
IComparisonOperators<DateOnly, DateOnly>,
IMinMaxValue<DateOnly>,
ISpanParseable<DateOnly>
#pragma warning restore SA1001, CA2252
#endif // FEATURE_GENERIC_MATH
{
private readonly int _dayNumber;

Expand Down Expand Up @@ -829,72 +829,58 @@ public bool TryFormat(Span<char> destination, out int charsWritten, ReadOnlySpan
return DateTimeFormat.TryFormat(GetEquivalentDateTime(), destination, out charsWritten, format, provider);
}

#if FEATURE_GENERIC_MATH
//
// IComparisonOperators
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateOnly, DateOnly>.operator <(DateOnly left, DateOnly right)
=> left < right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateOnly, DateOnly>.operator <=(DateOnly left, DateOnly right)
=> left <= right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateOnly, DateOnly>.operator >(DateOnly left, DateOnly right)
=> left > right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateOnly, DateOnly>.operator >=(DateOnly left, DateOnly right)
=> left >= right;

//
// IEqualityOperators
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IEqualityOperators<DateOnly, DateOnly>.operator ==(DateOnly left, DateOnly right)
=> left == right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IEqualityOperators<DateOnly, DateOnly>.operator !=(DateOnly left, DateOnly right)
=> left != right;

//
// IMinMaxValue
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateOnly IMinMaxValue<DateOnly>.MinValue => MinValue;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateOnly IMinMaxValue<DateOnly>.MaxValue => MaxValue;

//
// IParseable
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateOnly IParseable<DateOnly>.Parse(string s, IFormatProvider? provider)
=> Parse(s, provider, DateTimeStyles.None);

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IParseable<DateOnly>.TryParse([NotNullWhen(true)] string? s, IFormatProvider? provider, out DateOnly result)
=> TryParse(s, provider, DateTimeStyles.None, out result);

//
// ISpanParseable
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateOnly ISpanParseable<DateOnly>.Parse(ReadOnlySpan<char> s, IFormatProvider? provider)
=> Parse(s, provider, DateTimeStyles.None);

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool ISpanParseable<DateOnly>.TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out DateOnly result)
=> TryParse(s, provider, DateTimeStyles.None, out result);
#endif // FEATURE_GENERIC_MATH
}
}
35 changes: 8 additions & 27 deletions src/libraries/System.Private.CoreLib/src/System/DateTime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,20 @@ namespace System
[StructLayout(LayoutKind.Auto)]
[Serializable]
[System.Runtime.CompilerServices.TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
public readonly partial struct DateTime : IComparable, ISpanFormattable, IConvertible, IComparable<DateTime>, IEquatable<DateTime>, ISerializable
#if FEATURE_GENERIC_MATH
#pragma warning disable SA1001, CA2252 // SA1001: Comma positioning; CA2252: Preview Features
, IAdditionOperators<DateTime, TimeSpan, DateTime>,
public readonly partial struct DateTime
: IComparable,
ISpanFormattable,
IConvertible,
IComparable<DateTime>,
IEquatable<DateTime>,
ISerializable,
IAdditionOperators<DateTime, TimeSpan, DateTime>,
IAdditiveIdentity<DateTime, TimeSpan>,
IComparisonOperators<DateTime, DateTime>,
IMinMaxValue<DateTime>,
ISpanParseable<DateTime>,
ISubtractionOperators<DateTime, TimeSpan, DateTime>,
ISubtractionOperators<DateTime, DateTime, TimeSpan>
#pragma warning restore SA1001, CA2252
#endif // FEATURE_GENERIC_MATH
{
// Number of 100ns ticks per time unit
private const long TicksPerMillisecond = 10000;
Expand Down Expand Up @@ -1500,112 +1502,91 @@ internal static bool TryCreate(int year, int month, int day, int hour, int minut
return true;
}

#if FEATURE_GENERIC_MATH
//
// IAdditionOperators
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateTime IAdditionOperators<DateTime, TimeSpan, DateTime>.operator +(DateTime left, TimeSpan right)
=> left + right;

// [RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
// static checked DateTime IAdditionOperators<DateTime, TimeSpan, DateTime>.operator +(DateTime left, TimeSpan right)
// => checked(left + right);

//
// IAdditiveIdentity
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static TimeSpan IAdditiveIdentity<DateTime, TimeSpan>.AdditiveIdentity
=> default;

//
// IComparisonOperators
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateTime, DateTime>.operator <(DateTime left, DateTime right)
=> left < right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateTime, DateTime>.operator <=(DateTime left, DateTime right)
=> left <= right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateTime, DateTime>.operator >(DateTime left, DateTime right)
=> left > right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IComparisonOperators<DateTime, DateTime>.operator >=(DateTime left, DateTime right)
=> left >= right;

//
// IEqualityOperators
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IEqualityOperators<DateTime, DateTime>.operator ==(DateTime left, DateTime right)
=> left == right;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IEqualityOperators<DateTime, DateTime>.operator !=(DateTime left, DateTime right)
=> left != right;

//
// IMinMaxValue
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateTime IMinMaxValue<DateTime>.MinValue => MinValue;

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateTime IMinMaxValue<DateTime>.MaxValue => MaxValue;

//
// IParseable
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateTime IParseable<DateTime>.Parse(string s, IFormatProvider? provider)
=> Parse(s, provider);

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool IParseable<DateTime>.TryParse([NotNullWhen(true)] string? s, IFormatProvider? provider, out DateTime result)
=> TryParse(s, provider, DateTimeStyles.None, out result);

//
// ISpanParseable
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateTime ISpanParseable<DateTime>.Parse(ReadOnlySpan<char> s, IFormatProvider? provider)
=> Parse(s, provider, DateTimeStyles.None);

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static bool ISpanParseable<DateTime>.TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out DateTime result)
=> TryParse(s, provider, DateTimeStyles.None, out result);

//
// ISubtractionOperators
//

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static DateTime ISubtractionOperators<DateTime, TimeSpan, DateTime>.operator -(DateTime left, TimeSpan right)
=> left - right;

// [RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
// static checked DateTime ISubtractionOperators<DateTime, TimeSpan, DateTime>.operator -(DateTime left, TimeSpan right)
// => checked(left - right);

[RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
static TimeSpan ISubtractionOperators<DateTime, DateTime, TimeSpan>.operator -(DateTime left, DateTime right)
=> left - right;

// [RequiresPreviewFeatures(Number.PreviewFeatureMessage, Url = Number.PreviewFeatureUrl)]
// static checked TimeSpan ISubtractionOperators<DateTime, DateTime, TimeSpan>.operator -(DateTime left, DateTime right)
// => checked(left - right);
#endif // FEATURE_GENERIC_MATH
}
}
Loading

0 comments on commit 441f31f

Please sign in to comment.