make public API take ReadOnlySpan<byte> without "ref"
diff --git a/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs b/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
index 0e33cc0..95b426d 100644
--- a/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
+++ b/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
@@ -53,8 +53,7 @@
assert(parsedBuffer);
// Load content as ReadOnlySpan
- ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
- parsedBuffer = parser.ParseFrom(ref bytesSpan);
+ parsedBuffer = parser.ParseFrom(new ReadOnlySpan<byte>(bytes));
assert(parsedBuffer);
}
@@ -72,8 +71,7 @@
assert(parsedBuffer);
// Load content as ReadOnlySpan
- ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
- parsedBuffer = parser.ParseFrom(ref bytesSpan);
+ parsedBuffer = parser.ParseFrom(new ReadOnlySpan<byte>(bytes));
assert(parsedBuffer);
}
@@ -85,11 +83,7 @@
Assert.Throws<TException>(() => parser.ParseFrom(new ReadOnlySequence<byte>(bytes)));
- Assert.Throws<TException>(() =>
- {
- ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
- parser.ParseFrom(ref bytesSpan);
- });
+ Assert.Throws<TException>(() => parser.ParseFrom(new ReadOnlySpan<byte>(bytes)));
}
public static void AssertRoundtrip<T>(MessageParser<T> parser, T message, Action<T> additionalAssert = null) where T : IMessage<T>
@@ -116,8 +110,7 @@
additionalAssert?.Invoke(parsedBuffer);
// Load content as ReadOnlySpan
- ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
- parsedBuffer = parser.ParseFrom(ref bytesSpan);
+ parsedBuffer = parser.ParseFrom(new ReadOnlySpan<byte>(bytes));
Assert.AreEqual(message, parsedBuffer);
additionalAssert?.Invoke(parsedBuffer);
}
diff --git a/csharp/src/Google.Protobuf/MessageExtensions.cs b/csharp/src/Google.Protobuf/MessageExtensions.cs
index 1c0c437..d43177c 100644
--- a/csharp/src/Google.Protobuf/MessageExtensions.cs
+++ b/csharp/src/Google.Protobuf/MessageExtensions.cs
@@ -85,7 +85,7 @@
/// <param name="message">The message to merge the data into.</param>
/// <param name="span">Span containing the data to merge, which must be protobuf-encoded binary data.</param>
[SecuritySafeCritical]
- public static void MergeFrom(this IMessage message, ref ReadOnlySpan<byte> span) =>
+ public static void MergeFrom(this IMessage message, ReadOnlySpan<byte> span) =>
MergeFrom(message, ref span, false, null);
/// <summary>
diff --git a/csharp/src/Google.Protobuf/MessageParser.cs b/csharp/src/Google.Protobuf/MessageParser.cs
index 824d1afc..74ef503 100644
--- a/csharp/src/Google.Protobuf/MessageParser.cs
+++ b/csharp/src/Google.Protobuf/MessageParser.cs
@@ -134,7 +134,7 @@
/// <param name="data">The data to parse.</param>
/// <returns>The parsed message.</returns>
[SecuritySafeCritical]
- public IMessage ParseFrom(ref ReadOnlySpan<byte> data)
+ public IMessage ParseFrom(ReadOnlySpan<byte> data)
{
IMessage message = factory();
message.MergeFrom(ref data, DiscardUnknownFields, Extensions);
@@ -334,7 +334,7 @@
/// <param name="data">The data to parse.</param>
/// <returns>The parsed message.</returns>
[SecuritySafeCritical]
- public new T ParseFrom(ref ReadOnlySpan<byte> data)
+ public new T ParseFrom(ReadOnlySpan<byte> data)
{
T message = factory();
message.MergeFrom(ref data, DiscardUnknownFields, Extensions);