Skip to content

Commit d6bb02c

Browse files
committed
Set constructors as internal
1 parent 9e92c9f commit d6bb02c

16 files changed

+165
-19
lines changed

NetFabric.Hyperlinq.SourceGenerator.UnitTests/GenerateSourceTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ public static TheoryData<string[], string> GeneratorSources
5353
new[] { "TestData/Source/AsValueEnumerable.TestList.cs" },
5454
"TestData/Results/AsValueEnumerable.TestList.cs"
5555
},
56+
{
57+
new[] { "TestData/Source/AsValueEnumerable.TestListWithExplicitInterfaces.cs" },
58+
"TestData/Results/AsValueEnumerable.TestListWithExplicitInterfaces.cs"
59+
},
5660
{
5761
new[] { "TestData/Source/AsValueEnumerable.TestReadOnlyList.cs" },
5862
"TestData/Results/AsValueEnumerable.TestReadOnlyList.cs"

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestCollection<TestValueType> source;
1919

20-
public AsValueEnumerable_TestCollection_TestValueType_(TestCollection<TestValueType> source) => this.source = source;
20+
internal AsValueEnumerable_TestCollection_TestValueType_(TestCollection<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, TestCollection<TestValueType>.Enumerator>
2323

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestEnumerableWithInterfacelessPublicEnumerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestEnumerableWithInterfacelessPublicEnumerator<TestValueType> source;
1919

20-
public AsValueEnumerable_TestEnumerableWithInterfacelessPublicEnumerator_TestValueType_(TestEnumerableWithInterfacelessPublicEnumerator<TestValueType> source) => this.source = source;
20+
internal AsValueEnumerable_TestEnumerableWithInterfacelessPublicEnumerator_TestValueType_(TestEnumerableWithInterfacelessPublicEnumerator<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, ValueEnumerator<TestValueType>>
2323

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestEnumerableWithNoInterfaces.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestEnumerableWithNoInterfaces<TestValueType> source;
1919

20-
public AsValueEnumerable_TestEnumerableWithNoInterfaces_TestValueType_(TestEnumerableWithNoInterfaces<TestValueType> source) => this.source = source;
20+
internal AsValueEnumerable_TestEnumerableWithNoInterfaces_TestValueType_(TestEnumerableWithNoInterfaces<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, AsValueEnumerable_TestEnumerableWithNoInterfaces_TestValueType_.Enumerator>
2323

@@ -35,7 +35,7 @@ public struct Enumerator: IEnumerator<TestValueType>
3535
{
3636
readonly TestEnumerableWithNoInterfaces<TestValueType>.Enumerator source;
3737

38-
public Enumerator(TestEnumerableWithNoInterfaces<TestValueType>.Enumerator source) => this.source = source;
38+
internal Enumerator(TestEnumerableWithNoInterfaces<TestValueType>.Enumerator source) => this.source = source;
3939

4040
public TestValueType Current => source.Current;
4141

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose<TestValueType> source;
1919

20-
public TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose_TestValueType__AsValueEnumerable(TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose<TestValueType> source) => this.source = source;
20+
internal TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose_TestValueType__AsValueEnumerable(TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose_TestValueType__AsValueEnumerable.Enumerator>
2323

@@ -35,7 +35,7 @@ public struct Enumerator: IEnumerator<TestValueType>
3535
{
3636
readonly TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose<TestValueType>.Enumerator source;
3737

38-
public Enumerator(TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose<TestValueType>.Enumerator source) => this.source = source;
38+
internal Enumerator(TestEnumerableWithNoInterfacesButEnumeratorWithResetAndDispose<TestValueType>.Enumerator source) => this.source = source;
3939

4040
public TestValueType Current => source.Current;
4141

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestEnumerableWithReferenceTypeEnumerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestEnumerableWithReferenceTypeEnumerator<TestValueType> source;
1919

20-
public AsValueEnumerable_TestEnumerableWithReferenceTypeEnumerator_TestValueType_(TestEnumerableWithReferenceTypeEnumerator<TestValueType> source) => this.source = source;
20+
internal AsValueEnumerable_TestEnumerableWithReferenceTypeEnumerator_TestValueType_(TestEnumerableWithReferenceTypeEnumerator<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, ValueEnumerator<TestValueType>>
2323

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestEnumerableWithValueTypeEnumerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestEnumerableWithValueTypeEnumerator<TestValueType> source;
1919

20-
public AsValueEnumerable_TestEnumerableWithValueTypeEnumerator_TestValueType_(TestEnumerableWithValueTypeEnumerator<TestValueType> source) => this.source = source;
20+
internal AsValueEnumerable_TestEnumerableWithValueTypeEnumerator_TestValueType_(TestEnumerableWithValueTypeEnumerator<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, TestEnumerableWithValueTypeEnumerator<TestValueType>.Enumerator>
2323

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestList.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestList<TestValueType> source;
1919

20-
public AsValueEnumerable_TestList_TestValueType_(TestList<TestValueType> source) => this.source = source;
20+
internal AsValueEnumerable_TestList_TestValueType_(TestList<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, TestList<TestValueType>.Enumerator>
2323

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#nullable enable
2+
3+
using System;
4+
using System.Collections;
5+
using System.Collections.Generic;
6+
using System.Runtime.CompilerServices;
7+
8+
namespace NetFabric.Hyperlinq
9+
{
10+
static partial class GeneratedExtensionMethods
11+
{
12+
13+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
14+
public static AsValueEnumerable_TestListWithExplicitInterfaces_TestValueType_<TestListWithExplicitInterfaces<TestValueType>> AsValueEnumerable(this TestListWithExplicitInterfaces<TestValueType> source) => new(source);
15+
16+
public readonly struct AsValueEnumerable_TestListWithExplicitInterfaces_TestValueType_<T>: IValueReadOnlyList<TestValueType, ValueEnumerator<TestValueType>>, IList<TestValueType> where T: IList<TestValueType>
17+
{
18+
readonly T source;
19+
20+
internal AsValueEnumerable_TestListWithExplicitInterfaces_TestValueType_(T source) => this.source = source;
21+
22+
// Implement IValueEnumerable<TestValueType, ValueEnumerator<TestValueType>>
23+
24+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
25+
public ValueEnumerator<TestValueType> GetEnumerator() => new(source.GetEnumerator());
26+
27+
IEnumerator<TestValueType> IEnumerable<TestValueType>.GetEnumerator() => source.GetEnumerator();
28+
29+
IEnumerator IEnumerable.GetEnumerator() => source.GetEnumerator();
30+
31+
// Implement ICollection<TestValueType>
32+
33+
public int Count => source.Count;
34+
35+
public bool IsReadOnly => true;
36+
37+
void ICollection<TestValueType>.Add(TestValueType item) => throw new NotSupportedException();
38+
39+
bool ICollection<TestValueType>.Remove(TestValueType item) => throw new NotSupportedException();
40+
41+
void ICollection<TestValueType>.Clear() => throw new NotSupportedException();
42+
43+
public void CopyTo(Span<TestValueType> span)
44+
{
45+
if (Count is 0) return;
46+
if (span.Length < Count) throw new ArgumentException("Destination span was not long enough.", nameof(span));
47+
48+
var index = 0;
49+
foreach (var current in this)
50+
{
51+
span[index] = current;
52+
checked { index++; }
53+
}
54+
}
55+
56+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
57+
public bool Contains(TestValueType item) => source.Contains(item);
58+
59+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
60+
public void CopyTo(TestValueType[] array, int arrayIndex) => source.CopyTo(array, arrayIndex);
61+
62+
// Implement IList<TestValueType>
63+
64+
public TestValueType this[int index] => source[index];
65+
66+
TestValueType IList<TestValueType>.this[int index]
67+
{
68+
get => source[index];
69+
set => throw new NotSupportedException();
70+
}
71+
72+
void IList<TestValueType>.Insert(int index, TestValueType item) => throw new NotSupportedException();
73+
74+
void IList<TestValueType>.RemoveAt(int index) => throw new NotSupportedException();
75+
76+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
77+
public int IndexOf(TestValueType item) => source.IndexOf(item);
78+
}
79+
}
80+
}

NetFabric.Hyperlinq.SourceGenerator.UnitTests/TestData/Results/AsValueEnumerable.TestReadOnlyCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static partial class GeneratedExtensionMethods
1717
{
1818
readonly TestReadOnlyCollection<TestValueType> source;
1919

20-
public AsValueEnumerable_TestReadOnlyCollection_TestValueType_(TestReadOnlyCollection<TestValueType> source) => this.source = source;
20+
internal AsValueEnumerable_TestReadOnlyCollection_TestValueType_(TestReadOnlyCollection<TestValueType> source) => this.source = source;
2121

2222
// Implement IValueEnumerable<TestValueType, TestReadOnlyCollection<TestValueType>.Enumerator>
2323

0 commit comments

Comments
 (0)