Skip to content

Commit 75d4592

Browse files
authored
Updated code to use the range operator (#8330)
1 parent dddd56f commit 75d4592

File tree

51 files changed

+159
-155
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+159
-155
lines changed

.editorconfig

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,13 @@ dotnet_diagnostic.CA1511.severity = warning
166166
dotnet_diagnostic.CA1512.severity = warning
167167
# Use ObjectDisposedException throw helper.
168168
dotnet_diagnostic.CA1513.severity = warning
169+
# Use range operator.
170+
dotnet_diagnostic.IDE0057.severity = warning
169171

170-
[src/HotChocolate/Language/**/*.cs]
172+
# netstandard2.0
173+
[src/HotChocolate/{Core/src/Types.Analyzers,Language}/**/*.cs]
171174
dotnet_diagnostic.CA1510.severity = none
172175
dotnet_diagnostic.CA1511.severity = none
173176
dotnet_diagnostic.CA1512.severity = none
174177
dotnet_diagnostic.CA1513.severity = none
178+
dotnet_diagnostic.IDE0057.severity = none

src/GreenDonut/src/GreenDonut.Data/Cursors/CursorFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public static string Format<T>(T entity, CursorKey[] keys, CursorPageInfo pageIn
106106
throw new InvalidOperationException("The input is not a valid UTF-8 string.");
107107
}
108108

109-
var result = Encoding.UTF8.GetString(span.Slice(0, bytesWritten));
109+
var result = Encoding.UTF8.GetString(span[..bytesWritten]);
110110

111111
if (poolArray != null)
112112
{

src/GreenDonut/src/GreenDonut.Data/Cursors/CursorKeySerializerHelper.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ internal static class CursorKeySerializerHelper
4242
? stackalloc byte[formattedKey.Length]
4343
: rented = ArrayPool<byte>.Shared.Rent(formattedKey.Length);
4444

45-
formattedKey.Slice(0, start).CopyTo(buffer);
45+
formattedKey[..start].CopyTo(buffer);
4646

4747
var i = start;
4848
var j = start;
@@ -62,7 +62,7 @@ internal static class CursorKeySerializerHelper
6262
}
6363
}
6464

65-
var key = serializer.Parse(buffer.Slice(0, i));
65+
var key = serializer.Parse(buffer[..i]);
6666

6767
if (rented != null)
6868
{
@@ -115,7 +115,7 @@ private static bool ReplaceColons(Span<byte> original, int start, int length, ou
115115
? stackalloc byte[original.Length]
116116
: rented = ArrayPool<byte>.Shared.Rent(original.Length);
117117

118-
original.Slice(0, start).CopyTo(buffer);
118+
original[..start].CopyTo(buffer);
119119

120120
var i = start;
121121
var j = start;
@@ -145,7 +145,7 @@ private static bool ReplaceColons(Span<byte> original, int start, int length, ou
145145
}
146146
}
147147

148-
buffer.Slice(0, i).CopyTo(original);
148+
buffer[..i].CopyTo(original);
149149
written = i;
150150

151151
if (rented != null)

src/GreenDonut/src/GreenDonut.Data/Extensions/GreenDonutPaginationBatchingDataLoaderExtensions.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,12 @@ private static void Add(
262262

263263
if (pagingArguments.First.HasValue)
264264
{
265-
var span = buffer.Slice(written);
265+
var span = buffer[written..];
266266
span[0] = 'f';
267267
span[1] = ':';
268268
written += 2;
269269

270-
if (!pagingArguments.First.Value.TryFormat(buffer.Slice(written), out var charsWritten))
270+
if (!pagingArguments.First.Value.TryFormat(buffer[written..], out var charsWritten))
271271
{
272272
throw new InvalidOperationException("Buffer is too small.");
273273
}
@@ -277,24 +277,24 @@ private static void Add(
277277

278278
if (pagingArguments.After is not null)
279279
{
280-
var span = buffer.Slice(written);
280+
var span = buffer[written..];
281281
span[0] = 'a';
282282
span[1] = ':';
283283
written += 2;
284284

285285
var after = pagingArguments.After.AsSpan();
286-
after.CopyTo(buffer.Slice(written));
286+
after.CopyTo(buffer[written..]);
287287
written += after.Length;
288288
}
289289

290290
if (pagingArguments.Last.HasValue)
291291
{
292-
var span = buffer.Slice(written);
292+
var span = buffer[written..];
293293
span[0] = 'l';
294294
span[1] = ':';
295295
written += 2;
296296

297-
if (!pagingArguments.Last.Value.TryFormat(buffer.Slice(written), out var charsWritten))
297+
if (!pagingArguments.Last.Value.TryFormat(buffer[written..], out var charsWritten))
298298
{
299299
throw new InvalidOperationException("Buffer is too small.");
300300
}
@@ -304,17 +304,17 @@ private static void Add(
304304

305305
if (pagingArguments.Before is not null)
306306
{
307-
var span = buffer.Slice(written);
307+
var span = buffer[written..];
308308
span[0] = 'b';
309309
span[1] = ':';
310310
written += 2;
311311

312312
var before = pagingArguments.Before.AsSpan();
313-
before.CopyTo(buffer.Slice(written));
313+
before.CopyTo(buffer[written..]);
314314
written += before.Length;
315315
}
316316

317-
hasher.Add(buffer.Slice(0, written));
317+
hasher.Add(buffer[..written]);
318318

319319
if (rentedBuffer != null)
320320
{

src/GreenDonut/src/GreenDonut.Data/Internal/ExpressionHasher.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,15 @@ public ExpressionHasher Add(ReadOnlySpan<char> span)
7171

7272
public string Compute()
7373
{
74-
var hashBytes = MD5.HashData(_buffer.AsSpan().Slice(0, _start));
74+
var hashBytes = MD5.HashData(_buffer.AsSpan()[.._start]);
7575

7676
#if NET9_0_OR_GREATER
7777
var hashString = Convert.ToHexStringLower(hashBytes);
7878
#else
7979
var hashString = Convert.ToHexString(hashBytes).ToLowerInvariant();
8080
#endif
8181

82-
_buffer.AsSpan().Slice(0, _start).Clear();
82+
_buffer.AsSpan()[.._start].Clear();
8383

8484
if (_buffer.Length > _initialSize)
8585
{
@@ -211,10 +211,10 @@ private void Append(int i)
211211
{
212212
int written;
213213

214-
while (!Utf8Formatter.TryFormat(i, _buffer.AsSpan().Slice(_start), out written))
214+
while (!Utf8Formatter.TryFormat(i, _buffer.AsSpan()[_start..], out written))
215215
{
216216
var newBuffer = ArrayPool<byte>.Shared.Rent(_buffer.Length * 2);
217-
_buffer.AsSpan().Slice(0, _start).CopyTo(newBuffer);
217+
_buffer.AsSpan()[.._start].CopyTo(newBuffer);
218218
ArrayPool<byte>.Shared.Return(_buffer);
219219
_buffer = newBuffer;
220220
}
@@ -287,34 +287,34 @@ private void Append(char a, char b)
287287

288288
private void Append(string s)
289289
{
290-
var span = _buffer.AsSpan().Slice(_start);
290+
var span = _buffer.AsSpan()[_start..];
291291
var chars = s.AsSpan();
292292
int written;
293293

294294
while (!Encoding.UTF8.TryGetBytes(chars, span, out written))
295295
{
296296
var newBuffer = ArrayPool<byte>.Shared.Rent(_buffer.Length * 2);
297-
_buffer.AsSpan().Slice(0, _start).CopyTo(newBuffer);
297+
_buffer.AsSpan()[.._start].CopyTo(newBuffer);
298298
ArrayPool<byte>.Shared.Return(_buffer);
299299
_buffer = newBuffer;
300-
span = _buffer.AsSpan().Slice(_start);
300+
span = _buffer.AsSpan()[_start..];
301301
}
302302

303303
_start += written;
304304
}
305305

306306
private void Append(ReadOnlySpan<char> s)
307307
{
308-
var span = _buffer.AsSpan().Slice(_start);
308+
var span = _buffer.AsSpan()[_start..];
309309
int written;
310310

311311
while (!Encoding.UTF8.TryGetBytes(s, span, out written))
312312
{
313313
var newBuffer = ArrayPool<byte>.Shared.Rent(_buffer.Length * 2);
314-
_buffer.AsSpan().Slice(0, _start).CopyTo(newBuffer);
314+
_buffer.AsSpan()[.._start].CopyTo(newBuffer);
315315
ArrayPool<byte>.Shared.Return(_buffer);
316316
_buffer = newBuffer;
317-
span = _buffer.AsSpan().Slice(_start);
317+
span = _buffer.AsSpan()[_start..];
318318
}
319319

320320
_start += written;
@@ -335,15 +335,15 @@ private void Append(byte b)
335335

336336
private void Append(ReadOnlySpan<byte> span)
337337
{
338-
var bufferSpan = _buffer.AsSpan().Slice(_start);
338+
var bufferSpan = _buffer.AsSpan()[_start..];
339339

340340
while (!span.TryCopyTo(bufferSpan))
341341
{
342342
var newBuffer = ArrayPool<byte>.Shared.Rent(_buffer.Length * 2);
343-
_buffer.AsSpan().Slice(0, _start).CopyTo(newBuffer);
343+
_buffer.AsSpan()[.._start].CopyTo(newBuffer);
344344
ArrayPool<byte>.Shared.Return(_buffer);
345345
_buffer = newBuffer;
346-
bufferSpan = _buffer.AsSpan().Slice(_start);
346+
bufferSpan = _buffer.AsSpan()[_start..];
347347
}
348348

349349
_start += span.Length;

src/GreenDonut/src/GreenDonut/PromiseCache.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public void Publish<T>(T value)
185185
public void PublishMany<T>(ReadOnlySpan<T> values)
186186
{
187187
var buffer = ArrayPool<Promise<T>>.Shared.Rent(values.Length);
188-
var bufferedPromises = buffer.AsSpan().Slice(0, values.Length);
188+
var bufferedPromises = buffer.AsSpan()[..values.Length];
189189

190190
// first we add the promises tp the promise list, which we keep
191191
// for DataLoader that are not instantiated yet.

src/GreenDonut/test/GreenDonut.Data.Tests/Cursors/CursorKeySerializerHelperTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public static void TryFormat_StringWithoutColons_FormatsCorrectly()
106106
// assert
107107
Assert.True(success);
108108
Assert.Equal(9, written); // "testvalue" is 9 bytes
109-
Assert.Equal("testvalue", Encoding.UTF8.GetString(buffer.Slice(0, written)));
109+
Assert.Equal("testvalue", Encoding.UTF8.GetString(buffer[..written]));
110110
}
111111

112112
[Fact]
@@ -122,7 +122,7 @@ public static void TryFormat_StringWithColons_EscapesAndFormatsCorrectly()
122122
// assert
123123
Assert.True(success);
124124
Assert.Equal(12, written); // "part1\\:part2" is 12 bytes
125-
Assert.Equal("part1\\:part2", Encoding.UTF8.GetString(buffer.Slice(0, written)));
125+
Assert.Equal("part1\\:part2", Encoding.UTF8.GetString(buffer[..written]));
126126
}
127127

128128
[Fact]
@@ -149,7 +149,7 @@ public static void String_With_Colon_Format_And_Parse()
149149

150150
// act
151151
CursorKeySerializerHelper.TryFormat(key, s_serializer, buffer, out var written);
152-
var parsedString =CursorKeySerializerHelper.Parse(buffer.Slice(0, written), s_serializer);
152+
var parsedString =CursorKeySerializerHelper.Parse(buffer[..written], s_serializer);
153153

154154

155155
// assert

src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpEventStreamProcessor.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,9 @@ private static OperationResult ParseData(ref ReadOnlySpan<byte> span)
251251

252252
private static bool ExpectEvent(ref ReadOnlySpan<byte> span)
253253
{
254-
if (span.Slice(0, 6).SequenceEqual(Event))
254+
if (span[..6].SequenceEqual(Event))
255255
{
256-
span = span.Slice(6);
256+
span = span[6..];
257257
return true;
258258
}
259259

@@ -264,12 +264,12 @@ private static bool ExpectNext(ref ReadOnlySpan<byte> span)
264264
{
265265
SkipWhitespaces(ref span);
266266

267-
if (!span.Slice(0, 5).SequenceEqual(Next))
267+
if (!span[..5].SequenceEqual(Next))
268268
{
269269
return false;
270270
}
271271

272-
span = span.Slice(5);
272+
span = span[5..];
273273

274274
return true;
275275
}
@@ -278,21 +278,21 @@ private static bool ExpectComplete(ref ReadOnlySpan<byte> span)
278278
{
279279
SkipWhitespaces(ref span);
280280

281-
if (!span.Slice(0, 9).SequenceEqual(Complete))
281+
if (!span[..9].SequenceEqual(Complete))
282282
{
283283
return false;
284284
}
285285

286-
span = span.Slice(9);
286+
span = span[9..];
287287

288288
return true;
289289
}
290290

291291
private static bool ExpectData(ref ReadOnlySpan<byte> span)
292292
{
293-
if (span.Slice(0, 5).SequenceEqual(Data))
293+
if (span[..5].SequenceEqual(Data))
294294
{
295-
span = span.Slice(5);
295+
span = span[5..];
296296
return true;
297297
}
298298

@@ -308,16 +308,16 @@ private static ReadOnlySpan<byte> ReadData(ref ReadOnlySpan<byte> span)
308308
throw new InvalidOperationException("Invalid Message Format.");
309309
}
310310

311-
var data = span.Slice(0, linebreak);
312-
span = span.Slice(linebreak + 1);
311+
var data = span[..linebreak];
312+
span = span[(linebreak + 1)..];
313313
return data;
314314
}
315315

316316
private static void SkipWhitespaces(ref ReadOnlySpan<byte> span)
317317
{
318318
while (span.Length > 0 && span[0] == (byte)' ')
319319
{
320-
span = span.Slice(1);
320+
span = span[1..];
321321
}
322322
}
323323

src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpResponse.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ private static async IAsyncEnumerable<OperationResult> SingleResult(ValueTask<Op
222222
// Remove at most a single set of quotes.
223223
if (charset.Length > 2 && charset[0] == '\"' && charset[^1] == '\"')
224224
{
225-
encoding = Encoding.GetEncoding(charset.Substring(1, charset.Length - 2));
225+
encoding = Encoding.GetEncoding(charset[1..^1]);
226226
}
227227
else
228228
{

src/HotChocolate/Core/src/Abstractions/NameFormattingHelpers.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@ private static string FormatMethodName(MethodInfo method)
8686
if (name.StartsWith(Get, StringComparison.Ordinal)
8787
&& name.Length > Get.Length)
8888
{
89-
name = name.Substring(Get.Length);
89+
name = name[Get.Length..];
9090
}
9191

9292
if (IsAsyncMethod(method.ReturnType)
9393
&& name.Length > Async.Length
9494
&& name.EndsWith(Async, StringComparison.Ordinal))
9595
{
96-
name = name.Substring(0, name.Length - Async.Length);
96+
name = name[..^Async.Length];
9797
}
9898

9999
return FormatFieldName(name);
@@ -178,7 +178,7 @@ private static string GetFromType(Type type)
178178

179179
if (index >= 0)
180180
{
181-
nameSpan = nameSpan.Slice(0, index);
181+
nameSpan = nameSpan[..index];
182182
}
183183

184184
typeName = nameSpan.ToString();

0 commit comments

Comments
 (0)