Compare commits

1 Commits

Author SHA1 Message Date
Adam Hathcock bdff84b9aa review feedback 2024-05-22 08:34:43 +01:00
9 changed files with 35 additions and 18 deletions
+1 -1
View File
@@ -350,4 +350,4 @@ MigrationBackup/
.ionide/
/tests/ProxyInterfaceSourceGeneratorTests/Destination/Disposable/*.g.cs
.idea/.idea.ProxyInterfaceSourceGenerator Solution/.idea/
.idea/
@@ -7,7 +7,9 @@ namespace ProxyInterfaceConsumer
public int HouseNumber { get; set; }
public event EventHandler<EventArgs> MyEvent;
public int Weird { get; set; }
public int Weird2()
{
return 0;
@@ -27,7 +27,7 @@ namespace ProxyInterfaceGenerator
public Type Type {{ get; }}
public bool ProxyBaseClasses {{ get; }}
public ProxyClassAccessibility Accessibility {{ get; }}
public string[] MembersToIgnore {{ get; }}
public string[]? MembersToIgnore {{ get; }}
public ProxyAttribute(Type type) : this(type, false, ProxyClassAccessibility.Public)
{{
@@ -41,11 +41,15 @@ namespace ProxyInterfaceGenerator
{{
}}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, Array.Empty<string>())
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, null)
{{
}}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[] membersToIgnore)
public ProxyAttribute(Type type, string[]? membersToIgnore) : this(type, false, ProxyClassAccessibility.Public, null)
{{
}}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[]? membersToIgnore)
{{
Type = type;
ProxyBaseClasses = proxyBaseClasses;
@@ -34,7 +34,8 @@ internal class ProxyData
string fullMetadataTypeName,
List<string> usings,
bool proxyBaseClasses,
ProxyClassAccessibility accessibility, string[] membersToIgnore)
ProxyClassAccessibility accessibility,
string[] membersToIgnore)
{
Namespace = @namespace ?? throw new ArgumentNullException(nameof(@namespace));
NamespaceDot = namespaceDot ?? throw new ArgumentNullException(nameof(namespaceDot));
@@ -93,12 +93,12 @@ internal static class AttributeArgumentListParser
return false;
}
private static bool TryParseAsStringArray(ExpressionSyntax expressionSyntax, out string[] value)
private static bool TryParseAsStringArray(ExpressionSyntax expressionSyntax, [NotNullWhen(true)] out string[] value)
{
if (expressionSyntax is ImplicitArrayCreationExpressionSyntax lmplicitArrayCreationExpressionSyntax)
if (expressionSyntax is ImplicitArrayCreationExpressionSyntax implicitArrayCreationExpressionSyntax)
{
var strings = new List<string>();
foreach (var expression in lmplicitArrayCreationExpressionSyntax.Initializer.Expressions)
foreach (var expression in implicitArrayCreationExpressionSyntax.Initializer.Expressions)
{
if (expression.GetFirstToken().Value is string s)
{
@@ -108,7 +108,8 @@ internal static class AttributeArgumentListParser
value = strings.ToArray();
return true;
}
value = Array.Empty<string>();
value = default;
return false;
}
}
@@ -5,5 +5,6 @@ internal record ProxyInterfaceGeneratorAttributeArguments(string FullyQualifiedD
public bool ProxyBaseClasses { get; set; }
public ProxyClassAccessibility Accessibility { get; set; }
public string[] MembersToIgnore { get; set; } = Array.Empty<string>();
}
@@ -86,9 +86,9 @@ internal static class MemberHelper
var membersQuery = classSymbol.Symbol.GetMembers().OfType<T>()
.Where(m => m.DeclaredAccessibility == Accessibility.Public);
var f = filters.ToList();
f.Add(x => !proxyData.MembersToIgnore.Contains(x.Name));
foreach (var filter in f)
var allFilters = filters.ToList();
allFilters.Add(x => !proxyData.MembersToIgnore.Contains(x.Name));
foreach (var filter in allFilters)
{
membersQuery = membersQuery.Where(filter);
}
@@ -21,7 +21,7 @@ namespace ProxyInterfaceGenerator
public Type Type { get; }
public bool ProxyBaseClasses { get; }
public ProxyClassAccessibility Accessibility { get; }
public string[] MembersToIgnore { get; }
public string[]? MembersToIgnore { get; }
public ProxyAttribute(Type type) : this(type, false, ProxyClassAccessibility.Public)
{
@@ -35,11 +35,15 @@ namespace ProxyInterfaceGenerator
{
}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, Array.Empty<string>())
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, null)
{
}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[] membersToIgnore)
public ProxyAttribute(Type type, string[]? membersToIgnore) : this(type, false, ProxyClassAccessibility.Public, null)
{
}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[]? membersToIgnore)
{
Type = type;
ProxyBaseClasses = proxyBaseClasses;
@@ -21,7 +21,7 @@ namespace ProxyInterfaceGenerator
public Type Type { get; }
public bool ProxyBaseClasses { get; }
public ProxyClassAccessibility Accessibility { get; }
public string[] MembersToIgnore { get; }
public string[]? MembersToIgnore { get; }
public ProxyAttribute(Type type) : this(type, false, ProxyClassAccessibility.Public)
{
@@ -35,11 +35,15 @@ namespace ProxyInterfaceGenerator
{
}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, Array.Empty<string>())
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, null)
{
}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[] membersToIgnore)
public ProxyAttribute(Type type, string[]? membersToIgnore) : this(type, false, ProxyClassAccessibility.Public, null)
{
}
public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[]? membersToIgnore)
{
Type = type;
ProxyBaseClasses = proxyBaseClasses;