浏览代码

Avoiding heap-allocated closures

Bart De Smet 6 年之前
父节点
当前提交
0980e87430
共有 19 个文件被更改,包括 483 次插入456 次删除
  1. 45 45
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Aggregate.cs
  2. 12 12
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/All.cs
  3. 15 15
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Any.cs
  4. 15 15
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Count.cs
  5. 13 10
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ElementAt.cs
  6. 11 11
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ElementAtOrDefault.cs
  7. 12 12
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/First.cs
  8. 15 15
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/FirstOrDefault.cs
  9. 12 12
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Last.cs
  10. 15 15
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/LastOrDefault.cs
  11. 15 15
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/LongCount.cs
  12. 52 40
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Max.cs
  13. 52 40
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Min.cs
  14. 5 5
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/SequenceEqual.cs
  15. 19 19
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Single.cs
  16. 19 19
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/SingleOrDefault.cs
  17. 150 150
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Sum.Generated.cs
  18. 3 3
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ToEnumerable.cs
  19. 3 3
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ToList.cs

+ 45 - 45
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Aggregate.cs

@@ -17,11 +17,11 @@ namespace System.Linq
             if (accumulator == null)
             if (accumulator == null)
                 throw Error.ArgumentNull(nameof(accumulator));
                 throw Error.ArgumentNull(nameof(accumulator));
 
 
-            return Core();
+            return Core(source, accumulator, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, TSource, TSource> _accumulator, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -34,7 +34,7 @@ namespace System.Linq
 
 
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = accumulator(acc, e.Current);
+                        acc = _accumulator(acc, e.Current);
                     }
                     }
 
 
                     return acc;
                     return acc;
@@ -53,11 +53,11 @@ namespace System.Linq
             if (accumulator == null)
             if (accumulator == null)
                 throw Error.ArgumentNull(nameof(accumulator));
                 throw Error.ArgumentNull(nameof(accumulator));
 
 
-            return Core();
+            return Core(source, accumulator, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, TSource, ValueTask<TSource>> _accumulator, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -70,7 +70,7 @@ namespace System.Linq
 
 
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = await accumulator(acc, e.Current).ConfigureAwait(false);
+                        acc = await _accumulator(acc, e.Current).ConfigureAwait(false);
                     }
                     }
 
 
                     return acc;
                     return acc;
@@ -90,11 +90,11 @@ namespace System.Linq
             if (accumulator == null)
             if (accumulator == null)
                 throw Error.ArgumentNull(nameof(accumulator));
                 throw Error.ArgumentNull(nameof(accumulator));
 
 
-            return Core();
+            return Core(source, accumulator, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, TSource, CancellationToken, ValueTask<TSource>> _accumulator, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -107,7 +107,7 @@ namespace System.Linq
 
 
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = await accumulator(acc, e.Current, cancellationToken).ConfigureAwait(false);
+                        acc = await _accumulator(acc, e.Current, _cancellationToken).ConfigureAwait(false);
                     }
                     }
 
 
                     return acc;
                     return acc;
@@ -127,19 +127,19 @@ namespace System.Linq
             if (accumulator == null)
             if (accumulator == null)
                 throw Error.ArgumentNull(nameof(accumulator));
                 throw Error.ArgumentNull(nameof(accumulator));
 
 
-            return Core();
+            return Core(source, seed, accumulator, cancellationToken);
 
 
-            async Task<TAccumulate> Core()
+            async Task<TAccumulate> Core(IAsyncEnumerable<TSource> _source, TAccumulate _seed, Func<TAccumulate, TSource, TAccumulate> _accumulator, CancellationToken _cancellationToken)
             {
             {
-                var acc = seed;
+                var acc = _seed;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = accumulator(acc, e.Current);
+                        acc = _accumulator(acc, e.Current);
                     }
                     }
                 }
                 }
                 finally
                 finally
@@ -158,19 +158,19 @@ namespace System.Linq
             if (accumulator == null)
             if (accumulator == null)
                 throw Error.ArgumentNull(nameof(accumulator));
                 throw Error.ArgumentNull(nameof(accumulator));
 
 
-            return Core();
+            return Core(source, seed, accumulator, cancellationToken);
 
 
-            async Task<TAccumulate> Core()
+            async Task<TAccumulate> Core(IAsyncEnumerable<TSource> _source, TAccumulate _seed, Func<TAccumulate, TSource, ValueTask<TAccumulate>> _accumulator, CancellationToken _cancellationToken)
             {
             {
-                var acc = seed;
+                var acc = _seed;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = await accumulator(acc, e.Current).ConfigureAwait(false);
+                        acc = await _accumulator(acc, e.Current).ConfigureAwait(false);
                     }
                     }
                 }
                 }
                 finally
                 finally
@@ -190,19 +190,19 @@ namespace System.Linq
             if (accumulator == null)
             if (accumulator == null)
                 throw Error.ArgumentNull(nameof(accumulator));
                 throw Error.ArgumentNull(nameof(accumulator));
 
 
-            return Core();
+            return Core(source, seed, accumulator, cancellationToken);
 
 
-            async Task<TAccumulate> Core()
+            async Task<TAccumulate> Core(IAsyncEnumerable<TSource> _source, TAccumulate _seed, Func<TAccumulate, TSource, CancellationToken, ValueTask<TAccumulate>> _accumulator, CancellationToken _cancellationToken)
             {
             {
-                var acc = seed;
+                var acc = _seed;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = await accumulator(acc, e.Current, cancellationToken).ConfigureAwait(false);
+                        acc = await _accumulator(acc, e.Current, _cancellationToken).ConfigureAwait(false);
                     }
                     }
                 }
                 }
                 finally
                 finally
@@ -224,19 +224,19 @@ namespace System.Linq
             if (resultSelector == null)
             if (resultSelector == null)
                 throw Error.ArgumentNull(nameof(resultSelector));
                 throw Error.ArgumentNull(nameof(resultSelector));
 
 
-            return Core();
+            return Core(source, seed, accumulator, resultSelector, cancellationToken);
 
 
-            async Task<TResult> Core()
+            async Task<TResult> Core(IAsyncEnumerable<TSource> _source, TAccumulate _seed, Func<TAccumulate, TSource, TAccumulate> _accumulator, Func<TAccumulate, TResult> _resultSelector, CancellationToken _cancellationToken)
             {
             {
-                var acc = seed;
+                var acc = _seed;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = accumulator(acc, e.Current);
+                        acc = _accumulator(acc, e.Current);
                     }
                     }
                 }
                 }
                 finally
                 finally
@@ -244,7 +244,7 @@ namespace System.Linq
                     await e.DisposeAsync().ConfigureAwait(false);
                     await e.DisposeAsync().ConfigureAwait(false);
                 }
                 }
 
 
-                return resultSelector(acc);
+                return _resultSelector(acc);
             }
             }
         }
         }
 
 
@@ -257,19 +257,19 @@ namespace System.Linq
             if (resultSelector == null)
             if (resultSelector == null)
                 throw Error.ArgumentNull(nameof(resultSelector));
                 throw Error.ArgumentNull(nameof(resultSelector));
 
 
-            return Core();
+            return Core(source, seed, accumulator, resultSelector, cancellationToken);
 
 
-            async Task<TResult> Core()
+            async Task<TResult> Core(IAsyncEnumerable<TSource> _source, TAccumulate _seed, Func<TAccumulate, TSource, ValueTask<TAccumulate>> _accumulator, Func<TAccumulate, ValueTask<TResult>> _resultSelector, CancellationToken _cancellationToken)
             {
             {
-                var acc = seed;
+                var acc = _seed;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = await accumulator(acc, e.Current).ConfigureAwait(false);
+                        acc = await _accumulator(acc, e.Current).ConfigureAwait(false);
                     }
                     }
                 }
                 }
                 finally
                 finally
@@ -277,7 +277,7 @@ namespace System.Linq
                     await e.DisposeAsync().ConfigureAwait(false);
                     await e.DisposeAsync().ConfigureAwait(false);
                 }
                 }
 
 
-                return await resultSelector(acc).ConfigureAwait(false);
+                return await _resultSelector(acc).ConfigureAwait(false);
             }
             }
         }
         }
 
 
@@ -291,19 +291,19 @@ namespace System.Linq
             if (resultSelector == null)
             if (resultSelector == null)
                 throw Error.ArgumentNull(nameof(resultSelector));
                 throw Error.ArgumentNull(nameof(resultSelector));
 
 
-            return Core();
+            return Core(source, seed, accumulator, resultSelector, cancellationToken);
 
 
-            async Task<TResult> Core()
+            async Task<TResult> Core(IAsyncEnumerable<TSource> _source, TAccumulate _seed, Func<TAccumulate, TSource, CancellationToken, ValueTask<TAccumulate>> _accumulator, Func<TAccumulate, CancellationToken, ValueTask<TResult>> _resultSelector, CancellationToken _cancellationToken)
             {
             {
-                var acc = seed;
+                var acc = _seed;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        acc = await accumulator(acc, e.Current, cancellationToken).ConfigureAwait(false);
+                        acc = await _accumulator(acc, e.Current, _cancellationToken).ConfigureAwait(false);
                     }
                     }
                 }
                 }
                 finally
                 finally
@@ -311,7 +311,7 @@ namespace System.Linq
                     await e.DisposeAsync().ConfigureAwait(false);
                     await e.DisposeAsync().ConfigureAwait(false);
                 }
                 }
 
 
-                return await resultSelector(acc, cancellationToken).ConfigureAwait(false);
+                return await _resultSelector(acc, _cancellationToken).ConfigureAwait(false);
             }
             }
         }
         }
 #endif
 #endif

+ 12 - 12
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/All.cs

@@ -17,17 +17,17 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (!predicate(e.Current))
+                        if (!_predicate(e.Current))
                             return false;
                             return false;
                     }
                     }
                 }
                 }
@@ -47,17 +47,17 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (!await predicate(e.Current).ConfigureAwait(false))
+                        if (!await _predicate(e.Current).ConfigureAwait(false))
                             return false;
                             return false;
                     }
                     }
                 }
                 }
@@ -78,17 +78,17 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (!await predicate(e.Current, cancellationToken).ConfigureAwait(false))
+                        if (!await _predicate(e.Current, _cancellationToken).ConfigureAwait(false))
                             return false;
                             return false;
                     }
                     }
                 }
                 }

+ 15 - 15
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Any.cs

@@ -15,11 +15,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -39,17 +39,17 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (predicate(e.Current))
+                        if (_predicate(e.Current))
                             return true;
                             return true;
                     }
                     }
                 }
                 }
@@ -69,17 +69,17 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (await predicate(e.Current).ConfigureAwait(false))
+                        if (await _predicate(e.Current).ConfigureAwait(false))
                             return true;
                             return true;
                     }
                     }
                 }
                 }
@@ -100,17 +100,17 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (await predicate(e.Current, cancellationToken).ConfigureAwait(false))
+                        if (await _predicate(e.Current, _cancellationToken).ConfigureAwait(false))
                             return true;
                             return true;
                     }
                     }
                 }
                 }

+ 15 - 15
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Count.cs

@@ -26,13 +26,13 @@ namespace System.Linq
                     return Task.FromResult(collection.Count);
                     return Task.FromResult(collection.Count);
             }
             }
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
                 var count = 0;
                 var count = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -60,19 +60,19 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
                 var count = 0;
                 var count = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (predicate(e.Current))
+                        if (_predicate(e.Current))
                         {
                         {
                             checked
                             checked
                             {
                             {
@@ -97,19 +97,19 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
                 var count = 0;
                 var count = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (await predicate(e.Current).ConfigureAwait(false))
+                        if (await _predicate(e.Current).ConfigureAwait(false))
                         {
                         {
                             checked
                             checked
                             {
                             {
@@ -135,19 +135,19 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
                 var count = 0;
                 var count = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (await predicate(e.Current, cancellationToken).ConfigureAwait(false))
+                        if (await _predicate(e.Current, _cancellationToken).ConfigureAwait(false))
                         {
                         {
                             checked
                             checked
                             {
                             {

+ 13 - 10
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ElementAt.cs

@@ -15,13 +15,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, index, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, int _index, CancellationToken _cancellationToken)
             {
             {
-                if (source is IAsyncPartition<TSource> p)
+                if (_source is IAsyncPartition<TSource> p)
                 {
                 {
-                    var first = await p.TryGetElementAtAsync(index, cancellationToken).ConfigureAwait(false);
+                    var first = await p.TryGetElementAtAsync(_index, _cancellationToken).ConfigureAwait(false);
 
 
                     if (first.HasValue)
                     if (first.HasValue)
                     {
                     {
@@ -30,25 +30,25 @@ namespace System.Linq
                 }
                 }
                 else
                 else
                 {
                 {
-                    if (source is IList<TSource> list)
+                    if (_source is IList<TSource> list)
                     {
                     {
-                        return list[index];
+                        return list[_index];
                     }
                     }
 
 
-                    if (index >= 0)
+                    if (_index >= 0)
                     {
                     {
-                        var e = source.GetAsyncEnumerator(cancellationToken);
+                        var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                         try
                         try
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (index == 0)
+                                if (_index == 0)
                                 {
                                 {
                                     return e.Current;
                                     return e.Current;
                                 }
                                 }
 
 
-                                index--;
+                                _index--;
                             }
                             }
                         }
                         }
                         finally
                         finally
@@ -58,6 +58,9 @@ namespace System.Linq
                     }
                     }
                 }
                 }
 
 
+                // NB: Even though index is captured, no closure is created.
+                //     The nameof expression is lowered to a literal prior to creating closures.
+
                 throw Error.ArgumentOutOfRange(nameof(index));
                 throw Error.ArgumentOutOfRange(nameof(index));
             }
             }
         }
         }

+ 11 - 11
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ElementAtOrDefault.cs

@@ -15,13 +15,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, index, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, int _index, CancellationToken _cancellationToken)
             {
             {
-                if (source is IAsyncPartition<TSource> p)
+                if (_source is IAsyncPartition<TSource> p)
                 {
                 {
-                    var first = await p.TryGetElementAtAsync(index, cancellationToken).ConfigureAwait(false);
+                    var first = await p.TryGetElementAtAsync(_index, _cancellationToken).ConfigureAwait(false);
 
 
                     if (first.HasValue)
                     if (first.HasValue)
                     {
                     {
@@ -29,29 +29,29 @@ namespace System.Linq
                     }
                     }
                 }
                 }
 
 
-                if (index >= 0)
+                if (_index >= 0)
                 {
                 {
-                    if (source is IList<TSource> list)
+                    if (_source is IList<TSource> list)
                     {
                     {
-                        if (index < list.Count)
+                        if (_index < list.Count)
                         {
                         {
-                            return list[index];
+                            return list[_index];
                         }
                         }
                     }
                     }
                     else
                     else
                     {
                     {
-                        var e = source.GetAsyncEnumerator(cancellationToken);
+                        var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                         try
                         try
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (index == 0)
+                                if (_index == 0)
                                 {
                                 {
                                     return e.Current;
                                     return e.Current;
                                 }
                                 }
 
 
-                                index--;
+                                _index--;
                             }
                             }
                         }
                         }
                         finally
                         finally

+ 12 - 12
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/First.cs

@@ -15,11 +15,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : throw Error.NoElements();
                 return first.HasValue ? first.Value : throw Error.NoElements();
             }
             }
@@ -32,11 +32,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, predicate, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : throw Error.NoElements();
                 return first.HasValue ? first.Value : throw Error.NoElements();
             }
             }
@@ -49,11 +49,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, predicate, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : throw Error.NoElements();
                 return first.HasValue ? first.Value : throw Error.NoElements();
             }
             }
@@ -67,11 +67,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, predicate, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : throw Error.NoElements();
                 return first.HasValue ? first.Value : throw Error.NoElements();
             }
             }

+ 15 - 15
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/FirstOrDefault.cs

@@ -15,11 +15,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : default;
                 return first.HasValue ? first.Value : default;
             }
             }
@@ -32,11 +32,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, predicate, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : default;
                 return first.HasValue ? first.Value : default;
             }
             }
@@ -49,11 +49,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, predicate, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : default;
                 return first.HasValue ? first.Value : default;
             }
             }
@@ -67,11 +67,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var first = await TryGetFirst(source, predicate, cancellationToken).ConfigureAwait(false);
+                var first = await TryGetFirst(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return first.HasValue ? first.Value : default;
                 return first.HasValue ? first.Value : default;
             }
             }
@@ -93,11 +93,11 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, cancellationToken);
 
 
-                async ValueTask<Maybe<TSource>> Core()
+                async ValueTask<Maybe<TSource>> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
                 {
                 {
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {

+ 12 - 12
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Last.cs

@@ -15,11 +15,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : throw Error.NoElements();
                 return last.HasValue ? last.Value : throw Error.NoElements();
             }
             }
@@ -32,11 +32,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, predicate, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : throw Error.NoElements();
                 return last.HasValue ? last.Value : throw Error.NoElements();
             }
             }
@@ -49,11 +49,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, predicate, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : throw Error.NoElements();
                 return last.HasValue ? last.Value : throw Error.NoElements();
             }
             }
@@ -67,11 +67,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, predicate, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : throw Error.NoElements();
                 return last.HasValue ? last.Value : throw Error.NoElements();
             }
             }

+ 15 - 15
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/LastOrDefault.cs

@@ -15,11 +15,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : default;
                 return last.HasValue ? last.Value : default;
             }
             }
@@ -32,11 +32,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, predicate, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : default;
                 return last.HasValue ? last.Value : default;
             }
             }
@@ -49,11 +49,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, predicate, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : default;
                 return last.HasValue ? last.Value : default;
             }
             }
@@ -67,11 +67,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var last = await TryGetLast(source, predicate, cancellationToken).ConfigureAwait(false);
+                var last = await TryGetLast(_source, _predicate, _cancellationToken).ConfigureAwait(false);
 
 
                 return last.HasValue ? last.Value : default;
                 return last.HasValue ? last.Value : default;
             }
             }
@@ -94,14 +94,14 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, cancellationToken);
 
 
-                async ValueTask<Maybe<TSource>> Core()
+                async ValueTask<Maybe<TSource>> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
                 {
                 {
                     var last = default(TSource);
                     var last = default(TSource);
                     var hasLast = false;
                     var hasLast = false;
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {

+ 15 - 15
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/LongCount.cs

@@ -15,13 +15,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
                 var count = 0L;
                 var count = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -49,19 +49,19 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
                 var count = 0L;
                 var count = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (predicate(e.Current))
+                        if (_predicate(e.Current))
                         {
                         {
                             checked
                             checked
                             {
                             {
@@ -86,19 +86,19 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
                 var count = 0L;
                 var count = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (await predicate(e.Current).ConfigureAwait(false))
+                        if (await _predicate(e.Current).ConfigureAwait(false))
                         {
                         {
                             checked
                             checked
                             {
                             {
@@ -124,19 +124,19 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
                 var count = 0L;
                 var count = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        if (await predicate(e.Current, cancellationToken).ConfigureAwait(false))
+                        if (await _predicate(e.Current, _cancellationToken).ConfigureAwait(false))
                         {
                         {
                             checked
                             checked
                             {
                             {

+ 52 - 40
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Max.cs

@@ -15,16 +15,17 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            var comparer = Comparer<TSource>.Default;
             if (default(TSource) == null)
             if (default(TSource) == null)
             {
             {
-                return Core();
+                return Core(source, cancellationToken);
 
 
-                async Task<TSource> Core()
+                async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TSource>.Default;
+
                     var value = default(TSource);
                     var value = default(TSource);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -58,13 +59,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, cancellationToken);
 
 
-                async Task<TSource> Core()
+                async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TSource>.Default;
+
                     var value = default(TSource);
                     var value = default(TSource);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -100,16 +103,17 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            var comparer = Comparer<TResult>.Default;
             if (default(TResult) == null)
             if (default(TResult) == null)
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, TResult> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -120,13 +124,13 @@ namespace System.Linq
                                 return value;
                                 return value;
                             }
                             }
 
 
-                            value = selector(e.Current);
+                            value = _selector(e.Current);
                         }
                         }
                         while (value == null);
                         while (value == null);
 
 
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = selector(e.Current);
+                            var x = _selector(e.Current);
                             if (x != null && comparer.Compare(x, value) > 0)
                             if (x != null && comparer.Compare(x, value) > 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -143,13 +147,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, TResult> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -158,10 +164,10 @@ namespace System.Linq
                             throw Error.NoElements();
                             throw Error.NoElements();
                         }
                         }
 
 
-                        value = selector(e.Current);
+                        value = _selector(e.Current);
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = selector(e.Current);
+                            var x = _selector(e.Current);
                             if (comparer.Compare(x, value) > 0)
                             if (comparer.Compare(x, value) > 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -185,16 +191,17 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            var comparer = Comparer<TResult>.Default;
             if (default(TResult) == null)
             if (default(TResult) == null)
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -205,13 +212,13 @@ namespace System.Linq
                                 return value;
                                 return value;
                             }
                             }
 
 
-                            value = await selector(e.Current).ConfigureAwait(false);
+                            value = await _selector(e.Current).ConfigureAwait(false);
                         }
                         }
                         while (value == null);
                         while (value == null);
 
 
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current).ConfigureAwait(false);
+                            var x = await _selector(e.Current).ConfigureAwait(false);
                             if (x != null && comparer.Compare(x, value) > 0)
                             if (x != null && comparer.Compare(x, value) > 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -228,13 +235,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -243,10 +252,10 @@ namespace System.Linq
                             throw Error.NoElements();
                             throw Error.NoElements();
                         }
                         }
 
 
-                        value = await selector(e.Current).ConfigureAwait(false);
+                        value = await _selector(e.Current).ConfigureAwait(false);
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current).ConfigureAwait(false);
+                            var x = await _selector(e.Current).ConfigureAwait(false);
                             if (comparer.Compare(x, value) > 0)
                             if (comparer.Compare(x, value) > 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -271,16 +280,17 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            var comparer = Comparer<TResult>.Default;
             if (default(TResult) == null)
             if (default(TResult) == null)
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -291,13 +301,13 @@ namespace System.Linq
                                 return value;
                                 return value;
                             }
                             }
 
 
-                            value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                            value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                         }
                         }
                         while (value == null);
                         while (value == null);
 
 
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                            var x = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                             if (x != null && comparer.Compare(x, value) > 0)
                             if (x != null && comparer.Compare(x, value) > 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -314,13 +324,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -329,10 +341,10 @@ namespace System.Linq
                             throw Error.NoElements();
                             throw Error.NoElements();
                         }
                         }
 
 
-                        value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                            var x = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                             if (comparer.Compare(x, value) > 0)
                             if (comparer.Compare(x, value) > 0)
                             {
                             {
                                 value = x;
                                 value = x;

+ 52 - 40
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Min.cs

@@ -15,16 +15,17 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            var comparer = Comparer<TSource>.Default;
             if (default(TSource) == null)
             if (default(TSource) == null)
             {
             {
-                return Core();
+                return Core(source, cancellationToken);
 
 
-                async Task<TSource> Core()
+                async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TSource>.Default;
+
                     var value = default(TSource);
                     var value = default(TSource);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -58,13 +59,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, cancellationToken);
 
 
-                async Task<TSource> Core()
+                async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TSource>.Default;
+
                     var value = default(TSource);
                     var value = default(TSource);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -100,16 +103,17 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            var comparer = Comparer<TResult>.Default;
             if (default(TResult) == null)
             if (default(TResult) == null)
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, TResult> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -120,13 +124,13 @@ namespace System.Linq
                                 return value;
                                 return value;
                             }
                             }
 
 
-                            value = selector(e.Current);
+                            value = _selector(e.Current);
                         }
                         }
                         while (value == null);
                         while (value == null);
 
 
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = selector(e.Current);
+                            var x = _selector(e.Current);
                             if (x != null && comparer.Compare(x, value) < 0)
                             if (x != null && comparer.Compare(x, value) < 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -143,13 +147,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, TResult> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -158,10 +164,10 @@ namespace System.Linq
                             throw Error.NoElements();
                             throw Error.NoElements();
                         }
                         }
 
 
-                        value = selector(e.Current);
+                        value = _selector(e.Current);
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = selector(e.Current);
+                            var x = _selector(e.Current);
                             if (comparer.Compare(x, value) < 0)
                             if (comparer.Compare(x, value) < 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -185,16 +191,17 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            var comparer = Comparer<TResult>.Default;
             if (default(TResult) == null)
             if (default(TResult) == null)
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -205,13 +212,13 @@ namespace System.Linq
                                 return value;
                                 return value;
                             }
                             }
 
 
-                            value = await selector(e.Current).ConfigureAwait(false);
+                            value = await _selector(e.Current).ConfigureAwait(false);
                         }
                         }
                         while (value == null);
                         while (value == null);
 
 
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current).ConfigureAwait(false);
+                            var x = await _selector(e.Current).ConfigureAwait(false);
                             if (x != null && comparer.Compare(x, value) < 0)
                             if (x != null && comparer.Compare(x, value) < 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -228,13 +235,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -243,10 +252,10 @@ namespace System.Linq
                             throw Error.NoElements();
                             throw Error.NoElements();
                         }
                         }
 
 
-                        value = await selector(e.Current).ConfigureAwait(false);
+                        value = await _selector(e.Current).ConfigureAwait(false);
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current).ConfigureAwait(false);
+                            var x = await _selector(e.Current).ConfigureAwait(false);
                             if (comparer.Compare(x, value) < 0)
                             if (comparer.Compare(x, value) < 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -271,16 +280,17 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            var comparer = Comparer<TResult>.Default;
             if (default(TResult) == null)
             if (default(TResult) == null)
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -291,13 +301,13 @@ namespace System.Linq
                                 return value;
                                 return value;
                             }
                             }
 
 
-                            value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                            value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                         }
                         }
                         while (value == null);
                         while (value == null);
 
 
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                            var x = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                             if (x != null && comparer.Compare(x, value) < 0)
                             if (x != null && comparer.Compare(x, value) < 0)
                             {
                             {
                                 value = x;
                                 value = x;
@@ -314,13 +324,15 @@ namespace System.Linq
             }
             }
             else
             else
             {
             {
-                return Core();
+                return Core(source, selector, cancellationToken);
 
 
-                async Task<TResult> Core()
+                async Task<TResult> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<TResult>> _selector, CancellationToken _cancellationToken)
                 {
                 {
+                    var comparer = Comparer<TResult>.Default;
+
                     var value = default(TResult);
                     var value = default(TResult);
 
 
-                    var e = source.GetAsyncEnumerator(cancellationToken);
+                    var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
@@ -329,10 +341,10 @@ namespace System.Linq
                             throw Error.NoElements();
                             throw Error.NoElements();
                         }
                         }
 
 
-                        value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         while (await e.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            var x = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                            var x = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
                             if (comparer.Compare(x, value) < 0)
                             if (comparer.Compare(x, value) < 0)
                             {
                             {
                                 value = x;
                                 value = x;

+ 5 - 5
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/SequenceEqual.cs

@@ -60,21 +60,21 @@ namespace System.Linq
                 }
                 }
             }
             }
 
 
-            return Core();
+            return Core(first, second, comparer, cancellationToken);
 
 
-            async Task<bool> Core()
+            async Task<bool> Core(IAsyncEnumerable<TSource> _first, IAsyncEnumerable<TSource> _second, IEqualityComparer<TSource> _comparer, CancellationToken _cancellationToken)
             {
             {
-                var e1 = first.GetAsyncEnumerator(cancellationToken);
+                var e1 = _first.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
-                    var e2 = second.GetAsyncEnumerator(cancellationToken);
+                    var e2 = _second.GetAsyncEnumerator(_cancellationToken);
 
 
                     try
                     try
                     {
                     {
                         while (await e1.MoveNextAsync().ConfigureAwait(false))
                         while (await e1.MoveNextAsync().ConfigureAwait(false))
                         {
                         {
-                            if (!(await e2.MoveNextAsync().ConfigureAwait(false) && comparer.Equals(e1.Current, e2.Current)))
+                            if (!(await e2.MoveNextAsync().ConfigureAwait(false) && _comparer.Equals(e1.Current, e2.Current)))
                             {
                             {
                                 return false;
                                 return false;
                             }
                             }

+ 19 - 19
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Single.cs

@@ -15,11 +15,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
-                if (source is IList<TSource> list)
+                if (_source is IList<TSource> list)
                 {
                 {
                     switch (list.Count)
                     switch (list.Count)
                     {
                     {
@@ -30,7 +30,7 @@ namespace System.Linq
                     throw Error.MoreThanOneElement();
                     throw Error.MoreThanOneElement();
                 }
                 }
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -61,11 +61,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -73,11 +73,11 @@ namespace System.Linq
                     {
                     {
                         var result = e.Current;
                         var result = e.Current;
 
 
-                        if (predicate(result))
+                        if (_predicate(result))
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (predicate(e.Current))
+                                if (_predicate(e.Current))
                                 {
                                 {
                                     throw Error.MoreThanOneElement();
                                     throw Error.MoreThanOneElement();
                                 }
                                 }
@@ -103,11 +103,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -115,11 +115,11 @@ namespace System.Linq
                     {
                     {
                         var result = e.Current;
                         var result = e.Current;
 
 
-                        if (await predicate(result).ConfigureAwait(false))
+                        if (await _predicate(result).ConfigureAwait(false))
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (await predicate(e.Current).ConfigureAwait(false))
+                                if (await _predicate(e.Current).ConfigureAwait(false))
                                 {
                                 {
                                     throw Error.MoreThanOneElement();
                                     throw Error.MoreThanOneElement();
                                 }
                                 }
@@ -146,11 +146,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -158,11 +158,11 @@ namespace System.Linq
                     {
                     {
                         var result = e.Current;
                         var result = e.Current;
 
 
-                        if (await predicate(result, cancellationToken).ConfigureAwait(false))
+                        if (await _predicate(result, _cancellationToken).ConfigureAwait(false))
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (await predicate(e.Current, cancellationToken).ConfigureAwait(false))
+                                if (await _predicate(e.Current, _cancellationToken).ConfigureAwait(false))
                                 {
                                 {
                                     throw Error.MoreThanOneElement();
                                     throw Error.MoreThanOneElement();
                                 }
                                 }

+ 19 - 19
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/SingleOrDefault.cs

@@ -15,11 +15,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
-                if (source is IList<TSource> list)
+                if (_source is IList<TSource> list)
                 {
                 {
                     switch (list.Count)
                     switch (list.Count)
                     {
                     {
@@ -30,7 +30,7 @@ namespace System.Linq
                     throw Error.MoreThanOneElement();
                     throw Error.MoreThanOneElement();
                 }
                 }
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -62,11 +62,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, bool> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -74,11 +74,11 @@ namespace System.Linq
                     {
                     {
                         var result = e.Current;
                         var result = e.Current;
 
 
-                        if (predicate(result))
+                        if (_predicate(result))
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (predicate(e.Current))
+                                if (_predicate(e.Current))
                                 {
                                 {
                                     throw Error.MoreThanOneElement();
                                     throw Error.MoreThanOneElement();
                                 }
                                 }
@@ -104,11 +104,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -116,11 +116,11 @@ namespace System.Linq
                     {
                     {
                         var result = e.Current;
                         var result = e.Current;
 
 
-                        if (await predicate(result).ConfigureAwait(false))
+                        if (await _predicate(result).ConfigureAwait(false))
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (await predicate(e.Current).ConfigureAwait(false))
+                                if (await _predicate(e.Current).ConfigureAwait(false))
                                 {
                                 {
                                     throw Error.MoreThanOneElement();
                                     throw Error.MoreThanOneElement();
                                 }
                                 }
@@ -147,11 +147,11 @@ namespace System.Linq
             if (predicate == null)
             if (predicate == null)
                 throw Error.ArgumentNull(nameof(predicate));
                 throw Error.ArgumentNull(nameof(predicate));
 
 
-            return Core();
+            return Core(source, predicate, cancellationToken);
 
 
-            async Task<TSource> Core()
+            async Task<TSource> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<bool>> _predicate, CancellationToken _cancellationToken)
             {
             {
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -159,11 +159,11 @@ namespace System.Linq
                     {
                     {
                         var result = e.Current;
                         var result = e.Current;
 
 
-                        if (await predicate(result, cancellationToken).ConfigureAwait(false))
+                        if (await _predicate(result, _cancellationToken).ConfigureAwait(false))
                         {
                         {
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             while (await e.MoveNextAsync().ConfigureAwait(false))
                             {
                             {
-                                if (await predicate(e.Current, cancellationToken).ConfigureAwait(false))
+                                if (await _predicate(e.Current, _cancellationToken).ConfigureAwait(false))
                                 {
                                 {
                                     throw Error.MoreThanOneElement();
                                     throw Error.MoreThanOneElement();
                                 }
                                 }

+ 150 - 150
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Sum.Generated.cs

@@ -15,13 +15,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<int> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -49,19 +49,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<TSource> _source, Func<TSource, int> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         checked
                         checked
                         {
                         {
@@ -85,19 +85,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<int>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -122,19 +122,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<int> Core()
+            async Task<int> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<int>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -157,13 +157,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<long> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -191,19 +191,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<TSource> _source, Func<TSource, long> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         checked
                         checked
                         {
                         {
@@ -227,19 +227,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<long>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -264,19 +264,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<long> Core()
+            async Task<long> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<long>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -299,13 +299,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<float> Core()
+            async Task<float> Core(IAsyncEnumerable<float> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -330,19 +330,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<float> Core()
+            async Task<float> Core(IAsyncEnumerable<TSource> _source, Func<TSource, float> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -363,19 +363,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<float> Core()
+            async Task<float> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<float>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -397,19 +397,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<float> Core()
+            async Task<float> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<float>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -429,13 +429,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<double> Core()
+            async Task<double> Core(IAsyncEnumerable<double> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -460,19 +460,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<double> Core()
+            async Task<double> Core(IAsyncEnumerable<TSource> _source, Func<TSource, double> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -493,19 +493,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<double> Core()
+            async Task<double> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<double>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -527,19 +527,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<double> Core()
+            async Task<double> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<double>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -559,13 +559,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<decimal> Core()
+            async Task<decimal> Core(IAsyncEnumerable<decimal> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -590,19 +590,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<decimal> Core()
+            async Task<decimal> Core(IAsyncEnumerable<TSource> _source, Func<TSource, decimal> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -623,19 +623,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<decimal> Core()
+            async Task<decimal> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<decimal>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -657,19 +657,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<decimal> Core()
+            async Task<decimal> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<decimal>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         sum += value;
                         sum += value;
                     }
                     }
@@ -689,13 +689,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<int?> Core()
+            async Task<int?> Core(IAsyncEnumerable<int?> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -723,19 +723,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<int?> Core()
+            async Task<int?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, int?> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         checked
                         checked
                         {
                         {
@@ -759,19 +759,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<int?> Core()
+            async Task<int?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<int?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -796,19 +796,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<int?> Core()
+            async Task<int?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<int?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0;
                 var sum = 0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -831,13 +831,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<long?> Core()
+            async Task<long?> Core(IAsyncEnumerable<long?> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -865,19 +865,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<long?> Core()
+            async Task<long?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, long?> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         checked
                         checked
                         {
                         {
@@ -901,19 +901,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<long?> Core()
+            async Task<long?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<long?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -938,19 +938,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<long?> Core()
+            async Task<long?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<long?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0L;
                 var sum = 0L;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         checked
                         checked
                         {
                         {
@@ -973,13 +973,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<float?> Core()
+            async Task<float?> Core(IAsyncEnumerable<float?> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -1004,19 +1004,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<float?> Core()
+            async Task<float?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, float?> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1037,19 +1037,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<float?> Core()
+            async Task<float?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<float?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1071,19 +1071,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<float?> Core()
+            async Task<float?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<float?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0f;
                 var sum = 0.0f;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1103,13 +1103,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<double?> Core()
+            async Task<double?> Core(IAsyncEnumerable<double?> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -1134,19 +1134,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<double?> Core()
+            async Task<double?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, double?> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1167,19 +1167,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<double?> Core()
+            async Task<double?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<double?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1201,19 +1201,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<double?> Core()
+            async Task<double?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<double?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0.0;
                 var sum = 0.0;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1233,13 +1233,13 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<decimal?> Core()
+            async Task<decimal?> Core(IAsyncEnumerable<decimal?> _source, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
@@ -1264,19 +1264,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<decimal?> Core()
+            async Task<decimal?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, decimal?> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = selector(e.Current);
+                        var value = _selector(e.Current);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1297,19 +1297,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<decimal?> Core()
+            async Task<decimal?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, ValueTask<decimal?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current).ConfigureAwait(false);
+                        var value = await _selector(e.Current).ConfigureAwait(false);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }
@@ -1331,19 +1331,19 @@ namespace System.Linq
             if (selector == null)
             if (selector == null)
                 throw Error.ArgumentNull(nameof(selector));
                 throw Error.ArgumentNull(nameof(selector));
 
 
-            return Core();
+            return Core(source, selector, cancellationToken);
 
 
-            async Task<decimal?> Core()
+            async Task<decimal?> Core(IAsyncEnumerable<TSource> _source, Func<TSource, CancellationToken, ValueTask<decimal?>> _selector, CancellationToken _cancellationToken)
             {
             {
                 var sum = 0m;
                 var sum = 0m;
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     while (await e.MoveNextAsync().ConfigureAwait(false))
                     {
                     {
-                        var value = await selector(e.Current, cancellationToken).ConfigureAwait(false);
+                        var value = await _selector(e.Current, _cancellationToken).ConfigureAwait(false);
 
 
                         sum += value.GetValueOrDefault();
                         sum += value.GetValueOrDefault();
                     }
                     }

+ 3 - 3
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ToEnumerable.cs

@@ -17,11 +17,11 @@ namespace System.Linq
             if (source == null)
             if (source == null)
                 throw Error.ArgumentNull(nameof(source));
                 throw Error.ArgumentNull(nameof(source));
 
 
-            return Core();
+            return Core(source);
 
 
-            IEnumerable<TSource> Core()
+            IEnumerable<TSource> Core(IAsyncEnumerable<TSource> _source)
             {
             {
-                var e = source.GetAsyncEnumerator(default);
+                var e = _source.GetAsyncEnumerator(default);
 
 
                 try
                 try
                 {
                 {

+ 3 - 3
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ToList.cs

@@ -18,13 +18,13 @@ namespace System.Linq
             if (source is IAsyncIListProvider<TSource> listProvider)
             if (source is IAsyncIListProvider<TSource> listProvider)
                 return listProvider.ToListAsync(cancellationToken).AsTask();
                 return listProvider.ToListAsync(cancellationToken).AsTask();
 
 
-            return Core();
+            return Core(source, cancellationToken);
 
 
-            async Task<List<TSource>> Core()
+            async Task<List<TSource>> Core(IAsyncEnumerable<TSource> _source, CancellationToken _cancellationToken)
             {
             {
                 var list = new List<TSource>();
                 var list = new List<TSource>();
 
 
-                var e = source.GetAsyncEnumerator(cancellationToken);
+                var e = _source.GetAsyncEnumerator(_cancellationToken);
 
 
                 try
                 try
                 {
                 {