From 601015c6883f3b9cf86f85b18d7d4d6e82cfea02 Mon Sep 17 00:00:00 2001 From: Glenn <5834289+glennawatson@users.noreply.github.com> Date: Mon, 27 Sep 2021 11:45:33 +1000 Subject: [PATCH] feature: add extra spacing (#27) * Fix: throwstatement has wrong keyword * feature: add more spacing for SimpleLambdaExpression/If --- .../SyntaxFactoryHelpers.cs | 68 ++++++++++++++++--- version.json | 2 +- 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/src/ReactiveMarbles.RoslynHelpers/SyntaxFactoryHelpers.cs b/src/ReactiveMarbles.RoslynHelpers/SyntaxFactoryHelpers.cs index 805816a..ffe1c51 100644 --- a/src/ReactiveMarbles.RoslynHelpers/SyntaxFactoryHelpers.cs +++ b/src/ReactiveMarbles.RoslynHelpers/SyntaxFactoryHelpers.cs @@ -200,7 +200,7 @@ public static ArrayTypeSyntax ArrayType(TypeSyntax elementType, IReadOnlyCollect /// The right value. /// The instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, ExpressionSyntax left, ExpressionSyntax right) => SyntaxFactory.AssignmentExpression(token, left, right); + public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, ExpressionSyntax left, ExpressionSyntax right) => SyntaxFactory.AssignmentExpression(token, left, Token(GetAssignmentExpressionOperatorTokenKind(token)).AddLeadingSpaces().AddTrialingSpaces(), right); /// Creates a new instance. /// The token. @@ -208,7 +208,7 @@ public static ArrayTypeSyntax ArrayType(TypeSyntax elementType, IReadOnlyCollect /// The right value. /// The instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, ExpressionSyntax left, string right) => SyntaxFactory.AssignmentExpression(token, left, IdentifierName(right)); + public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, ExpressionSyntax left, string right) => AssignmentExpression(token, left, IdentifierName(right)); /// Creates a new instance. /// The token. @@ -216,7 +216,7 @@ public static ArrayTypeSyntax ArrayType(TypeSyntax elementType, IReadOnlyCollect /// The right value. /// The instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, string left, ExpressionSyntax right) => SyntaxFactory.AssignmentExpression(token, IdentifierName(left), right); + public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, string left, ExpressionSyntax right) => AssignmentExpression(token, IdentifierName(left), right); /// Creates a new instance. /// The token. @@ -224,7 +224,7 @@ public static ArrayTypeSyntax ArrayType(TypeSyntax elementType, IReadOnlyCollect /// The right value. /// The instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, string left, string right) => SyntaxFactory.AssignmentExpression(token, IdentifierName(left), IdentifierName(right)); + public static AssignmentExpressionSyntax AssignmentExpression(SyntaxKind token, string left, string right) => AssignmentExpression(token, IdentifierName(left), IdentifierName(right)); /// Creates a new instance. /// The name. @@ -890,7 +890,7 @@ public static GenericNameSyntax GenericName(string name, IReadOnlyCollectionThe instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static IfStatementSyntax IfStatement(ExpressionSyntax conditionStatement, StatementSyntax statement) => - SyntaxFactory.IfStatement(default, Token(SyntaxKind.IfKeyword).AddTrialingSpaces(), Token(SyntaxKind.OpenParenToken).AddTrialingSpaces(), conditionStatement, Token(SyntaxKind.CloseParenToken).AddTrialingSpaces(), statement, null); + SyntaxFactory.IfStatement(default, Token(SyntaxKind.IfKeyword).AddTrialingSpaces(), Token(SyntaxKind.OpenParenToken), conditionStatement, Token(SyntaxKind.CloseParenToken), statement, null); /// Creates a new instance. /// The conditional statement. @@ -899,7 +899,7 @@ public static IfStatementSyntax IfStatement(ExpressionSyntax conditionStatement, /// The instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static IfStatementSyntax IfStatement(ExpressionSyntax conditionStatement, StatementSyntax statement, ElseClauseSyntax elseStatement) => - SyntaxFactory.IfStatement(default, Token(SyntaxKind.IfKeyword).AddTrialingSpaces(), Token(SyntaxKind.OpenParenToken).AddTrialingSpaces(), conditionStatement, Token(SyntaxKind.CloseParenToken).AddTrialingSpaces(), statement, elseStatement); + SyntaxFactory.IfStatement(default, Token(SyntaxKind.IfKeyword).AddTrialingSpaces(), Token(SyntaxKind.OpenParenToken), conditionStatement, Token(SyntaxKind.CloseParenToken), statement, elseStatement); /// Creates a new instance. /// The arguments. @@ -1855,7 +1855,7 @@ public static SeparatedSyntaxList SeparatedList(IRe /// The instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static SimpleLambdaExpressionSyntax SimpleLambdaExpression(ParameterSyntax parameter, ExpressionSyntax body) => - SyntaxFactory.SimpleLambdaExpression(parameter, default, body); + SimpleLambdaExpression(parameter, default, body); /// Creates a new instance. /// The parameter. @@ -1863,7 +1863,39 @@ public static SimpleLambdaExpressionSyntax SimpleLambdaExpression(ParameterSynta /// The instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static SimpleLambdaExpressionSyntax SimpleLambdaExpression(ParameterSyntax parameter, BlockSyntax body) => - SyntaxFactory.SimpleLambdaExpression(parameter, body, default); + SimpleLambdaExpression(parameter, body, default); + + /// Creates a new instance. + /// The parameter. + /// The optional block. Use this or expression body. + /// The optional expression body. Use this or block. + /// The instance. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static SimpleLambdaExpressionSyntax SimpleLambdaExpression(ParameterSyntax parameter, BlockSyntax? block, ExpressionSyntax? expressionBody) + { + var token = Token(SyntaxKind.EqualsGreaterThanToken).AddLeadingSpaces().AddTrialingSpaces(); + + return SyntaxFactory.SimpleLambdaExpression(default, default, parameter, token, block, expressionBody); + } + + /// Creates a new instance. + /// The attributes. + /// The modifiers. + /// The parameter. + /// The optional block. Use this or expression body. + /// The optional expression body. Use this or block. + /// The indentation level. + /// The instance. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static SimpleLambdaExpressionSyntax SimpleLambdaExpression(IReadOnlyCollection? attributes, IReadOnlyCollection? modifiers, ParameterSyntax parameter, BlockSyntax? block, ExpressionSyntax? expressionBody, int level) + { + var attributeList = List(attributes, level, true); + var modifiersList = attributes?.Count > 0 ? TokenList(modifiers, level) : TokenList(modifiers); + + var token = Token(SyntaxKind.EqualsGreaterThanToken).AddLeadingSpaces().AddTrialingSpaces(); + + return SyntaxFactory.SimpleLambdaExpression(attributeList, modifiersList, parameter, token, block, expressionBody); + } /// /// Creates a new instance. @@ -2258,6 +2290,26 @@ private static IReadOnlyCollection GetSpacedAccessors return items; } + private static SyntaxKind GetAssignmentExpressionOperatorTokenKind(SyntaxKind kind) + { + return kind switch + { + SyntaxKind.SimpleAssignmentExpression => SyntaxKind.EqualsToken, + SyntaxKind.AddAssignmentExpression => SyntaxKind.PlusEqualsToken, + SyntaxKind.SubtractAssignmentExpression => SyntaxKind.MinusEqualsToken, + SyntaxKind.MultiplyAssignmentExpression => SyntaxKind.AsteriskEqualsToken, + SyntaxKind.DivideAssignmentExpression => SyntaxKind.SlashEqualsToken, + SyntaxKind.ModuloAssignmentExpression => SyntaxKind.PercentEqualsToken, + SyntaxKind.AndAssignmentExpression => SyntaxKind.AmpersandEqualsToken, + SyntaxKind.ExclusiveOrAssignmentExpression => SyntaxKind.CaretEqualsToken, + SyntaxKind.OrAssignmentExpression => SyntaxKind.BarEqualsToken, + SyntaxKind.LeftShiftAssignmentExpression => SyntaxKind.LessThanLessThanEqualsToken, + SyntaxKind.RightShiftAssignmentExpression => SyntaxKind.GreaterThanGreaterThanEqualsToken, + SyntaxKind.CoalesceAssignmentExpression => SyntaxKind.QuestionQuestionEqualsToken, + _ => throw new ArgumentOutOfRangeException(), + }; + } + private static void GetTypeValues(string identifier, IReadOnlyCollection? attributes, IReadOnlyCollection? modifiers, IReadOnlyCollection? members, IReadOnlyCollection? typeParameterConstraintClauses, IReadOnlyCollection? typeParameters, IReadOnlyCollection? bases, int level, out SyntaxList attributeList, out SyntaxToken name, out SyntaxTokenList modifiersList, out BaseListSyntax? baseList, out SyntaxList membersList, out TypeParameterListSyntax? typeParameterList, out SyntaxList typeParameterConstraintList, out SyntaxToken openingBrace, out SyntaxToken closingBrace) { attributeList = List(attributes, level, true); diff --git a/version.json b/version.json index ffd1721..c585f2b 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "version": "1.0", + "version": "1.1", "publicReleaseRefSpec": [ "^refs/heads/master$", "^refs/heads/main$"