Skip to content

Commit 7810fdc

Browse files
committed
Add enumeration support to EquatableArray<T>
1 parent 829304f commit 7810fdc

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

CommunityToolkit.Mvvm.SourceGenerators/CommunityToolkit.Mvvm.SourceGenerators.projitems

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
<Compile Include="$(MSBuildThisFileDirectory)Extensions\SyntaxNodeExtensions.cs" />
7070
<Compile Include="$(MSBuildThisFileDirectory)Extensions\TypeDeclarationSyntaxExtensions.cs" />
7171
<Compile Include="$(MSBuildThisFileDirectory)Helpers\Comparer{T,TSelf}.cs" />
72-
<Compile Include="$(MSBuildThisFileDirectory)Helpers\EquatableArray.cs" />
72+
<Compile Include="$(MSBuildThisFileDirectory)Helpers\EquatableArray{T}.cs" />
7373
<Compile Include="$(MSBuildThisFileDirectory)Helpers\HashCode.cs" />
7474
<Compile Include="$(MSBuildThisFileDirectory)Helpers\ImmutableArrayBuilder{T}.cs" />
7575
<Compile Include="$(MSBuildThisFileDirectory)Helpers\ObjectPool{T}.cs" />

CommunityToolkit.Mvvm.SourceGenerators/Helpers/EquatableArray.cs renamed to CommunityToolkit.Mvvm.SourceGenerators/Helpers/EquatableArray{T}.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System;
6+
using System.Collections;
7+
using System.Collections.Generic;
68
using System.Collections.Immutable;
79
using System.Diagnostics.CodeAnalysis;
810
using System.Linq;
@@ -32,7 +34,7 @@ public static EquatableArray<T> AsEquatableArray<T>(this ImmutableArray<T> array
3234
/// An imutable, equatable array. This is equivalent to <see cref="ImmutableArray{T}"/> but with value equality support.
3335
/// </summary>
3436
/// <typeparam name="T">The type of values in the array.</typeparam>
35-
internal readonly struct EquatableArray<T> : IEquatable<EquatableArray<T>>
37+
internal readonly struct EquatableArray<T> : IEquatable<EquatableArray<T>>, IEnumerable<T>
3638
where T : IEquatable<T>
3739
{
3840
/// <summary>
@@ -137,6 +139,27 @@ public T[] ToArray()
137139
return AsImmutableArray().ToArray();
138140
}
139141

142+
/// <summary>
143+
/// Gets an <see cref="ImmutableArray{T}.Enumerator"/> value to traverse items in the current array.
144+
/// </summary>
145+
/// <returns>An <see cref="ImmutableArray{T}.Enumerator"/> value to traverse items in the current array.</returns>
146+
public ImmutableArray<T>.Enumerator GetEnumerator()
147+
{
148+
return AsImmutableArray().GetEnumerator();
149+
}
150+
151+
/// <sinheritdoc/>
152+
IEnumerator<T> IEnumerable<T>.GetEnumerator()
153+
{
154+
return ((IEnumerable<T>)AsImmutableArray()).GetEnumerator();
155+
}
156+
157+
/// <sinheritdoc/>
158+
IEnumerator IEnumerable.GetEnumerator()
159+
{
160+
return ((IEnumerable)AsImmutableArray()).GetEnumerator();
161+
}
162+
140163
/// <summary>
141164
/// Implicitly converts an <see cref="ImmutableArray{T}"/> to <see cref="EquatableArray{T}"/>.
142165
/// </summary>

0 commit comments

Comments
 (0)