public override SyntaxNode VisitConditionalExpression(ConditionalExpressionSyntax node)
        {
            ConditionalExpressionSyntax original = node;

            node = (ConditionalExpressionSyntax)base.VisitConditionalExpression(node);

            Optional <object> value = GetConstantValueSafe(original.Condition);

            if (value.HasValue)
            {
                if (value.Value is bool)
                {
                    SyntaxNode replacement;
                    if ((bool)value.Value)
                    {
                        Changed     = true;
                        replacement = node.WhenTrue.WithTriviaFrom(node);
                    }
                    else
                    {
                        Changed     = true;
                        replacement = node.WhenFalse.WithTriviaFrom(node);
                    }
#pragma warning disable CS0162 // unreachable
                    if (trace)
                    {
                        Console.WriteLine("DEAD: {0} ==> {1}", node.ToFullString(), replacement.ToFullString());
                    }
#pragma warning restore CS0162
                    return(replacement);
                }
            }

            return(node);
        }
Exemple #2
0
        public override void VisitConditionalExpression(ConditionalExpressionSyntax node)
        {
            if (debug)
            {
                Console.WriteLine(node.ToFullString());
            }
            // Todo("ConditionalExpression");
            var nl = OurLine.NewLine(LineKind.Decl, "ConditionalExpression");

            OurLine.AddEssentialInfo(ref nl, "condition:" + node.Condition.ToString());
            OurLine.AddEssentialInfo(ref nl, "whentrue:" + node.WhenTrue.ToString());
            OurLine.AddEssentialInfo(ref nl, "whenfalse:" + node.WhenFalse.ToString());
            nl.Source     = node.ToFullString();
            nl.ParentKind = node.Parent.RawKind;
            nl.RawKind    = node.RawKind;
            LogCommand(nl);
            base.VisitConditionalExpression(node);
        }