Пример #1
0
            private SwitchExpressionArmSyntax ConstructSwitchArm(SwitchSectionSyntax section)
            {
                var isDefault = section
                                .Descendants <DefaultSwitchLabelSyntax>()
                                .Any();

                var returnStatement = section
                                      .Descendants <ReturnStatementSyntax>()
                                      .FirstOrDefault();

                if (returnStatement?.Expression == null)
                {
                    return(null);
                }

                PatternSyntax pattern;

                if (!isDefault)
                {
                    var labelExpression = section.Labels
                                          .FirstOrDefault()
                                          ?.DescendantsAndSelf <ExpressionSyntax>()
                                          .FirstOrDefault();

                    pattern = ConstantPattern(labelExpression);
                }
                else
                {
                    pattern = DiscardPattern();
                }

                var arm = SwitchExpressionArm(
                    pattern,
                    null,
                    Token(SyntaxKind.EqualsGreaterThanToken)
                    .WithLeadingTrivia(Space)
                    .WithTrailingTrivia(Space),
                    returnStatement.Expression)
                          .WithLeadingTrivia(section.GetLeadingTrivia());

                if (isDefault)
                {
                    arm = arm.WithTrailingTrivia(EndOfLine(Environment.NewLine));
                }

                return(arm);
            }