Skip to content

Commit a86fad2

Browse files
authored
Add ValueMemoryOwner (#355)
1 parent 7c97136 commit a86fad2

75 files changed

Lines changed: 388 additions & 530 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

NetFabric.Hyperlinq.SourceGenerator/Utils/MethodSymbolExtensions.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public static MethodInfo GetInfo(this IMethodSymbol method, CompilationContext c
4040
Name = method.Name,
4141
Parameters = method.Parameters
4242
.Skip(skip)
43-
.Select(parameter => (parameter.Name, parameter.Type.ToDisplayString(), parameter.HasExplicitDefaultValue ? (parameter.ExplicitDefaultValue is null ? "default" : parameter.ExplicitDefaultValue.ToString()) : default))
43+
.Select(parameter => (parameter.Name, parameter.Type.ToDisplayString(), parameter.HasExplicitDefaultValue ? parameter.ExplicitDefaultValue is null ? "default" : ToDisplayString(parameter.ExplicitDefaultValue) : default))
4444
.ToArray(),
4545
TypeParameters =
4646
method.ContainingType.TypeParameters.Concat(method.TypeParameters)
@@ -53,6 +53,15 @@ public static MethodInfo GetInfo(this IMethodSymbol method, CompilationContext c
5353
{
5454
throw;
5555
}
56+
57+
string ToDisplayString(object? obj)
58+
=> obj switch
59+
{
60+
null => "<NULL>",
61+
true => "true",
62+
false => "false",
63+
_ => obj.ToString()
64+
};
5665
}
5766

5867
public static MethodInfo ApplyMappings(this MethodInfo method, ImmutableArray<GeneratorMappingAttribute> typeGenericsMapping)

NetFabric.Hyperlinq.SourceGenerator/Utils/TypeSymbolExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public static IEnumerable<INamedTypeSymbol> GetAllInterfaces(this ITypeSymbol ty
1717
yield return (INamedTypeSymbol)typeSymbol;
1818

1919
#pragma warning disable IDE0007 // Use implicit type
20+
// ReSharper disable once SuggestVarOrType_SimpleTypes
2021
ITypeSymbol? currentTypeSymbol = typeSymbol;
2122
#pragma warning restore IDE0007 // Use implicit type
2223
do

NetFabric.Hyperlinq.UnitTests/Conversion/ToArray/LargeArrayBuilder.Tests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public void ToArray_Must_Succeed(int count)
2020
var expected = Enumerable
2121
.Range(0, count)
2222
.ToArray();
23-
using var builder = new LargeArrayBuilder<int>(ArrayPool<int>.Shared);
23+
using var builder = new LargeArrayBuilder<int>(ArrayPool<int>.Shared, false);
2424
for (var index = 0; index < count; index++)
2525
builder.Add(expected[index]);
2626

@@ -39,16 +39,16 @@ public void ToArray_Must_Succeed(int count)
3939
public void ToArray_MemoryPool_Must_Succeed(int count)
4040
{
4141
// Arrange
42-
var pool = MemoryPool<int>.Shared;
42+
var pool = ArrayPool<int>.Shared;
4343
var expected = Enumerable
4444
.Range(0, count)
4545
.ToArray();
46-
using var builder = new LargeArrayBuilder<int>(ArrayPool<int>.Shared);
46+
using var builder = new LargeArrayBuilder<int>(ArrayPool<int>.Shared, false);
4747
for (var index = 0; index < count; index++)
4848
builder.Add(expected[index]);
4949

5050
// Act
51-
using var result = builder.ToArray(pool);
51+
using var result = builder.ToArray(pool, false);
5252

5353
// Assert
5454
_ = result.Memory.Must()

NetFabric.Hyperlinq.UnitTests/Conversion/ToArray/ToArray.ReadOnlyList.Tests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void ToArray_Must_Succeed(int[] source, int skip, int take)
4343
public void ToArray_MemoryPool_Must_Succeed(int[] source, int skip, int take)
4444
{
4545
// Arrange
46-
var pool = MemoryPool<int>.Shared;
46+
var pool = ArrayPool<int>.Shared;
4747
var wrapped = Wrap.AsReadOnlyList(source);
4848
var expected = source
4949
.Skip(skip)
@@ -100,7 +100,7 @@ public void ToArray_Predicate_Must_Succeed(int[] source, int skip, int take, Fun
100100
public void ToArray_Predicate_MemoryPool_Must_Succeed(int[] source, int skip, int take, Func<int, bool> predicate)
101101
{
102102
// Arrange
103-
var pool = MemoryPool<int>.Shared;
103+
var pool = ArrayPool<int>.Shared;
104104
var wrapped = Wrap.AsReadOnlyList(source);
105105
var expected = source
106106
.Skip(skip)
@@ -159,7 +159,7 @@ public void ToArray_PredicateAt_Must_Succeed(int[] source, int skip, int take, F
159159
public void ToArray_PredicateAt_MemoryPool_Must_Succeed(int[] source, int skip, int take, Func<int, int, bool> predicate)
160160
{
161161
// Arrange
162-
var pool = MemoryPool<int>.Shared;
162+
var pool = ArrayPool<int>.Shared;
163163
var wrapped = Wrap.AsReadOnlyList(source);
164164
var expected = source
165165
.Skip(skip)
@@ -217,7 +217,7 @@ public void ToArray_Selector_Must_Succeed(int[] source, int skip, int take, Func
217217
public void ToArray_Selector_MemoryPool_Must_Succeed(int[] source, int skip, int take, Func<int, string> selector)
218218
{
219219
// Arrange
220-
var pool = MemoryPool<string>.Shared;
220+
var pool = ArrayPool<string>.Shared;
221221
var wrapped = Wrap.AsReadOnlyList(source);
222222
var expected = source
223223
.Skip(skip)
@@ -275,7 +275,7 @@ public void ToArray_SelectorAt_Must_Succeed(int[] source, int skip, int take, Fu
275275
public void ToArray_SelectorAt_MemoryPool_Must_Succeed(int[] source, int skip, int take, Func<int, int, string> selector)
276276
{
277277
// Arrange
278-
var pool = MemoryPool<string>.Shared;
278+
var pool = ArrayPool<string>.Shared;
279279
var wrapped = Wrap.AsReadOnlyList(source);
280280
var expected = source
281281
.Skip(skip)
@@ -335,7 +335,7 @@ public void ToArray_Predicate_Selector_Must_Succeed(int[] source, int skip, int
335335
public void ToArray_Predicate_Selector_MemoryPool_Must_Succeed(int[] source, int skip, int take, Func<int, bool> predicate, Func<int, string> selector)
336336
{
337337
// Arrange
338-
var pool = MemoryPool<string>.Shared;
338+
var pool = ArrayPool<string>.Shared;
339339
var wrapped = Wrap.AsReadOnlyList(source);
340340
var expected = source
341341
.Skip(skip)

NetFabric.Hyperlinq.UnitTests/Conversion/ToArray/ToArray.ReadOnlySpan.Tests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public void ToArray_MemoryPool_Must_Succeed(int[] source)
1717
{
1818
// Arrange
1919
var wrapped = (ReadOnlySpan<int>)source.AsSpan();
20-
var pool = MemoryPool<int>.Shared;
20+
var pool = ArrayPool<int>.Shared;
2121
var expected = source
2222
.ToArray();
2323

@@ -66,7 +66,7 @@ public void ToArray_Predicate_MemoryPool_Must_Succeed(int[] source, Func<int, bo
6666
{
6767
// Arrange
6868
var wrapped = (ReadOnlySpan<int>)source.AsSpan();
69-
var pool = MemoryPool<int>.Shared;
69+
var pool = ArrayPool<int>.Shared;
7070
var expected = source
7171
.Where(predicate)
7272
.ToArray();
@@ -117,7 +117,7 @@ public void ToArray_PredicateAt_MemoryPool_Must_Succeed(int[] source, Func<int,
117117
{
118118
// Arrange
119119
var wrapped = (ReadOnlySpan<int>)source.AsSpan();
120-
var pool = MemoryPool<int>.Shared;
120+
var pool = ArrayPool<int>.Shared;
121121
var expected = source
122122
.Where(predicate)
123123
.ToArray();
@@ -167,7 +167,7 @@ public void ToArray_Selector_MemoryPool_Must_Succeed(int[] source, Func<int, str
167167
{
168168
// Arrange
169169
var wrapped = (ReadOnlySpan<int>)source.AsSpan();
170-
var pool = MemoryPool<string>.Shared;
170+
var pool = ArrayPool<string>.Shared;
171171
var expected = source
172172
.Select(selector)
173173
.ToArray();
@@ -217,7 +217,7 @@ public void ToArray_SelectorAt_MemoryPool_Must_Succeed(int[] source, Func<int, i
217217
{
218218
// Arrange
219219
var wrapped = (ReadOnlySpan<int>)source.AsSpan();
220-
var pool = MemoryPool<string>.Shared;
220+
var pool = ArrayPool<string>.Shared;
221221
var expected = source
222222
.Select(selector)
223223
.ToArray();
@@ -269,7 +269,7 @@ public void ToArray_Predicate_Selector_MemoryPool_Must_Succeed(int[] source, Fun
269269
{
270270
// Arrange
271271
var wrapped = (ReadOnlySpan<int>)source.AsSpan();
272-
var pool = MemoryPool<string>.Shared;
272+
var pool = ArrayPool<string>.Shared;
273273
var expected = source
274274
.Where(predicate)
275275
.Select(selector)

NetFabric.Hyperlinq.UnitTests/Conversion/ToArray/ToArray.ValueEnumerable.Tests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public void ToArray_With_ValidData_Collections_Must_Succeed(int[] source)
5959
public void ToArray_MemoryPool_Must_Succeed(int[] source)
6060
{
6161
// Arrange
62-
var pool = MemoryPool<int>.Shared;
62+
var pool = ArrayPool<int>.Shared;
6363
var wrapped = Wrap
6464
.AsValueEnumerable(source);
6565
var expected = source
@@ -107,7 +107,7 @@ public void ToArray_Predicate_With_ValidData_Must_Succeed(int[] source, Func<int
107107
public void ToArray_Predicate_MemoryPool_Must_Succeed(int[] source, Func<int, bool> predicate)
108108
{
109109
// Arrange
110-
var pool = MemoryPool<int>.Shared;
110+
var pool = ArrayPool<int>.Shared;
111111
var wrapped = Wrap
112112
.AsValueEnumerable(source);
113113
var expected = source
@@ -157,7 +157,7 @@ public void ToArray_PredicateAt_With_ValidData_Must_Succeed(int[] source, Func<i
157157
public void ToArray_PredicateAt_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func<int, int, bool> predicate)
158158
{
159159
// Arrange
160-
var pool = MemoryPool<int>.Shared;
160+
var pool = ArrayPool<int>.Shared;
161161
var wrapped = Wrap
162162
.AsValueEnumerable(source);
163163
var expected = source
@@ -207,7 +207,7 @@ public void ToArray_Selector_With_ValidData_Must_Succeed(int[] source, Func<int,
207207
public void ToArray_Selector_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func<int, string> selector)
208208
{
209209
// Arrange
210-
var pool = MemoryPool<string>.Shared;
210+
var pool = ArrayPool<string>.Shared;
211211
var wrapped = Wrap
212212
.AsValueEnumerable(source);
213213
var expected = source
@@ -257,7 +257,7 @@ public void ToArray_SelectorAt_With_ValidData_Must_Succeed(int[] source, Func<in
257257
public void ToArray_SelectorAt_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func<int, int, string> selector)
258258
{
259259
// Arrange
260-
var pool = MemoryPool<string>.Shared;
260+
var pool = ArrayPool<string>.Shared;
261261
var wrapped = Wrap
262262
.AsValueEnumerable(source);
263263
var expected = source
@@ -309,7 +309,7 @@ public void ToArray_Predicate_Selector_With_ValidData_Must_Succeed(int[] source,
309309
public void ToArray_Predicate_Selector_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func<int, bool> predicate, Func<int, string> selector)
310310
{
311311
// Arrange
312-
var pool = MemoryPool<string>.Shared;
312+
var pool = ArrayPool<string>.Shared;
313313
var wrapped = Wrap
314314
.AsValueEnumerable(source);
315315
var expected = source

NetFabric.Hyperlinq.UnitTests/Conversion/ToArray/ToArray.ValueReadOnlyCollection.Tests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public void ToArray_With_ValidData_Collections_Must_Succeed(int[] source)
5959
public void ToArray_MemoryPool_Must_Succeed(int[] source)
6060
{
6161
// Arrange
62-
var pool = MemoryPool<int>.Shared;
62+
var pool = ArrayPool<int>.Shared;
6363
var wrapped = Wrap
6464
.AsValueReadOnlyCollection(source);
6565
var expected = source
@@ -107,7 +107,7 @@ public void ToArray_Predicate_With_ValidData_Must_Succeed(int[] source, Func<int
107107
public void ToArray_Predicate_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func<int, string> selector)
108108
{
109109
// Arrange
110-
var pool = MemoryPool<string>.Shared;
110+
var pool = ArrayPool<string>.Shared;
111111
var wrapped = Wrap
112112
.AsValueReadOnlyCollection(source);
113113
var expected = source
@@ -157,7 +157,7 @@ public void ToArray_SelectorAt_With_ValidData_Must_Succeed(int[] source, Func<in
157157
public void ToArray_SelectorAt_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func<int, int, string> selector)
158158
{
159159
// Arrange
160-
var pool = MemoryPool<string>.Shared;
160+
var pool = ArrayPool<string>.Shared;
161161
var wrapped = Wrap
162162
.AsValueReadOnlyCollection(source);
163163
var expected = source

NetFabric.Hyperlinq.UnitTests/Conversion/ToArray/ToArrayAsync.AsyncValueEnumerable.Tests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public async ValueTask ToArrayAsync_With_ValidData_Must_Succeed(int[] source)
3939
public async ValueTask ToArrayAsync_MemoryPool_Must_Succeed(int[] source)
4040
{
4141
// Arrange
42-
var pool = MemoryPool<int>.Shared;
42+
var pool = ArrayPool<int>.Shared;
4343
var wrapped = Wrap
4444
.AsAsyncValueEnumerable(source);
4545
var expected = source
@@ -89,7 +89,7 @@ public async ValueTask ToArrayAsync_Predicate_With_ValidData_Must_Succeed(int[]
8989
public async ValueTask ToArrayAsync_Predicate_MemoryPool_Must_Succeed(int[] source, Func<int, bool> predicate)
9090
{
9191
// Arrange
92-
var pool = MemoryPool<int>.Shared;
92+
var pool = ArrayPool<int>.Shared;
9393
var wrapped = Wrap
9494
.AsAsyncValueEnumerable(source);
9595
var expected = source
@@ -141,7 +141,7 @@ public async ValueTask ToArrayAsync_PredicateAt_With_ValidData_Must_Succeed(int[
141141
public async ValueTask ToArrayAsync_PredicateAt_MemoryPool_Must_Succeed(int[] source, Func<int, int, bool> predicate)
142142
{
143143
// Arrange
144-
var pool = MemoryPool<int>.Shared;
144+
var pool = ArrayPool<int>.Shared;
145145
var wrapped = Wrap
146146
.AsAsyncValueEnumerable(source);
147147
var expected = source
@@ -193,7 +193,7 @@ public async ValueTask ToArrayAsync_Selector_With_ValidData_Must_Succeed(int[] s
193193
public async ValueTask ToArrayAsync_Selector_MemoryPool_Must_Succeed(int[] source, Func<int, string> selector)
194194
{
195195
// Arrange
196-
var pool = MemoryPool<string>.Shared;
196+
var pool = ArrayPool<string>.Shared;
197197
var wrapped = Wrap
198198
.AsAsyncValueEnumerable(source);
199199
var expected = source
@@ -245,7 +245,7 @@ public async ValueTask ToArrayAsync_SelectorAt_With_ValidData_Must_Succeed(int[]
245245
public async ValueTask ToArrayAsync_SelectorAt_MemoryPool_Must_Succeed(int[] source, Func<int, int, string> selector)
246246
{
247247
// Arrange
248-
var pool = MemoryPool<string>.Shared;
248+
var pool = ArrayPool<string>.Shared;
249249
var wrapped = Wrap
250250
.AsAsyncValueEnumerable(source);
251251
var expected = source
@@ -300,7 +300,7 @@ public async ValueTask ToArrayAsync_Predicate_Selector_With_ValidData_Must_Succe
300300
public async ValueTask ToArrayAsync_Predicate_Selector_MemoryPool_Must_Succeed(int[] source, Func<int, bool> predicate, Func<int, string> selector)
301301
{
302302
// Arrange
303-
var pool = MemoryPool<string>.Shared;
303+
var pool = ArrayPool<string>.Shared;
304304
var wrapped = Wrap
305305
.AsAsyncValueEnumerable(source);
306306
var expected = source

NetFabric.Hyperlinq.UnitTests/Set/Distinct/Distinct.ArraySegment.Tests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void Distinct_ToArray_With_ValidData_Must_Succeed(int[] source, int skip,
8080
public void Distinct_ToArray_MemoryPool_With_ValidData_Must_Succeed(int[] source, int skip, int take)
8181
{
8282
// Arrange
83-
var pool = MemoryPool<int>.Shared;
83+
var pool = ArrayPool<int>.Shared;
8484
var (offset, count) = Utils.SkipTake(source.Length, skip, take);
8585
var wrapped = new ArraySegment<int>(source, offset, count);
8686
var expected = wrapped

NetFabric.Hyperlinq.UnitTests/Set/Distinct/Distinct.AsyncValueEnumerable.Tests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public async ValueTask Distinct_ToArrayAsync_With_ValidData_Must_Succeed(int[] s
6060
public async ValueTask Distinct_ToArrayAsync_MemoryPool_With_ValidData_Must_Succeed(int[] source)
6161
{
6262
// Arrange
63-
var pool = MemoryPool<int>.Shared;
63+
var pool = ArrayPool<int>.Shared;
6464
var wrapped = Wrap.AsAsyncValueEnumerable(source);
6565
var expected = source
6666
.Distinct()

0 commit comments

Comments
 (0)