From 4c4402421f5af90807a45d112fb631787c005072 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Tue, 7 Apr 2026 20:30:49 +1000 Subject: [PATCH] ApplyForPropertyValue returns string instead of CharSpan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Previously: builder.ToString().AsSpan() → callers then called .ToString() again = 2 string allocations - Now: builder.ToString() → callers use directly = 1 string allocation - Saves a full string copy at every call in InnerVerifier_Xml.cs (2 sites) and CustomContractResolver_Dictionary.cs (1 site) - The VerifyJsonWriter callers that use the result as CharSpan still work via implicit string → ReadOnlySpan conversion --- src/Verify/Serialization/CustomContractResolver_Dictionary.cs | 2 +- src/Verify/Serialization/Scrubbers/ApplyScrubbers.cs | 4 ++-- src/Verify/Verifier/InnerVerifier_Xml.cs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Verify/Serialization/CustomContractResolver_Dictionary.cs b/src/Verify/Serialization/CustomContractResolver_Dictionary.cs index 7061b77b80..cde18436ae 100644 --- a/src/Verify/Serialization/CustomContractResolver_Dictionary.cs +++ b/src/Verify/Serialization/CustomContractResolver_Dictionary.cs @@ -100,7 +100,7 @@ static bool TryConvertDictionaryKey(VerifyJsonWriter writer, object original, [N return true; } - result = ApplyScrubbers.ApplyForPropertyValue(stringValue.AsSpan(), writer.settings, counter).ToString(); + result = ApplyScrubbers.ApplyForPropertyValue(stringValue.AsSpan(), writer.settings, counter); return true; } diff --git a/src/Verify/Serialization/Scrubbers/ApplyScrubbers.cs b/src/Verify/Serialization/Scrubbers/ApplyScrubbers.cs index 9a3bd28968..7084fdbd13 100644 --- a/src/Verify/Serialization/Scrubbers/ApplyScrubbers.cs +++ b/src/Verify/Serialization/Scrubbers/ApplyScrubbers.cs @@ -45,12 +45,12 @@ public static void ApplyForExtension(string extension, StringBuilder target, Ver target.FixNewlines(); } - public static CharSpan ApplyForPropertyValue(CharSpan value, VerifySettings settings, Counter counter) + public static string ApplyForPropertyValue(CharSpan value, VerifySettings settings, Counter counter) { var builder = new StringBuilder(value.Length); builder.Append(value); ApplyForPropertyValue(settings, counter, builder); - return builder.AsSpan(); + return builder.ToString(); } public static void ApplyForPropertyValue(VerifySettings settings, Counter counter, StringBuilder builder) diff --git a/src/Verify/Verifier/InnerVerifier_Xml.cs b/src/Verify/Verifier/InnerVerifier_Xml.cs index 3da4b4b1e7..87cd17ea4a 100644 --- a/src/Verify/Verifier/InnerVerifier_Xml.cs +++ b/src/Verify/Verifier/InnerVerifier_Xml.cs @@ -106,7 +106,7 @@ string ConvertValue(string value) return result; } - return ApplyScrubbers.ApplyForPropertyValue(span, settings, counter).ToString(); + return ApplyScrubbers.ApplyForPropertyValue(span, settings, counter); } void ScrubAttributes(XElement node, SerializationSettings serialization) @@ -136,7 +136,7 @@ void ScrubAttributes(XElement node, SerializationSettings serialization) } else { - attribute.Value = ApplyScrubbers.ApplyForPropertyValue(span, settings, counter).ToString(); + attribute.Value = ApplyScrubbers.ApplyForPropertyValue(span, settings, counter); } } }