Skip to content

Commit 76c4ac2

Browse files
committed
Add comparer nullable parameters signature in DropInGenerator
1 parent 211ff33 commit 76c4ac2

File tree

16 files changed

+347
-340
lines changed

16 files changed

+347
-340
lines changed

sandbox/ConsoleApp/Program.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@
2929
//var tako = ValueEnumerable.Range(1, 10).Select(x => x.ToString());
3030
//var ok = string.Join(',', tako);
3131

32+
string[]? source = [];
3233

33-
IEnumerable<int> source = ForceNotCollection([1, 2, 3, 4, 5]);
34+
// ZLinq
35+
source.AsValueEnumerable().Order(comparer: null); // No warning
3436

35-
var values = source.AsValueEnumerable().Take(^5..3); // 1,2,3
36-
var a = values.ToArray();
37-
var b = values.ToArray();
37+
// ZLinq (with Drop-in replacement)
38+
source.Order(comparer: null);
3839

3940

4041
static IEnumerable<T> ForceNotCollection<T>(IEnumerable<T> source)

src/FileGen/DropIn/Array.cs

Lines changed: 46 additions & 46 deletions
Large diffs are not rendered by default.

src/FileGen/DropIn/IEnumerable.cs

Lines changed: 46 additions & 46 deletions
Large diffs are not rendered by default.

src/FileGen/DropIn/List.cs

Lines changed: 46 additions & 46 deletions
Large diffs are not rendered by default.

src/FileGen/DropIn/Memory.cs

Lines changed: 46 additions & 46 deletions
Large diffs are not rendered by default.

src/FileGen/DropIn/ReadOnlyMemory.cs

Lines changed: 46 additions & 46 deletions
Large diffs are not rendered by default.

src/FileGen/DropIn/ReadOnlySpan.cs

Lines changed: 46 additions & 46 deletions
Large diffs are not rendered by default.

src/FileGen/DropIn/Span.cs

Lines changed: 46 additions & 46 deletions
Large diffs are not rendered by default.

src/FileGen/DropinGen.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,13 @@ string BuildType(MethodInfo methodInfo, Type type, string replacement)
219219

220220
var sb = new StringBuilder();
221221
BuildTypeCore(sb, type, replacement);
222-
return sb.ToString();
222+
223+
var str = sb.ToString();
224+
if (str.Contains("IComparer") || str.Contains("IEqualityComparer"))
225+
{
226+
str = str + "?";
227+
}
228+
return str;
223229
}
224230

225231
void BuildTypeCore(StringBuilder builder, Type type, string replacement)

src/ZLinq/Linq/GroupBy.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public static ValueEnumerable<GroupBy2<TEnumerator, TSource, TKey, TElement>, IG
2323
#endif
2424
=> new(new(source.Enumerator, Throws.IfNull(keySelector), Throws.IfNull(elementSelector), null));
2525

26-
public static ValueEnumerable<GroupBy2<TEnumerator, TSource, TKey, TElement>, IGrouping<TKey, TElement>> GroupBy<TEnumerator, TSource, TKey, TElement>(this ValueEnumerable<TEnumerator, TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer)
26+
public static ValueEnumerable<GroupBy2<TEnumerator, TSource, TKey, TElement>, IGrouping<TKey, TElement>> GroupBy<TEnumerator, TSource, TKey, TElement>(this ValueEnumerable<TEnumerator, TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey>? comparer)
2727
where TEnumerator : struct, IValueEnumerator<TSource>
2828
#if NET9_0_OR_GREATER
2929
, allows ref struct
@@ -37,7 +37,7 @@ public static ValueEnumerable<GroupBy3<TEnumerator, TSource, TKey, TResult>, TRe
3737
#endif
3838
=> new(new(source.Enumerator, Throws.IfNull(keySelector), Throws.IfNull(resultSelector), null));
3939

40-
public static ValueEnumerable<GroupBy3<TEnumerator, TSource, TKey, TResult>, TResult> GroupBy<TEnumerator, TSource, TKey, TResult>(this ValueEnumerable<TEnumerator, TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IEnumerable<TSource>, TResult> resultSelector, IEqualityComparer<TKey> comparer)
40+
public static ValueEnumerable<GroupBy3<TEnumerator, TSource, TKey, TResult>, TResult> GroupBy<TEnumerator, TSource, TKey, TResult>(this ValueEnumerable<TEnumerator, TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IEnumerable<TSource>, TResult> resultSelector, IEqualityComparer<TKey>? comparer)
4141
where TEnumerator : struct, IValueEnumerator<TSource>
4242
#if NET9_0_OR_GREATER
4343
, allows ref struct
@@ -51,7 +51,7 @@ public static ValueEnumerable<GroupBy4<TEnumerator, TSource, TKey, TElement, TRe
5151
#endif
5252
=> new(new(source.Enumerator, Throws.IfNull(keySelector), Throws.IfNull(elementSelector), Throws.IfNull(resultSelector), null));
5353

54-
public static ValueEnumerable<GroupBy4<TEnumerator, TSource, TKey, TElement, TResult>, TResult> GroupBy<TEnumerator, TSource, TKey, TElement, TResult>(this ValueEnumerable<TEnumerator, TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, Func<TKey, IEnumerable<TElement>, TResult> resultSelector, IEqualityComparer<TKey> comparer)
54+
public static ValueEnumerable<GroupBy4<TEnumerator, TSource, TKey, TElement, TResult>, TResult> GroupBy<TEnumerator, TSource, TKey, TElement, TResult>(this ValueEnumerable<TEnumerator, TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, Func<TKey, IEnumerable<TElement>, TResult> resultSelector, IEqualityComparer<TKey>? comparer)
5555
where TEnumerator : struct, IValueEnumerator<TSource>
5656
#if NET9_0_OR_GREATER
5757
, allows ref struct

0 commit comments

Comments
 (0)