From e30e5be3be403af33458c0cb62d981c1a9ed526d Mon Sep 17 00:00:00 2001 From: dogfuntom Date: Tue, 6 Jan 2015 05:24:22 +0300 Subject: [PATCH 1/2] #2 fixed --- .../CodeFixProvider.cs | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer/CodeFixProvider.cs b/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer/CodeFixProvider.cs index fd428ef..3eb4672 100644 --- a/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer/CodeFixProvider.cs +++ b/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer/CodeFixProvider.cs @@ -54,6 +54,35 @@ private static TNode CreateNodeWithSourceFormatting(SyntaxNode sourceNode .WithTrailingTrivia(sourceNode.GetTrailingTrivia()); } + private static ExpressionSyntax ExtractSimpleAssignmentRight(AssignmentExpressionSyntax assignment) + { + switch (assignment.CSharpKind()) + { + case SyntaxKind.AddAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.AddExpression, assignment.Left, assignment.Right); + case SyntaxKind.SubtractAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.SubtractExpression, assignment.Left, assignment.Right); + case SyntaxKind.MultiplyAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.MultiplyExpression, assignment.Left, assignment.Right); + case SyntaxKind.DivideAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.DivideExpression, assignment.Left, assignment.Right); + case SyntaxKind.ModuloAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.ModuloExpression, assignment.Left, assignment.Right); + case SyntaxKind.AndAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.AndAssignmentExpression, assignment.Left, assignment.Right); + case SyntaxKind.OrAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.OrAssignmentExpression, assignment.Left, assignment.Right); + case SyntaxKind.ExclusiveOrAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.ExclusiveOrExpression, assignment.Left, assignment.Right); + case SyntaxKind.LeftShiftAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.LeftShiftExpression, assignment.Left, assignment.Right); + case SyntaxKind.RightShiftAssignmentExpression: + return SyntaxFactory.BinaryExpression(SyntaxKind.RightShiftExpression, assignment.Left, assignment.Right); + default: + return assignment.Right; + } + } + private static LocalDeclarationStatementSyntax CreateVarDeclaration(string symbolName, ExpressionSyntax expression) { return @@ -78,8 +107,8 @@ private async static Task ApplyAssignmentCodeFix(Document sourceDocu SyntaxFactory .ConditionalExpression( ApplyFormatting(SyntaxFactory.ParenthesizedExpression(ifStatement.Condition)), - ApplyFormatting(truePartExpr.Right), - ApplyFormatting(falsePartExpr.Right)); + ApplyFormatting(ExtractSimpleAssignmentRight(truePartExpr)), + ApplyFormatting(ExtractSimpleAssignmentRight(falsePartExpr))); var assignmentExpr = SyntaxFactory From 14cd5549fb945bcb3c30b1af5e044b99be2d63d4 Mon Sep 17 00:00:00 2001 From: dogfuntom Date: Tue, 6 Jan 2015 05:45:13 +0300 Subject: [PATCH 2/2] added VS14 Ultimate support --- .../source.extension.vsixmanifest | 1 + 1 file changed, 1 insertion(+) diff --git a/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer.Vsix/source.extension.vsixmanifest b/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer.Vsix/source.extension.vsixmanifest index 22ecbfa..b996447 100644 --- a/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer.Vsix/source.extension.vsixmanifest +++ b/UseConditionalOperatorAnalyzer/UseConditionalOperatorAnalyzer.Vsix/source.extension.vsixmanifest @@ -10,6 +10,7 @@ +