Skip to content

Commit 34b0922

Browse files
Exclude interfaces from implementing IValidationTarget (#164)
1 parent e7ea085 commit 34b0922

File tree

68 files changed

+175
-86
lines changed

Some content is hidden

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

68 files changed

+175
-86
lines changed

src/Immediate.Validations.Generators/Templates/Validations.sbntxt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ partial {{ c.type }} {{ c.name }}
1313
{
1414
{{~ end ~}}
1515

16-
partial {{ class.type }} {{ class.name }}
16+
partial {{ class.type }} {{ class.name }}{{ if class.type != "interface" }} : IValidationTarget{{ end }}
1717
{
18+
{{~ if class.type != "interface" ~}}
1819
ValidationResult IValidationTarget.Validate() =>
1920
Validate(this, []);
2021

2122
ValidationResult IValidationTarget.Validate(ValidationResult errors) =>
2223
Validate(this, errors);
2324

25+
{{~ end ~}}
2426
static ValidationResult IValidationTarget<{{ class.name }}>.Validate({{ class.name; if is_reference_type; "?"; end }} target) =>
2527
Validate(target, []);
2628

src/Immediate.Validations.Shared/IValidationTarget.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public interface IValidationTarget
3333
/// <typeparam name="T">
3434
/// The type which should be validated.
3535
/// </typeparam>
36-
public interface IValidationTarget<T> : IValidationTarget
36+
public interface IValidationTarget<T>
3737
{
3838
/// <summary>
3939
/// A method which can be used to validate instances of the type <typeparamref name="T"/>.

tests/Immediate.Validations.Tests/CodeFixTests/AddIValidationTargetCodefixProviderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public sealed record {|IV0013:Data|}
2020
namespace Immediate.Validations.Shared;
2121
2222
[Validate]
23-
public sealed record Data : {|CS0535:{|CS0535:{|CS0535:{|CS0535:IValidationTarget<Data>|}|}|}|}
23+
public sealed record Data : {|CS0535:{|CS0535:IValidationTarget<Data>|}|}
2424
{
2525
}
2626
"""
@@ -46,7 +46,7 @@ public void Dispose() { }
4646
namespace Immediate.Validations.Shared;
4747
4848
[Validate]
49-
public sealed record Data : IDisposable, {|CS0535:{|CS0535:{|CS0535:{|CS0535:IValidationTarget<Data>|}|}|}|}
49+
public sealed record Data : IDisposable, {|CS0535:{|CS0535:IValidationTarget<Data>|}|}
5050
{
5151
public void Dispose() { }
5252
}

tests/Immediate.Validations.Tests/GeneratorTests/ClassLocationTests.ImplementBaseValidationInterface#IV.Namespace..BaseInterface.g.verified.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ namespace Namespace;
1010

1111
partial interface BaseInterface
1212
{
13-
ValidationResult IValidationTarget.Validate() =>
14-
Validate(this, []);
15-
16-
ValidationResult IValidationTarget.Validate(ValidationResult errors) =>
17-
Validate(this, errors);
18-
1913
static ValidationResult IValidationTarget<BaseInterface>.Validate(BaseInterface? target) =>
2014
Validate(target, []);
2115

tests/Immediate.Validations.Tests/GeneratorTests/ClassLocationTests.ImplementBaseValidationInterface#IV.Namespace..ValidateClass.g.verified.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace Namespace;
99

1010

11-
partial class ValidateClass
11+
partial class ValidateClass : IValidationTarget
1212
{
1313
ValidationResult IValidationTarget.Validate() =>
1414
Validate(this, []);

tests/Immediate.Validations.Tests/GeneratorTests/ClassLocationTests.InheritBaseValidationTarget#IV.Namespace..BaseClass.g.verified.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace Namespace;
99

1010

11-
partial class BaseClass
11+
partial class BaseClass : IValidationTarget
1212
{
1313
ValidationResult IValidationTarget.Validate() =>
1414
Validate(this, []);

tests/Immediate.Validations.Tests/GeneratorTests/ClassLocationTests.InheritBaseValidationTarget#IV.Namespace..ValidateClass.g.verified.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace Namespace;
99

1010

11-
partial class ValidateClass
11+
partial class ValidateClass : IValidationTarget
1212
{
1313
ValidationResult IValidationTarget.Validate() =>
1414
Validate(this, []);

tests/Immediate.Validations.Tests/GeneratorTests/ClassLocationTests.InheritedClassesTest#IV.Namespace.OuterClass.BaseClass.g.verified.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Namespace;
1010
partial class OuterClass
1111
{
1212

13-
partial class BaseClass
13+
partial class BaseClass : IValidationTarget
1414
{
1515
ValidationResult IValidationTarget.Validate() =>
1616
Validate(this, []);

tests/Immediate.Validations.Tests/GeneratorTests/ClassLocationTests.InheritedClassesTest#IV.Namespace.OuterClass.SubClass.g.verified.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Namespace;
1010
partial class OuterClass
1111
{
1212

13-
partial class SubClass
13+
partial class SubClass : IValidationTarget
1414
{
1515
ValidationResult IValidationTarget.Validate() =>
1616
Validate(this, []);

tests/Immediate.Validations.Tests/GeneratorTests/ClassLocationTests.InheritedInterfacesTest#IV.Namespace..IBaseInterface.g.verified.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ namespace Namespace;
1010

1111
partial interface IBaseInterface
1212
{
13-
ValidationResult IValidationTarget.Validate() =>
14-
Validate(this, []);
15-
16-
ValidationResult IValidationTarget.Validate(ValidationResult errors) =>
17-
Validate(this, errors);
18-
1913
static ValidationResult IValidationTarget<IBaseInterface>.Validate(IBaseInterface? target) =>
2014
Validate(target, []);
2115

0 commit comments

Comments
 (0)