Beispiel #1
0
        private static ExpressionSyntax GetNewNode(PrefixUnaryExpressionSyntax logicalNot)
        {
            SyntaxToken      operatorToken = logicalNot.OperatorToken;
            ExpressionSyntax operand       = logicalNot.Operand;

            switch (operand.Kind())
            {
            case SyntaxKind.TrueLiteralExpression:
            case SyntaxKind.FalseLiteralExpression:
            {
                SyntaxTriviaList leadingTrivia = operatorToken.LeadingTrivia
                                                 .AddRange(operatorToken.TrailingTrivia)
                                                 .AddRange(operand.GetLeadingTrivia());

                LiteralExpressionSyntax expression = (operand.IsKind(SyntaxKind.TrueLiteralExpression))
                            ? FalseLiteralExpression()
                            : TrueLiteralExpression();

                return(expression
                       .WithLeadingTrivia(leadingTrivia)
                       .WithTrailingTrivia(logicalNot.GetTrailingTrivia()));
            }

            case SyntaxKind.LogicalNotExpression:
            {
                var              logicalNot2    = (PrefixUnaryExpressionSyntax)operand;
                SyntaxToken      operatorToken2 = logicalNot2.OperatorToken;
                ExpressionSyntax operand2       = logicalNot2.Operand;

                SyntaxTriviaList leadingTrivia = operatorToken.LeadingTrivia
                                                 .AddRange(operatorToken.TrailingTrivia)
                                                 .AddRange(operatorToken2.LeadingTrivia)
                                                 .AddRange(operatorToken2.TrailingTrivia)
                                                 .AddRange(operand2.GetLeadingTrivia());

                return(operand2
                       .WithLeadingTrivia(leadingTrivia)
                       .WithTrailingTrivia(logicalNot.GetTrailingTrivia()));
            }
            }

            return(null);
        }