1
0
mirror of https://github.com/oliverbooth/X10D synced 2024-11-22 07:58:49 +00:00

Compare commits

..

No commits in common. "b74bf60fe8a2b940bc432166bcde881f087895b6" and "027f6f23e187818d5770ba21bec4aee21ca096ed" have entirely different histories.

5 changed files with 41 additions and 4 deletions

View File

@ -20,10 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Removed ### Removed
- X10D: Removed `DateOnly.Deconstruct` due to conflict with
[`System.DateOnly.Deconstruct`](https://learn.microsoft.com/en-us/dotnet/api/system.datetime.deconstruct?view=net-8.0).
- X10D: Removed `Span<T>.Split` for .NET 9.0 target due to conflicts with - X10D: Removed `Span<T>.Split` for .NET 9.0 target due to conflicts with
[`System.MemoryExtensions.Split`](https://learn.microsoft.com/en-us/dotnet/api/system.memoryextensions.split?view=net-9.0). [`System.MemoryExtensions.Split`](https://learn.microsoft.com/en-us/dotnet/api/system.memoryextensions.split?view=net-8.0).
## [4.0.0] - 2024-06-12 ## [4.0.0] - 2024-06-12

View File

@ -39,6 +39,30 @@ internal class DateOnlyTests
Assert.That(age, Is.EqualTo(18)); Assert.That(age, Is.EqualTo(18));
} }
[Test]
public void Deconstruct_ShouldDeconstruct_GivenDateOnly()
{
var date = new DateOnly(2017, 12, 31);
date.Deconstruct(out int year, out int month, out int day);
Assert.That(year, Is.EqualTo(2017));
Assert.That(month, Is.EqualTo(12));
Assert.That(day, Is.EqualTo(31));
}
[Test]
public void Deconstruct_ShouldDeconstructToTuple_GivenDateOnly()
{
var date = new DateOnly(2017, 12, 31);
(int year, int month, int day) = date;
Assert.That(year, Is.EqualTo(2017));
Assert.That(month, Is.EqualTo(12));
Assert.That(day, Is.EqualTo(31));
}
[Test] [Test]
public void First_ShouldBeSaturday_Given1Jan2000() public void First_ShouldBeSaturday_Given1Jan2000()
{ {

View File

@ -1,5 +1,6 @@
using System.Buffers.Binary; using System.Buffers.Binary;
using System.Diagnostics.Contracts; using System.Diagnostics.Contracts;
using System.Runtime.InteropServices;
namespace X10D.IO; namespace X10D.IO;

View File

@ -39,6 +39,20 @@ public static class DateOnlyExtensions
return value.ToDateTime(default).Age(referenceDate.ToDateTime(default)); return value.ToDateTime(default).Age(referenceDate.ToDateTime(default));
} }
/// <summary>
/// Deconstructs the current <see cref="DateOnly" /> into its year, month, and day.
/// </summary>
/// <param name="value">The date to deconstruct.</param>
/// <param name="year">When this method returns, contains the year.</param>
/// <param name="month">When this method returns, contains the month.</param>
/// <param name="day">When this method returns, contains the day.</param>
public static void Deconstruct(this DateOnly value, out int year, out int month, out int day)
{
year = value.Year;
month = value.Month;
day = value.Day;
}
/// <summary> /// <summary>
/// Gets a date representing the first occurence of a specified day of the week in the current month. /// Gets a date representing the first occurence of a specified day of the week in the current month.
/// </summary> /// </summary>

View File

@ -6,7 +6,7 @@ namespace SourceGenerator;
public class OverloadSyntaxReceiver : ISyntaxReceiver public class OverloadSyntaxReceiver : ISyntaxReceiver
{ {
private readonly List<MethodDeclarationSyntax> _candidateMethods = []; private readonly List<MethodDeclarationSyntax> _candidateMethods = new();
public IReadOnlyList<MethodDeclarationSyntax> CandidateMethods public IReadOnlyList<MethodDeclarationSyntax> CandidateMethods
{ {