Skip to content

Commit feffe51

Browse files
authored
v0.7.0-beta2 Hotfixes (#169)
1 parent a2ef0c9 commit feffe51

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

.github/releases/v0.7.0-beta3.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
Enhancements:
21

3-
-
2+
Bug Fixes:
3+
4+
- Fixed an issue where the generator would attempt to generate validations for collection types, which would result in a stack overflow. The validations generator no longer recurses into these types, or any type that lives in an assembly that starts with "System"
5+
- Fixed an issue where validations were being generated for private and protected properties.

src/Generator/ValidationsGenerator.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,13 @@ public IEnumerable<StatementSyntax> GenerateValidations(INamedTypeSymbol? typeTo
5555
{
5656
typeToValidate ??= this.typeToValidate;
5757

58-
var members = typeToValidate.GetMembers().OfType<IPropertySymbol>() ?? ImmutableArray<IPropertySymbol>.Empty;
59-
foreach (var member in members)
58+
var members = from member in typeToValidate.GetMembers().OfType<IPropertySymbol>()
59+
where member.DeclaredAccessibility == Accessibility.Public
60+
select member;
61+
62+
foreach (var member in members ?? ImmutableArray<IPropertySymbol>.Empty)
6063
{
61-
if (member.Type is INamedTypeSymbol memberType && memberType.ContainingAssembly.Name != "System")
64+
if (member.Type is INamedTypeSymbol memberType && !memberType.ContainingAssembly.Name.StartsWith("System"))
6265
{
6366
ExpressionSyntax newParentExpression = parentExpression == null
6467
? ConditionalAccessExpression(

tests/Compilation/Projects/CustomResources/ResourceProperties.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using System.ComponentModel.DataAnnotations;
23

34
namespace Lambdajection.CompilationTests.CustomResources
@@ -9,6 +10,10 @@ public class ResourceProperties
910

1011
public bool ShouldFail { get; set; } = false;
1112

13+
// This is a test - the validations generator should not recurse into collection types
14+
// (it will cause a stack overflow if it does recurse, so simply running it will suffice)
15+
public List<string> ValidationsGeneratorShouldNotRecurseIntoCollections { get; set; }
16+
1217
public string ErrorMessage { get; set; } = string.Empty;
1318
}
1419
}

0 commit comments

Comments
 (0)