Skip to content

Commit

Permalink
Clean up empty switch warnings on dictionary and list object accessors
Browse files Browse the repository at this point in the history
  • Loading branch information
EdwardCooke committed Dec 14, 2022
1 parent 49f806b commit 640e84d
Showing 1 changed file with 28 additions and 22 deletions.
50 changes: 28 additions & 22 deletions YamlDotNet.Analyzers/ObjectAccessorFileGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,41 +42,47 @@ public override void Write(ClassSyntaxReceiver classSyntaxReceiver)

Write("public void Set(string propertyName, object target, object value)");
Write("{"); Indent();
Write($"var v = ({classObject.FullName})target;");
Write("switch (propertyName)");
Write("{"); Indent();
foreach (var field in classObject.FieldSymbols)
if (classObject.FieldSymbols.Count > 0 || classObject.PropertySymbols.Count > 0)
{
if (!field.IsReadOnly)
Write($"var v = ({classObject.FullName})target;");
Write("switch (propertyName)");
Write("{"); Indent();
foreach (var field in classObject.FieldSymbols)
{
Write(GetSetter(field.Name, field.Type));
if (!field.IsReadOnly)
{
Write(GetSetter(field.Name, field.Type));
}
}
}
foreach (var property in classObject.PropertySymbols)
{
if (property.SetMethod != null)
foreach (var property in classObject.PropertySymbols)
{
Write(GetSetter(property.Name, property.Type));
if (property.SetMethod != null)
{
Write(GetSetter(property.Name, property.Type));
}
}
Write("default: throw new ArgumentOutOfRangeException(\"propertyName\", $\"{propertyName} does not exist or is not settable\");");
UnIndent(); Write("}");
}
Write("default: throw new ArgumentOutOfRangeException(\"propertyName\", $\"{propertyName} does not exist or is not settable\");");
UnIndent(); Write("}");
UnIndent(); Write("}");

Write("public object Read(string propertyName, object target)");
Write("{"); Indent();
Write($"var v = ({classObject.FullName})target;");
Write("switch (propertyName)");
Write("{"); Indent();
foreach (var field in classObject.FieldSymbols)
if (classObject.FieldSymbols.Count > 0 || classObject.PropertySymbols.Count > 0)
{
Write(GetReader(field.Name));
}
foreach (var property in classObject.PropertySymbols)
{
Write(GetReader(property.Name));
Write("switch (propertyName)");
Write("{"); Indent();
foreach (var field in classObject.FieldSymbols)
{
Write(GetReader(field.Name));
}
foreach (var property in classObject.PropertySymbols)
{
Write(GetReader(property.Name));
}
UnIndent(); Write("}");
}
UnIndent(); Write("}");
Write("return null;");
UnIndent(); Write("}");
UnIndent(); Write("}");
Expand Down

0 comments on commit 640e84d

Please sign in to comment.