Skip to content

Commit 0f0d3c1

Browse files
committed
feat: emit matcher usage and update matcher specs
- add matcher usage attributes on generated overloads and stubs for matched/no-overload namespaces - add MOG011 diagnostic handling plus matcher-usage attribute source emission - convert matcher definitions in acceptance criteria/docs to interfaces and update related expectations - allow OverloadGenerationOptionsAttribute on class/struct/interface and load acceptance criteria from subfolders
1 parent 23e0fa9 commit 0f0d3c1

34 files changed

+300
-64
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ public sealed class Customer
6060
public void Update(string param_1, int param_2) { }
6161
}
6262

63-
internal static class CustomerMatcher
63+
internal interface CustomerMatcher
6464
{
6565
[GenerateOverloads(nameof(param_2))]
66-
internal static extern void Update(string param_1, int param_2);
66+
void Update(string param_1, int param_2);
6767
}
6868
```
6969

@@ -92,10 +92,10 @@ public static class MathUtils
9292
public static void Multiply(int param_1, int param_2) { }
9393
}
9494

95-
internal static class MathMatchers
95+
internal interface MathMatchers
9696
{
9797
[GenerateOverloads(nameof(param_2))]
98-
internal static extern void Multiply(int param_1, int param_2);
98+
void Multiply(int param_1, int param_2);
9999
}
100100
```
101101

ref/Tenekon.MethodOverloads.AcceptanceCriterias/.editorconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
resharper_inconsistent_naming_highlighting=none
33
resharper_prefer_concrete_value_over_default_highlighting=none
44
resharper_partial_type_with_single_part_highlighting=none
5+
resharper_check_namespace_highlighting=none
56

67
[*generated.cs]
78
generated_code = true

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_1.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Diagnostics.CodeAnalysis;
12
using Tenekon.MethodOverloads.SourceGenerator;
23

34
namespace Tenekon.MethodOverloads.AcceptanceCriterias;
@@ -28,9 +29,6 @@ public abstract class Class_1
2829

2930
[GenerateOverloads(nameof(cancellationToken))]
3031
public abstract void Case_7(CancellationToken cancellationToken);
31-
32-
[GenerateOverloads]
33-
public abstract void Case_8();
3432
}
3533

3634
/// <summary>
@@ -73,4 +71,3 @@ public static class Class_1_AcceptanceCriterias
7371
public static void Case_7(this Class_1 source) => source.Case_7(cancellationToken: default);
7472
}
7573

76-

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_16.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
namespace Tenekon.MethodOverloads.AcceptanceCriterias;
55

6-
internal class Class_16_Matcher
6+
internal interface Class_16_Matcher
77
{
88
[GenerateOverloads(nameof(param_2))]
9-
internal static extern void Matcher_1(int param_1, string? param_2);
9+
void Matcher_1(int param_1, string? param_2);
1010
}
1111

1212
/// <summary>

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_18.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
namespace Tenekon.MethodOverloads.AcceptanceCriterias;
55

66
[OverloadGenerationOptions(RangeAnchorMatchMode = RangeAnchorMatchMode.TypeAndName)]
7-
internal class Class_18_Matcher
7+
internal interface Class_18_Matcher
88
{
99
[GenerateOverloads(nameof(param_2))]
10-
internal static extern void Matcher_1(int param_1, string? param_2);
10+
void Matcher_1(int param_1, string? param_2);
1111

1212
[GenerateOverloads(nameof(param_2))]
13-
internal static extern void Matcher_2(int param_1, string? param_2);
13+
void Matcher_2(int param_1, string? param_2);
1414
}
1515

1616
/// <summary>

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_19.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
namespace Tenekon.MethodOverloads.AcceptanceCriterias;
44

5-
internal class Class_19_Matcher
5+
internal interface Class_19_Matcher
66
{
77
[GenerateOverloads(nameof(param_2))]
8-
internal static extern void Matcher_1(int param_1, string? param_2);
8+
void Matcher_1(int param_1, string? param_2);
99
}
1010

1111
/// <summary>

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_20.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
namespace Tenekon.MethodOverloads.AcceptanceCriterias;
55

6-
internal class Class_20_Matcher
6+
internal interface Class_20_Matcher
77
{
88
[GenerateOverloads(nameof(param_2))]
9-
internal static extern void Matcher_1(int param_1, string? param_2);
9+
void Matcher_1(int param_1, string? param_2);
1010
}
1111

1212
/// <summary>

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_21.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,17 @@ public static void RefOmitted(int required, ref int refValue) { }
3434
public static void Duplicate(int value, string optional) { }
3535

3636
public static void Duplicate(int value) { }
37+
38+
[GenerateOverloads]
39+
[SuppressMessage("MethodOverloadsGenerator", "MOG011")]
40+
public static void Parameterless() { }
3741
}
3842

39-
internal static class Class_21_Matcher
43+
internal interface Class_21_Matcher
4044
{
4145
[SuppressMessage("MethodOverloadsGenerator", "MOG002")]
4246
[GenerateOverloads(nameof(m))]
43-
internal static void MatcherSignature(int m) { }
47+
void MatcherSignature(int m);
4448
}
4549

4650
[GenerateMethodOverloads(Matchers = [typeof(Class_21_Matcher)])]

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_23.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
namespace Tenekon.MethodOverloads.AcceptanceCriterias;
44

5-
internal static class Class_23_Matcher
5+
internal interface Class_23_Matcher
66
{
77
[GenerateOverloads(nameof(param_2))]
8-
internal static extern void Matcher_1(int param_1, string? param_2);
8+
void Matcher_1(int param_1, string? param_2);
99
}
1010

1111
/// <summary>

ref/Tenekon.MethodOverloads.AcceptanceCriterias/Class_24.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
namespace Tenekon.MethodOverloads.AcceptanceCriterias;
44

5-
internal static class Class_24_Matcher
5+
internal interface Class_24_Matcher
66
{
77
[GenerateOverloads(nameof(param_2))]
8-
internal static extern void Matcher_1(int param_1, string? param_2);
8+
void Matcher_1(int param_1, string? param_2);
99
}
1010

1111
/// <summary>
@@ -29,7 +29,6 @@ public interface Class_24_InterfaceTarget
2929
void Case_1(int param_1, string? param_2);
3030
}
3131

32-
[System.Diagnostics.CodeAnalysis.SuppressMessage("ReSharper", "PreferConcreteValueOverDefault")]
3332
public static class Class_24_AcceptanceCriterias
3433
{
3534
public static void Case_1(this Class_24_ClassTarget source, int param_1) =>

0 commit comments

Comments
 (0)