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); }
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); }