Skip to content

Commit 1fe769d

Browse files
committed
Don't use Span.Text
1 parent b41857f commit 1fe769d

2 files changed

Lines changed: 17 additions & 14 deletions

File tree

AspNetCoreAnalyzers.Tests/Helpers/UrlTemplateTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public async Task<IActionResult> GetOrder([FromRoute]int id)
2828
}".AssertReplace("api/orders/{id}", text));
2929
var literal = syntaxTree.FindLiteralExpression(text);
3030
Assert.AreEqual(true, UrlTemplate.TryParse(literal, out var template));
31-
CollectionAssert.AreEqual(expected, template.Path.Select(x => x.Span.Text));
31+
CollectionAssert.AreEqual(expected, template.Path.Select(x => x.Span.ToString()));
3232
}
3333

3434
[TestCase("{id}", new[] { "{id}" })]
@@ -57,12 +57,12 @@ public async Task<IActionResult> GetOrder([FromRoute]int id)
5757
}".AssertReplace("api/orders/{id}", text));
5858
var literal = syntaxTree.FindLiteralExpression(text);
5959
Assert.AreEqual(true, UrlTemplate.TryParse(literal, out var template));
60-
CollectionAssert.AreEqual(expected, template.Path.Select(x => x.Span.Text));
60+
CollectionAssert.AreEqual(expected, template.Path.Select(x => x.Span.ToString()));
6161

6262
// ReSharper disable once PossibleInvalidOperationException
6363
var parameter = template.Path.Single(x => x.Parameter.HasValue)
6464
.Parameter.Value;
65-
Assert.AreEqual("id", parameter.Name.Text);
65+
Assert.AreEqual("id", parameter.Name.ToString());
6666
}
6767

6868
[TestCase("orders/{id?}", new[] { "orders", "{id?}" }, new[] { "?" })]
@@ -90,13 +90,13 @@ public async Task<IActionResult> GetOrder([FromRoute]int id)
9090
}".AssertReplace("orders/{id}", text));
9191
var literal = syntaxTree.FindLiteralExpression(text);
9292
Assert.AreEqual(true, UrlTemplate.TryParse(literal, out var template));
93-
CollectionAssert.AreEqual(segments, template.Path.Select(x => x.Span.Text));
93+
CollectionAssert.AreEqual(segments, template.Path.Select(x => x.Span.ToString()));
9494

9595
// ReSharper disable once PossibleInvalidOperationException
9696
var parameter = template.Path.Single(x => x.Parameter.HasValue)
9797
.Parameter.Value;
98-
Assert.AreEqual("id", parameter.Name.Text);
99-
CollectionAssert.AreEqual(constraints, parameter.Constraints.Select(x => x.Span.Text));
98+
Assert.AreEqual("id", parameter.Name.ToString());
99+
CollectionAssert.AreEqual(constraints, parameter.Constraints.Select(x => x.Span.ToString()));
100100
}
101101

102102
[TestCase("orders/{id}", new[] { "orders", "{id}" }, new string[0])]
@@ -131,13 +131,13 @@ public async Task<IActionResult> GetOrder(string id)
131131
}".AssertReplace("orders/{id}", text));
132132
var literal = syntaxTree.FindLiteralExpression(text);
133133
Assert.AreEqual(true, UrlTemplate.TryParse(literal, out var template));
134-
CollectionAssert.AreEqual(segments, template.Path.Select(x => x.Span.Text));
134+
CollectionAssert.AreEqual(segments, template.Path.Select(x => x.Span.ToString()));
135135

136136
// ReSharper disable once PossibleInvalidOperationException
137137
var parameter = template.Path.Single(x => x.Parameter.HasValue)
138138
.Parameter.Value;
139-
Assert.AreEqual("id", parameter.Name.Text);
140-
CollectionAssert.AreEqual(constraints, parameter.Constraints.Select(x => x.Span.Text)
139+
Assert.AreEqual("id", parameter.Name.ToString());
140+
CollectionAssert.AreEqual(constraints, parameter.Constraints.Select(x => x.Span.ToString())
141141
.ToArray());
142142
}
143143

@@ -163,13 +163,13 @@ public async Task<IActionResult> GetOrder([FromRoute]int id)
163163
}".AssertReplace("orders/{id}", text));
164164
var literal = syntaxTree.FindLiteralExpression(text);
165165
Assert.AreEqual(true, UrlTemplate.TryParse(literal, out var template));
166-
CollectionAssert.AreEqual(segments, template.Path.Select(x => x.Span.Text));
166+
CollectionAssert.AreEqual(segments, template.Path.Select(x => x.Span.ToString()));
167167

168168
// ReSharper disable once PossibleInvalidOperationException
169169
var parameter = template.Path.Single(x => x.Parameter.HasValue)
170170
.Parameter.Value;
171-
Assert.AreEqual("id", parameter.Name.Text);
172-
CollectionAssert.AreEqual(constraints, parameter.Constraints.Select(x => x.Span.Text));
171+
Assert.AreEqual("id", parameter.Name.ToString());
172+
CollectionAssert.AreEqual(constraints, parameter.Constraints.Select(x => x.Span.ToString()));
173173
}
174174
}
175175
}

AspNetCoreAnalyzers/Helpers/Span.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
namespace AspNetCoreAnalyzers
22
{
33
using System;
4-
using System.Diagnostics;
54
using Microsoft.CodeAnalysis;
65
using Microsoft.CodeAnalysis.CSharp.Syntax;
76
using Microsoft.CodeAnalysis.Text;
87

9-
[DebuggerDisplay("{this.Text}")]
108
public struct Span : IEquatable<Span>
119
{
1210
private readonly LiteralExpressionSyntax literal;
@@ -53,6 +51,11 @@ public override int GetHashCode()
5351
}
5452
}
5553

54+
public override string ToString()
55+
{
56+
return this.literal.Token.ValueText.Substring(this.TextSpan.Start, this.TextSpan.Length);
57+
}
58+
5659
public Location GetLocation() => GetLocation(this.literal, this.TextSpan);
5760

5861
public Location GetLocation(int start, int length) => GetLocation(this.literal, new TextSpan(this.TextSpan.Start + start, length));

0 commit comments

Comments
 (0)