Skip to content

Commit 7923dd8

Browse files
authored
Merge pull request #985 from EdwardCooke/ec-fixes
Removes sealed from a number of classes and respects empty strings in enummember +semver:fix
2 parents c664e43 + 6fa502a commit 7923dd8

12 files changed

+23
-17
lines changed

YamlDotNet.Analyzers.StaticGenerator/SerializableSyntaxReceiver.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ private void HandleEnum(ITypeSymbol type)
210210
if (enumMember != null)
211211
{
212212
var argument = enumMember.NamedArguments.FirstOrDefault(x => x.Key == "Value");
213-
if (!string.IsNullOrWhiteSpace(argument.Value.Value as string))
213+
if ((argument.Value.Value as string) != null)
214214
{
215215
memberValue = (string)argument.Value.Value!;
216216
}

YamlDotNet.Test/Analyzers/StaticGenerator/ObjectTests.cs

+8-2
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,8 @@ public void EnumSerializationUsesEnumMemberAttribute()
231231
public void EnumSerializationUsesEnumMemberAttributeWithEmptyValue()
232232
{
233233
var serializer = new StaticSerializerBuilder(new StaticContext()).Build();
234-
var actual = serializer.Serialize(EnumMemberedEnum.EmptyValue);
235-
Assert.Equal("EmptyValue", actual.TrimNewLines());
234+
var actual = serializer.Serialize(new EnumMemberedEnumHarness { Test = EnumMemberedEnum.EmptyValue });
235+
Assert.Equal("Test: ''", actual.TrimNewLines());
236236
}
237237

238238
[Fact]
@@ -243,6 +243,12 @@ public void EnumSerializationUsesEnumMemberAttributeWithNullValue()
243243
Assert.Equal("NullValue", actual.TrimNewLines());
244244
}
245245

246+
[YamlSerializable]
247+
public class EnumMemberedEnumHarness
248+
{
249+
public EnumMemberedEnum Test { get; set; }
250+
}
251+
246252
[YamlSerializable]
247253
public enum EnumMemberedEnum
248254
{

YamlDotNet.Test/Serialization/SerializationTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1500,8 +1500,8 @@ public void EnumSerializationUsesEnumMemberAttribute()
15001500
public void EnumSerializationUsesEnumMemberAttributeWithEmptyValue()
15011501
{
15021502
var serializer = new SerializerBuilder().Build();
1503-
var actual = serializer.Serialize(EnumMemberedEnum.EmptyValue);
1504-
Assert.Equal("EmptyValue", actual.TrimNewLines());
1503+
var actual = serializer.Serialize(new { Test = EnumMemberedEnum.EmptyValue });
1504+
Assert.Equal("Test: ''", actual.TrimNewLines());
15051505
}
15061506

15071507
[Fact]

YamlDotNet/Serialization/ObjectFactories/DefaultObjectFactory.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace YamlDotNet.Serialization.ObjectFactories
3232
/// <summary>
3333
/// Creates objects using Activator.CreateInstance.
3434
/// </summary>
35-
public sealed class DefaultObjectFactory : ObjectFactoryBase
35+
public class DefaultObjectFactory : ObjectFactoryBase
3636
{
3737
private readonly Dictionary<Type, ConcurrentDictionary<Type, MethodInfo[]>> stateMethods = new()
3838
{

YamlDotNet/Serialization/TypeInspectors/CachedTypeInspector.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ namespace YamlDotNet.Serialization.TypeInspectors
3030
/// <summary>
3131
/// Wraps another <see cref="ITypeInspector"/> and applies caching.
3232
/// </summary>
33-
public sealed class CachedTypeInspector : TypeInspectorSkeleton
33+
public class CachedTypeInspector : TypeInspectorSkeleton
3434
{
3535
private readonly ITypeInspector innerTypeDescriptor;
3636
private readonly ConcurrentDictionary<Type, List<IPropertyDescriptor>> cache = new ConcurrentDictionary<Type, List<IPropertyDescriptor>>();

YamlDotNet/Serialization/TypeInspectors/CompositeTypeInspector.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace YamlDotNet.Serialization.TypeInspectors
2828
/// <summary>
2929
/// Aggregates the results from multiple <see cref="ITypeInspector" /> into a single one.
3030
/// </summary>
31-
public sealed class CompositeTypeInspector : TypeInspectorSkeleton
31+
public class CompositeTypeInspector : TypeInspectorSkeleton
3232
{
3333
private readonly IEnumerable<ITypeInspector> typeInspectors;
3434

YamlDotNet/Serialization/TypeInspectors/NamingConventionTypeInspector.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace YamlDotNet.Serialization.TypeInspectors
2929
/// Wraps another <see cref="ITypeInspector"/> and applies a
3030
/// naming convention to the names of the properties.
3131
/// </summary>
32-
public sealed class NamingConventionTypeInspector : TypeInspectorSkeleton
32+
public class NamingConventionTypeInspector : TypeInspectorSkeleton
3333
{
3434
private readonly ITypeInspector innerTypeDescriptor;
3535
private readonly INamingConvention namingConvention;

YamlDotNet/Serialization/TypeInspectors/ReadableAndWritablePropertiesTypeInspector.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace YamlDotNet.Serialization.TypeInspectors
2828
/// <summary>
2929
/// Returns the properties of a type that are both readable and writable.
3030
/// </summary>
31-
public sealed class ReadableAndWritablePropertiesTypeInspector : TypeInspectorSkeleton
31+
public class ReadableAndWritablePropertiesTypeInspector : TypeInspectorSkeleton
3232
{
3333
private readonly ITypeInspector innerTypeDescriptor;
3434

YamlDotNet/Serialization/TypeInspectors/ReadableFieldsTypeInspector.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ namespace YamlDotNet.Serialization.TypeInspectors
3030
/// <summary>
3131
/// Returns the properties and fields of a type that are readable.
3232
/// </summary>
33-
public sealed class ReadableFieldsTypeInspector : ReflectionTypeInspector
33+
public class ReadableFieldsTypeInspector : ReflectionTypeInspector
3434
{
3535
private readonly ITypeResolver typeResolver;
3636

@@ -46,7 +46,7 @@ public override IEnumerable<IPropertyDescriptor> GetProperties(Type type, object
4646
.Select(p => (IPropertyDescriptor)new ReflectionFieldDescriptor(p, typeResolver));
4747
}
4848

49-
private sealed class ReflectionFieldDescriptor : IPropertyDescriptor
49+
protected class ReflectionFieldDescriptor : IPropertyDescriptor
5050
{
5151
private readonly FieldInfo fieldInfo;
5252
private readonly ITypeResolver typeResolver;

YamlDotNet/Serialization/TypeInspectors/ReadablePropertiesTypeInspector.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ namespace YamlDotNet.Serialization.TypeInspectors
3030
/// <summary>
3131
/// Returns the properties of a type that are readable.
3232
/// </summary>
33-
public sealed class ReadablePropertiesTypeInspector : ReflectionTypeInspector
33+
public class ReadablePropertiesTypeInspector : ReflectionTypeInspector
3434
{
3535
private readonly ITypeResolver typeResolver;
3636
private readonly bool includeNonPublicProperties;
@@ -60,7 +60,7 @@ public override IEnumerable<IPropertyDescriptor> GetProperties(Type type, object
6060
.Select(p => (IPropertyDescriptor)new ReflectionPropertyDescriptor(p, typeResolver));
6161
}
6262

63-
private sealed class ReflectionPropertyDescriptor : IPropertyDescriptor
63+
protected class ReflectionPropertyDescriptor : IPropertyDescriptor
6464
{
6565
private readonly PropertyInfo propertyInfo;
6666
private readonly ITypeResolver typeResolver;

YamlDotNet/Serialization/TypeInspectors/ReflectionTypeInspector.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public override string GetEnumValue(object enumValue)
5959
if (enumMembers.Length > 0)
6060
{
6161
var attribute = enumMembers[0].GetCustomAttribute<EnumMemberAttribute>();
62-
if (!string.IsNullOrWhiteSpace(attribute?.Value))
62+
if (attribute?.Value != null)
6363
{
6464
result = attribute.Value;
6565
}

YamlDotNet/Serialization/TypeInspectors/WritablePropertiesTypeInspector.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ namespace YamlDotNet.Serialization.TypeInspectors
3030
/// <summary>
3131
/// Returns the properties of a type that are writable.
3232
/// </summary>
33-
public sealed class WritablePropertiesTypeInspector : ReflectionTypeInspector
33+
public class WritablePropertiesTypeInspector : ReflectionTypeInspector
3434
{
3535
private readonly ITypeResolver typeResolver;
3636
private readonly bool includeNonPublicProperties;
@@ -61,7 +61,7 @@ public override IEnumerable<IPropertyDescriptor> GetProperties(Type type, object
6161
.ToArray();
6262
}
6363

64-
private sealed class ReflectionPropertyDescriptor : IPropertyDescriptor
64+
protected class ReflectionPropertyDescriptor : IPropertyDescriptor
6565
{
6666
private readonly PropertyInfo propertyInfo;
6767
private readonly ITypeResolver typeResolver;

0 commit comments

Comments
 (0)