Use AsSpan/AsMemory (start, length) (#45310)
authorxtqqczze <45661989+xtqqczze@users.noreply.github.com>
Mon, 30 Nov 2020 11:26:17 +0000 (11:26 +0000)
committerGitHub <noreply@github.com>
Mon, 30 Nov 2020 11:26:17 +0000 (06:26 -0500)
* Use AsSpan(start, length)

Replace `AsSpan().Slice(start, length)` with `AsSpan(start, length)`

* Use AsMemory(start, length)

Replace `AsMemory().Slice(start, length)` with `AsMemory(start, length)`

* Apply suggestions from code review

Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
18 files changed:
src/libraries/Common/tests/System/Net/Http/Http2LoopbackConnection.cs
src/libraries/Microsoft.Extensions.Logging.Console/src/AnsiParsingLogConsole.cs
src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/AnsiParserTests.cs
src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Console/TestConsole.cs
src/libraries/System.Memory.Data/tests/BinaryDataTests.cs
src/libraries/System.Memory/tests/BuffersExtensions/BuffersExtensionsTests.cs
src/libraries/System.Memory/tests/Span/AsSpan.cs
src/libraries/System.Net.Ping/src/System/Net/NetworkInformation/Ping.Unix.cs
src/libraries/System.Net.Quic/tests/FunctionalTests/QuicStreamTests.cs
src/libraries/System.Net.Security/tests/StressTests/SslStress/StressOperations.cs
src/libraries/System.Net.Sockets/tests/FunctionalTests/CreateSocketTests.cs
src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketDuplicationTests.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CalendarData.Windows.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationMode.cs
src/libraries/System.Runtime/tests/System/IndexTests.cs
src/libraries/System.Runtime/tests/System/RangeTests.cs
src/libraries/System.Security.Cryptography.Pkcs/tests/Pkcs12/SimpleRead.cs
src/tests/JIT/Intrinsics/BinaryPrimitivesReverseEndianness.cs

index 2dcbf4c..c165695 100644 (file)
@@ -540,7 +540,7 @@ namespace System.Net.Test.Common
                         byte[] newBuffer = new byte[body.Length + dataFrame.Data.Length];
 
                         body.CopyTo(newBuffer, 0);
-                        dataFrame.Data.Span.CopyTo(newBuffer.AsSpan().Slice(body.Length));
+                        dataFrame.Data.Span.CopyTo(newBuffer.AsSpan(body.Length));
                         body= newBuffer;
                     }
                 }
@@ -764,7 +764,7 @@ namespace System.Net.Test.Common
                 flags |= FrameFlags.EndStream;
             }
 
-            HeadersFrame headersFrame = new HeadersFrame(headerBlock.AsMemory().Slice(0, bytesGenerated), flags, 0, 0, 0, streamId);
+            HeadersFrame headersFrame = new HeadersFrame(headerBlock.AsMemory(0, bytesGenerated), flags, 0, 0, 0, streamId);
             await WriteFrameAsync(headersFrame).ConfigureAwait(false);
         }
 
index 6a44732..2b540ec 100644 (file)
@@ -57,7 +57,7 @@ namespace Microsoft.Extensions.Logging.Console
 
         private void WriteToConsole(string message, int startIndex, int length, ConsoleColor? background, ConsoleColor? foreground)
         {
-            ReadOnlySpan<char> span = message.AsSpan().Slice(startIndex, length);
+            ReadOnlySpan<char> span = message.AsSpan(startIndex, length);
             var colorChanged = SetColor(background, foreground);
 #if NETCOREAPP
             _textWriter.Write(span);
index fbe579c..74d0489 100644 (file)
@@ -25,7 +25,7 @@ namespace Microsoft.Extensions.Logging.Console.Test
                 segments.Add(new ConsoleContext() {
                     BackgroundColor = bg,
                     ForegroundColor = fg,
-                    Message = message.AsSpan().Slice(startIndex, length).ToString()
+                    Message = message.AsSpan(startIndex, length).ToString()
                 });
             };
             var parser = new AnsiParser(onParseWrite);
@@ -53,7 +53,7 @@ namespace Microsoft.Extensions.Logging.Console.Test
                 segments.Add(new ConsoleContext() {
                     BackgroundColor = bg,
                     ForegroundColor = fg,
-                    Message = message.AsSpan().Slice(startIndex, length).ToString()
+                    Message = message.AsSpan(startIndex, length).ToString()
                 });
             };
             var parser = new AnsiParser(onParseWrite);
@@ -91,7 +91,7 @@ namespace Microsoft.Extensions.Logging.Console.Test
                 segments.Add(new ConsoleContext() {
                     BackgroundColor = bg,
                     ForegroundColor = fg,
-                    Message = message.AsSpan().Slice(startIndex, length).ToString()
+                    Message = message.AsSpan(startIndex, length).ToString()
                 });
             };
             var parser = new AnsiParser(onParseWrite);
@@ -134,7 +134,7 @@ namespace Microsoft.Extensions.Logging.Console.Test
                 segments.Add(new ConsoleContext() {
                     BackgroundColor = bg,
                     ForegroundColor = fg,
-                    Message = message.AsSpan().Slice(startIndex, length).ToString()
+                    Message = message.AsSpan(startIndex, length).ToString()
                 });
             };
             var parser = new AnsiParser(onParseWrite);
@@ -187,7 +187,7 @@ namespace Microsoft.Extensions.Logging.Console.Test
                 segments.Add(new ConsoleContext() {
                     BackgroundColor = bg,
                     ForegroundColor = fg,
-                    Message = message.AsSpan().Slice(startIndex, length).ToString()
+                    Message = message.AsSpan(startIndex, length).ToString()
                 });
             };
             var parser = new AnsiParser(onParseWrite);
index c604075..e94e764 100644 (file)
@@ -34,7 +34,7 @@ namespace Microsoft.Extensions.Logging.Test.Console
         public void OnParseWrite(string message, int startIndex, int length, ConsoleColor? background, ConsoleColor? foreground)
         {
             var consoleContext = new ConsoleContext();
-            consoleContext.Message = message.AsSpan().Slice(startIndex, length).ToString();
+            consoleContext.Message = message.AsSpan(startIndex, length).ToString();
 
             if (background.HasValue)
             {
index 60ffc73..b3ffa18 100644 (file)
@@ -462,12 +462,12 @@ namespace System.Tests
             var length = 4;
             var read = new byte[length];
             stream.Read(read, 0, length);
-            Assert.Equal(buffer.AsMemory().Slice(0, length).ToArray(), read.AsMemory().Slice(0, length).ToArray());
+            Assert.Equal(buffer.AsMemory(0, length).ToArray(), read.AsMemory(0, length).ToArray());
 
             read = new byte[length];
             stream.Position = 0;
             await stream.ReadAsync(read, 0, length);
-            Assert.Equal(buffer.AsMemory().Slice(0, length).ToArray(), read.AsMemory().Slice(0, length).ToArray());
+            Assert.Equal(buffer.AsMemory(0, length).ToArray(), read.AsMemory(0, length).ToArray());
 
             // no-op as we are at end of stream
             stream.Read(read, 0, length);
index 26e4c57..fc55fbe 100644 (file)
@@ -107,9 +107,9 @@ namespace System.Buffers.Tests
                 _written += bytes;
             }
 
-            public Memory<byte> GetMemory(int sizeHint = 0) => _buffer.AsMemory().Slice(_written);
+            public Memory<byte> GetMemory(int sizeHint = 0) => _buffer.AsMemory(_written);
 
-            public Span<byte> GetSpan(int sizeHint) => _buffer.AsSpan().Slice(_written);
+            public Span<byte> GetSpan(int sizeHint) => _buffer.AsSpan(_written);
 
             public override string ToString()
             {
index d11b5b6..9f51798 100644 (file)
@@ -108,7 +108,7 @@ namespace System.SpanTests
         {
             var arr = new Guid[20];
 
-            Span<Guid> slice = arr.AsSpan().Slice(2, 2);
+            Span<Guid> slice = arr.AsSpan(2, 2);
             Guid guid = Guid.NewGuid();
             slice[1] = guid;
 
index 44ac572..3f0bbbc 100644 (file)
@@ -462,7 +462,7 @@ namespace System.Net.NetworkInformation
             payload.CopyTo(result, offset + icmpHeaderSize);
 
             // offset now still points to beginning of ICMP header.
-            ushort checksum = ComputeBufferChecksum(result.AsSpan().Slice(offset));
+            ushort checksum = ComputeBufferChecksum(result.AsSpan(offset));
             // Jam the checksum into the buffer.
             result[offset + 2] = (byte)(checksum >> 8);
             result[offset + 3] = (byte)(checksum & (0xFF));
index 3da7e7e..f3c1517 100644 (file)
@@ -249,7 +249,7 @@ namespace System.Net.Quic.Tests
                         int totalBytesRead = 0;
                         while (totalBytesRead < data.Length)
                         {
-                            int bytesRead = await stream.ReadAsync(buffer.AsMemory().Slice(totalBytesRead));
+                            int bytesRead = await stream.ReadAsync(buffer.AsMemory(totalBytesRead));
                             Assert.NotEqual(0, bytesRead);
                             totalBytesRead += bytesRead;
                         }
@@ -288,7 +288,7 @@ namespace System.Net.Quic.Tests
                         int totalBytesRead = 0;
                         while (totalBytesRead < data.Length)
                         {
-                            int bytesRead = await stream.ReadAsync(buffer.AsMemory().Slice(totalBytesRead));
+                            int bytesRead = await stream.ReadAsync(buffer.AsMemory(totalBytesRead));
                             Assert.NotEqual(0, bytesRead);
                             totalBytesRead += bytesRead;
                         }
index d6a1a36..8c2ec6f 100644 (file)
@@ -77,11 +77,11 @@ namespace SslStress
         {
             // length
             int numsize = s_encoding.GetBytes(segment.Length.ToString(), _buffer);
-            await stream.WriteAsync(_buffer.AsMemory().Slice(0, numsize), token);
+            await stream.WriteAsync(_buffer.AsMemory(0, numsize), token);
             stream.WriteByte((byte)',');
             // checksum
             numsize = s_encoding.GetBytes(segment.Checksum.ToString(), _buffer);
-            await stream.WriteAsync(_buffer.AsMemory().Slice(0, numsize), token);
+            await stream.WriteAsync(_buffer.AsMemory(0, numsize), token);
             stream.WriteByte((byte)',');
             // payload
             Memory<byte> source = segment.AsMemory();
@@ -147,7 +147,7 @@ namespace SslStress
 
             ReadOnlySequence<byte> lengthBytes = buffer.Slice(0, pos.Value);
             int numSize = s_encoding.GetChars(lengthBytes.ToArray(), _charBuffer);
-            int length = int.Parse(_charBuffer.AsSpan().Slice(0, numSize));
+            int length = int.Parse(_charBuffer.AsSpan(0, numSize));
             buffer = buffer.Slice(buffer.GetPosition(1, pos.Value));
 
             // checksum
@@ -159,7 +159,7 @@ namespace SslStress
 
             ReadOnlySequence<byte> checksumBytes = buffer.Slice(0, pos.Value);
             numSize = s_encoding.GetChars(checksumBytes.ToArray(), _charBuffer);
-            ulong checksum = ulong.Parse(_charBuffer.AsSpan().Slice(0, numSize));
+            ulong checksum = ulong.Parse(_charBuffer.AsSpan(0, numSize));
             buffer = buffer.Slice(buffer.GetPosition(1, pos.Value));
 
             // payload
@@ -285,10 +285,10 @@ namespace SslStress
                     return Task.CompletedTask;
                 }
             }
-            
+
             async Task Monitor(CancellationToken token)
             {
-                do 
+                do
                 {
                     await Task.Delay(500);
 
index 507efc0..c291583 100644 (file)
@@ -609,7 +609,7 @@ namespace System.Net.Sockets.Tests
 
                 if (nlh.nlmsg_type == NLMSG_ERROR)
                 {
-                    MemoryMarshal.TryRead<nlmsgerr>(response.AsSpan().Slice(sizeof(nlmsghdr)), out nlmsgerr err);
+                    MemoryMarshal.TryRead<nlmsgerr>(response.AsSpan(sizeof(nlmsghdr)), out nlmsgerr err);
                     _output.WriteLine("Netlink request failed with {0}", err.error);
                 }
 
index 2acd34c..f6bc99d 100644 (file)
@@ -25,7 +25,7 @@ namespace System.Net.Sockets.Tests
         private const string TestMessage = "test123!";
         private static ArraySegment<byte> TestBytes => Encoding.ASCII.GetBytes(TestMessage);
         private static string GetMessageString(ArraySegment<byte> data, int count) =>
-            Encoding.ASCII.GetString(data.AsSpan().Slice(0, count));
+            Encoding.ASCII.GetString(data.AsSpan(0, count));
 
         [Fact]
         public void UseOnlyOverlappedIO_AlwaysFalse()
index 8f89619..cca0fb2 100644 (file)
@@ -388,7 +388,7 @@ namespace System.Globalization
                     count = count < calendars.Length ? count + 1 : count;
                     Span<CalendarId> tmpSpan = stackalloc CalendarId[count]; // should be 23 max.
                     tmpSpan[0] = userOverride;
-                    calendars.AsSpan().Slice(0, count - 1).CopyTo(tmpSpan.Slice(1));
+                    calendars.AsSpan(0, count - 1).CopyTo(tmpSpan.Slice(1));
                     tmpSpan.CopyTo(calendars);
                 }
             }
index 281b726..6b90460 100644 (file)
@@ -53,8 +53,8 @@ namespace System.Globalization
             int indexOfSeparator = icuSuffixAndVersion.IndexOf(':');
             if (indexOfSeparator >= 0)
             {
-                icuSuffix = icuSuffixAndVersion.AsSpan().Slice(0, indexOfSeparator);
-                version = icuSuffixAndVersion.AsSpan().Slice(icuSuffix.Length + 1);
+                icuSuffix = icuSuffixAndVersion.AsSpan(0, indexOfSeparator);
+                version = icuSuffixAndVersion.AsSpan(icuSuffix.Length + 1);
             }
             else
             {
index 709c69f..cc76de2 100644 (file)
@@ -126,7 +126,7 @@ namespace System.Tests
                 Assert.Equal(i, array[Index.FromStart(i)]);
                 Assert.Equal(list.Count - i - 1, array[^(i + 1)]);
 
-                Assert.Equal(array.AsSpan().Slice(i, array.Length - i).ToArray(), array[i..]);
+                Assert.Equal(array.AsSpan(i, array.Length - i).ToArray(), array[i..]);
             }
         }
     }
index ea2c2f3..add5518 100644 (file)
@@ -127,7 +127,7 @@ namespace System.Tests
             public CustomRangeTester(int [] data) => _data = data;
             public int Length => _data.Length;
             public int this[int index] => _data[index];
-            public CustomRangeTester Slice(int start, int length) => new CustomRangeTester(_data.AsSpan().Slice(start, length).ToArray());
+            public CustomRangeTester Slice(int start, int length) => new CustomRangeTester(_data.AsSpan(start, length).ToArray());
 
             public int [] Data => _data;
 
index 8ba46c1..e17434b 100644 (file)
@@ -118,7 +118,7 @@ namespace System.Security.Cryptography.Pkcs.Tests.Pkcs12
             Assert.Equal(Pkcs12ConfidentialityMode.None, authSafe[1].ConfidentialityMode);
 
             Assert.ThrowsAny<CryptographicException>(
-                () => authSafe[0].Decrypt(loader.Password.AsSpan().Slice(1)));
+                () => authSafe[0].Decrypt(loader.Password.AsSpan(1)));
 
             Assert.Equal(Pkcs12ConfidentialityMode.Password, authSafe[0].ConfidentialityMode);
             authSafe[0].Decrypt(loader.Password);
index bbc174b..e71bd36 100644 (file)
@@ -57,7 +57,7 @@ namespace BinaryPrimitivesReverseEndianness
              * SIGN-EXTENDED VALUE TESTS
              */
 
-            Span<byte> spanInt16 = BitConverter.IsLittleEndian ? s_bufferLE.AsSpan().Slice(2) : s_bufferBE;
+            Span<byte> spanInt16 = BitConverter.IsLittleEndian ? s_bufferLE.AsSpan(2) : s_bufferBE;
             short swappedInt16 = BinaryPrimitives.ReverseEndianness(MemoryMarshal.Read<short>(spanInt16));
             if (swappedInt16 != ConstantUInt16Expected)
             {