Skip to content

Commit 7d7d5ae

Browse files
Remove extra normalize whitespace calls.
1 parent b9aad49 commit 7d7d5ae

16 files changed

+150
-73
lines changed

src/JsonRpc.Generators/AutoImplementParamsGenerator.cs

+6-24
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
using Microsoft.CodeAnalysis;
55
using Microsoft.CodeAnalysis.CSharp;
66
using Microsoft.CodeAnalysis.CSharp.Syntax;
7+
using Microsoft.CodeAnalysis.Text;
78
using OmniSharp.Extensions.JsonRpc.Generators.Contexts;
89
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
10+
using static OmniSharp.Extensions.JsonRpc.Generators.CommonElements;
911

1012
namespace OmniSharp.Extensions.JsonRpc.Generators
1113
{
@@ -59,19 +61,17 @@ public void Execute(GeneratorExecutionContext context)
5961
SingletonList<MemberDeclarationSyntax>(
6062
NamespaceDeclaration(ParseName(symbol.ContainingNamespace.ToDisplayString()))
6163
.WithMembers(List(members))
62-
.NormalizeWhitespace()
6364
)
6465
)
6566
.AddUsings(UsingDirective(ParseName("OmniSharp.Extensions.LanguageServer.Protocol.Serialization")))
6667
.WithLeadingTrivia()
6768
.WithTrailingTrivia()
6869
.WithLeadingTrivia(Comment(Preamble.GeneratedByATool), Trivia(NullableDirectiveTrivia(Token(SyntaxKind.EnableKeyword), true)))
69-
.WithTrailingTrivia(Trivia(NullableDirectiveTrivia(Token(SyntaxKind.RestoreKeyword), true)), CarriageReturnLineFeed)
70-
.NormalizeWhitespace();
70+
.WithTrailingTrivia(Trivia(NullableDirectiveTrivia(Token(SyntaxKind.RestoreKeyword), true)), CarriageReturnLineFeed);
7171

7272
context.AddSource(
7373
$"{candidate.Identifier.Text}{( candidate.Arity > 0 ? candidate.Arity.ToString() : "" )}.cs",
74-
cu.SyntaxTree.GetRoot().GetText(Encoding.UTF8)
74+
cu.NormalizeWhitespace().GetText(Encoding.UTF8)
7575
);
7676
}
7777
}
@@ -84,16 +84,7 @@ private static IEnumerable<MemberDeclarationSyntax> AutoImplementInterfaces(Clas
8484
yield return PropertyDeclaration(NullableType(IdentifierName("ProgressToken")), Identifier("WorkDoneToken"))
8585
.WithAttributeLists(SingletonList(AttributeList(SingletonSeparatedList(Attribute(IdentifierName("Optional"))))))
8686
.WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword)))
87-
.WithAccessorList(
88-
AccessorList(
89-
List(
90-
new[] {
91-
AccessorDeclaration(SyntaxKind.GetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken)),
92-
AccessorDeclaration(SyntaxKind.SetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken))
93-
}
94-
)
95-
)
96-
);
87+
.WithAccessorList(GetSetAccessor);
9788
}
9889

9990
if (syntax.BaseList?.Types.Any(z => z.Type.GetSyntaxName() is "IPartialItemsRequest" or "IPartialItemRequest") == true
@@ -102,16 +93,7 @@ private static IEnumerable<MemberDeclarationSyntax> AutoImplementInterfaces(Clas
10293
yield return PropertyDeclaration(NullableType(IdentifierName("ProgressToken")), Identifier("PartialResultToken"))
10394
.WithAttributeLists(SingletonList(AttributeList(SingletonSeparatedList(Attribute(IdentifierName("Optional"))))))
10495
.WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword)))
105-
.WithAccessorList(
106-
AccessorList(
107-
List(
108-
new[] {
109-
AccessorDeclaration(SyntaxKind.GetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken)),
110-
AccessorDeclaration(SyntaxKind.SetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken))
111-
}
112-
)
113-
)
114-
);
96+
.WithAccessorList(GetSetAccessor);
11597
}
11698
}
11799

src/JsonRpc.Generators/DelegateHelpers.cs

+3-8
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ public static Func<TypeSyntax, MethodDeclarationSyntax> MakeMethodFactory(
1717
.WithParameterList(
1818
preParameterList.AddParameters(Parameter(Identifier("handler")).WithType(syntax))
1919
.AddParameters(postParameterList?.Parameters.ToArray() ?? Array.Empty<ParameterSyntax>())
20-
)
21-
.NormalizeWhitespace();
20+
);
2221

2322
public static Func<TypeSyntax, MethodDeclarationSyntax> MakeGenericFactory(Func<TypeSyntax, MethodDeclarationSyntax> factory, TypeSyntax constraint)
2423
{
@@ -29,8 +28,7 @@ public static Func<TypeSyntax, MethodDeclarationSyntax> MakeGenericFactory(Func<
2928
TypeParameterConstraintClause(IdentifierName("T"))
3029
.WithConstraints(SingletonSeparatedList<TypeParameterConstraintSyntax>(TypeConstraint(constraint)))
3130
)
32-
)
33-
.NormalizeWhitespace();
31+
);
3432
}
3533

3634
public static Func<TypeSyntax, TypeSyntax?, MethodDeclarationSyntax> MakeGenericFactory(
@@ -44,8 +42,7 @@ public static Func<TypeSyntax, MethodDeclarationSyntax> MakeGenericFactory(Func<
4442
TypeParameterConstraintClause(IdentifierName("T"))
4543
.WithConstraints(SingletonSeparatedList<TypeParameterConstraintSyntax>(TypeConstraint(constraint)))
4644
)
47-
)
48-
.NormalizeWhitespace();
45+
);
4946
}
5047

5148
public static Func<TypeSyntax, TypeSyntax?, IEnumerable<MethodDeclarationSyntax>> MakeGenericFactory(
@@ -62,7 +59,6 @@ public static Func<TypeSyntax, MethodDeclarationSyntax> MakeGenericFactory(Func<
6259
.WithConstraints(SingletonSeparatedList<TypeParameterConstraintSyntax>(TypeConstraint(constraint)))
6360
)
6461
)
65-
.NormalizeWhitespace()
6662
);
6763
}
6864

@@ -80,7 +76,6 @@ public static Func<TypeSyntax, IEnumerable<MethodDeclarationSyntax>> MakeGeneric
8076
.WithConstraints(SingletonSeparatedList<TypeParameterConstraintSyntax>(TypeConstraint(constraint)))
8177
)
8278
)
83-
.NormalizeWhitespace()
8479
);
8580
}
8681

src/JsonRpc.Generators/GenerateHandlerMethodsGenerator.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,11 @@ public void Execute(GeneratorExecutionContext context)
114114
List(members)
115115
)
116116
.WithLeadingTrivia(Comment(Preamble.GeneratedByATool))
117-
.WithTrailingTrivia(CarriageReturnLineFeed)
118-
.NormalizeWhitespace();
117+
.WithTrailingTrivia(CarriageReturnLineFeed);
119118

120119
context.AddSource(
121120
$"{candidateClass.Identifier.Text}{( candidateClass.Arity > 0 ? candidateClass.Arity.ToString() : "" )}.cs",
122-
cu.SyntaxTree.GetRoot().GetText(Encoding.UTF8)
121+
cu.NormalizeWhitespace().GetText(Encoding.UTF8)
123122
);
124123
}
125124
}

src/JsonRpc.Generators/Helpers.cs

+80-12
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public static SyntaxSymbol GetResponseType(TypeDeclarationSyntax syntax, INamedT
9494
else if (syntax.BaseList?.Types.Select(z => z.Type).OfType<SimpleNameSyntax>().Any(z => z.Identifier.Text == "IRequest" || z.Identifier.Text == "IJsonRpcRequest")
9595
== true)
9696
{
97-
type = ParseTypeName(syntax.Identifier.ToFullString());
97+
type = IdentifierName(syntax.Identifier.Text);
9898
}
9999
else
100100
{
@@ -848,10 +848,6 @@ public static ArrowExpressionClauseSyntax GetPartialInvokeExpression(TypeSyntax
848848

849849
private static string SpecialCasedHandlerFullName(INamedTypeSymbol symbol)
850850
{
851-
if (symbol.IsGenericType)
852-
{
853-
}
854-
855851
var substringIndex = symbol.Name.LastIndexOf("Handler", StringComparison.Ordinal);
856852
if (substringIndex is -1)
857853
{
@@ -880,12 +876,7 @@ private static string SpecialCasedHandlerFullName(INamedTypeSymbol symbol)
880876
substringIndex -= 1;
881877
}
882878

883-
return new Regex(@"(\w+(?:\<\w+\>)?)$")
884-
.Replace(
885-
symbol.ToDisplayString(),
886-
symbol.Name.Substring(start, substringIndex)
887-
)
888-
;
879+
return symbol.Name.Substring(start, substringIndex);
889880
}
890881

891882
public static string SpecialCasedHandlerName(INamedTypeSymbol symbol)
@@ -930,6 +921,54 @@ public static SyntaxList<TypeParameterConstraintClauseSyntax> HandlerIdentityCon
930921
);
931922
}
932923

924+
public static class LazyFactory
925+
{
926+
public static Lazy<T> Create<T>(Func<T> func) => new(func);
927+
}
928+
929+
public static class CommonElements
930+
{
931+
public static AccessorListSyntax GetSetAccessor => GetSetAccessorLazy.Value;
932+
933+
private static readonly Lazy<AccessorListSyntax> GetSetAccessorLazy = LazyFactory.Create(
934+
() => AccessorList(
935+
List(
936+
new[] {
937+
AccessorDeclaration(SyntaxKind.GetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken)),
938+
AccessorDeclaration(SyntaxKind.SetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken))
939+
}
940+
)
941+
)
942+
);
943+
944+
private static readonly Lazy<AccessorListSyntax> GetInitAccessorLazy = LazyFactory.Create(
945+
() => AccessorList(
946+
List(
947+
new[] {
948+
AccessorDeclaration(SyntaxKind.GetAccessorDeclaration)
949+
.WithSemicolonToken(Token(SyntaxKind.SemicolonToken)),
950+
AccessorDeclaration(SyntaxKind.InitAccessorDeclaration)
951+
.WithSemicolonToken(Token(SyntaxKind.SemicolonToken))
952+
}
953+
)
954+
)
955+
);
956+
957+
public static AccessorListSyntax GetInitAccessor => GetInitAccessorLazy.Value;
958+
959+
private static readonly Lazy<AccessorListSyntax> GetAccessorLazy = LazyFactory.Create(
960+
() => AccessorList(
961+
List(
962+
new[] {
963+
AccessorDeclaration(SyntaxKind.GetAccessorDeclaration).WithSemicolonToken(Token(SyntaxKind.SemicolonToken))
964+
}
965+
)
966+
)
967+
);
968+
969+
public static AccessorListSyntax GetAccessor => GetAccessorLazy.Value;
970+
}
971+
933972
public static class SyntaxExtensions
934973
{
935974
public static TypeSyntax EnsureNullable(this TypeSyntax typeSyntax) => typeSyntax is NullableTypeSyntax nts ? nts : NullableType(typeSyntax);
@@ -940,7 +979,7 @@ public static class SyntaxExtensions
940979
return typeSyntax switch {
941980
SimpleNameSyntax sns => sns.Identifier.Text,
942981
QualifiedNameSyntax qns => qns.Right.Identifier.Text,
943-
NullableTypeSyntax nts => nts.ElementType.GetSyntaxName(),
982+
NullableTypeSyntax nts => nts.ElementType.GetSyntaxName(),
944983
_ => throw new NotSupportedException(typeSyntax.GetType().FullName)
945984
};
946985
}
@@ -987,6 +1026,35 @@ public static bool ContainsAttribute(this in SyntaxList<AttributeListSyntax> lis
9871026
return false;
9881027
}
9891028

1029+
public static AttributeSyntax? GetAttribute(this AttributeListSyntax list, string attributePrefixes) // string is comma separated
1030+
{
1031+
if (list is { Attributes: { Count: 0 } }) return null;
1032+
var names = GetNames(attributePrefixes);
1033+
1034+
foreach (var item in list.Attributes)
1035+
{
1036+
if (item.Name.GetSyntaxName() is { } n && names.Contains(n)) return item;
1037+
}
1038+
1039+
return null;
1040+
}
1041+
1042+
public static AttributeSyntax? GetAttribute(this in SyntaxList<AttributeListSyntax> list, string attributePrefixes) // string is comma separated
1043+
{
1044+
if (list is { Count: 0 }) return null;
1045+
var names = GetNames(attributePrefixes);
1046+
1047+
foreach (var item in list)
1048+
{
1049+
foreach (var attribute in item.Attributes)
1050+
{
1051+
if (attribute.Name.GetSyntaxName() is { } n && names.Contains(n)) return attribute;
1052+
}
1053+
}
1054+
1055+
return null;
1056+
}
1057+
9901058
public static bool IsAttribute(this AttributeSyntax attributeSyntax, string attributePrefixes) // string is comma separated
9911059
{
9921060
var names = GetNames(attributePrefixes);

src/JsonRpc.Generators/RegistrationOptionsGenerator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public void Execute(GeneratorExecutionContext context)
187187

188188
context.AddSource(
189189
$"{registrationOptions.Identifier.Text}.cs",
190-
cu.NormalizeWhitespace().SyntaxTree.GetRoot().GetText(Encoding.UTF8)
190+
cu.NormalizeWhitespace().GetText(Encoding.UTF8)
191191
);
192192
}
193193
catch (Exception e)

src/JsonRpc.Generators/Strategies/ExtensionMethodGeneratorStrategy.cs

-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ public IEnumerable<MemberDeclarationSyntax> Apply(GeneratorData item)
7878
.WithMembers(List(methods))
7979
.WithLeadingTrivia(TriviaList(Trivia(NullableDirectiveTrivia(Token(SyntaxKind.EnableKeyword), true))))
8080
.WithTrailingTrivia(TriviaList(Trivia(NullableDirectiveTrivia(Token(SyntaxKind.RestoreKeyword), true))))
81-
.NormalizeWhitespace()
8281
)
8382
);
8483
}

src/JsonRpc.Generators/Strategies/HandlerGeneratorStrategy.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,7 @@ public IEnumerable<MemberDeclarationSyntax> Apply(GeneratorData item)
307307
yield return NamespaceDeclaration(ParseName(item.JsonRpcAttributes.HandlerNamespace))
308308
.WithMembers(List(members))
309309
.WithLeadingTrivia(TriviaList(Trivia(NullableDirectiveTrivia(Token(SyntaxKind.EnableKeyword), true))))
310-
.WithTrailingTrivia(TriviaList(Trivia(NullableDirectiveTrivia(Token(SyntaxKind.RestoreKeyword), true))))
311-
.NormalizeWhitespace();
310+
.WithTrailingTrivia(TriviaList(Trivia(NullableDirectiveTrivia(Token(SyntaxKind.RestoreKeyword), true))));
312311
}
313312

314313
private static GenericNameSyntax GetBaseHandlerInterface(GeneratorData item)

src/JsonRpc.Generators/Strategies/OnNotificationMethodGeneratorWithRegistrationOptionsStrategy.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ MethodDeclarationSyntax MethodFactory(MethodDeclarationSyntax method, TypeSyntax
7979
.WithParameterList(
8080
preParameterList.AddParameters(Parameter(Identifier("handler")).WithType(syntax))
8181
.AddParameters(registrationParameter)
82-
)
83-
.NormalizeWhitespace();
82+
);
8483
}
8584

8685
MethodDeclarationSyntax GenerateMethods(MethodDeclarationSyntax method, TypeSyntax syntax)

src/JsonRpc.Generators/Strategies/OnRequestMethodGeneratorWithRegistrationOptionsStrategy.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,7 @@ resolveSyntax is { }
205205
: new ParameterSyntax[] { }
206206
)
207207
.AddParameters(registrationParameter)
208-
)
209-
.NormalizeWhitespace();
208+
);
210209
}
211210

212211
MethodDeclarationSyntax GenerateMethod(MethodDeclarationSyntax method, TypeSyntax syntax, TypeSyntax? resolveSyntax)

src/JsonRpc.Generators/Strategies/OnRequestMethodGeneratorWithoutRegistrationOptionsStrategy.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,7 @@ resolveSyntax is { }
235235
}
236236
: new ParameterSyntax[] { }
237237
)
238-
)
239-
.NormalizeWhitespace();
238+
);
240239
}
241240

242241
MethodDeclarationSyntax GenerateMethods(MethodDeclarationSyntax method, TypeSyntax syntax, TypeSyntax? resolveSyntax) => MethodFactory(method, syntax, resolveSyntax);

src/JsonRpc.Generators/Strategies/OnRequestTypedResolveMethodGeneratorWithRegistrationOptionsStrategy.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,7 @@ resolveSyntax is { }
180180
: new ParameterSyntax[] { }
181181
)
182182
.AddParameters(registrationParameter)
183-
)
184-
.NormalizeWhitespace();
183+
);
185184
}
186185

187186
MethodDeclarationSyntax GenerateMethod(MethodDeclarationSyntax method, TypeSyntax syntax, TypeSyntax? resolveSyntax)

src/JsonRpc.Generators/Strategies/OnRequestTypedResolveMethodGeneratorWithoutRegistrationOptionsStrategy.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,7 @@ resolveSyntax is { }
203203
}
204204
: new ParameterSyntax[] { }
205205
)
206-
)
207-
.NormalizeWhitespace();
206+
);
208207
}
209208

210209
MethodDeclarationSyntax GenerateMethods(MethodDeclarationSyntax method, TypeSyntax syntax, TypeSyntax? resolveSyntax) => MethodFactory(method, syntax, resolveSyntax);

src/JsonRpc.Generators/Strategies/SendMethodNotificationStrategy.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ public IEnumerable<MemberDeclarationSyntax> Apply(ExtensionMethodContext extensi
3737
}
3838
)
3939
)
40-
)
41-
.NormalizeWhitespace();
40+
);
4241
}
4342
}
4443
}

0 commit comments

Comments
 (0)