System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitConditional C# (CSharp) Method

VisitConditional() protected method

protected VisitConditional ( QilTernary local0 ) : QilNode
local0 System.Xml.Xsl.Qil.QilTernary
return QilNode
        protected override QilNode VisitConditional(QilTernary local0) {
            QilNode local1 = local0[0];
            QilNode local2 = local0[1];
            QilNode local3 = local0[2];
            if (this[XmlILOptimization.FoldNone]) {
                if ( (object) ( (local1).XmlType ) == (object) XmlQueryTypeFactory.None ) {
                    if (AllowReplace(XmlILOptimization.FoldNone, local0)) {
                        return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(local1)));
                    }
                }
            }
            if (this[XmlILOptimization.EliminateConditional]) {
                if (local1.NodeType == QilNodeType.True) {
                    if (AllowReplace(XmlILOptimization.EliminateConditional, local0)) {
                        return Replace(XmlILOptimization.EliminateConditional, local0, local2);
                    }
                }
            }
            if (this[XmlILOptimization.EliminateConditional]) {
                if (local1.NodeType == QilNodeType.False) {
                    if (AllowReplace(XmlILOptimization.EliminateConditional, local0)) {
                        return Replace(XmlILOptimization.EliminateConditional, local0, local3);
                    }
                }
            }
            if (this[XmlILOptimization.EliminateConditional]) {
                if (local2.NodeType == QilNodeType.True) {
                    if (local3.NodeType == QilNodeType.False) {
                        if (AllowReplace(XmlILOptimization.EliminateConditional, local0)) {
                            return Replace(XmlILOptimization.EliminateConditional, local0, local1);
                        }
                    }
                }
            }
            if (this[XmlILOptimization.EliminateConditional]) {
                if (local2.NodeType == QilNodeType.False) {
                    if (local3.NodeType == QilNodeType.True) {
                        if (AllowReplace(XmlILOptimization.EliminateConditional, local0)) {
                            return Replace(XmlILOptimization.EliminateConditional, local0, VisitNot(f.Not(local1)));
                        }
                    }
                }
            }
            if (this[XmlILOptimization.FoldConditionalNot]) {
                if (local1.NodeType == QilNodeType.Not) {
                    QilNode local4 = local1[0];
                    if (AllowReplace(XmlILOptimization.FoldConditionalNot, local0)) {
                        return Replace(XmlILOptimization.FoldConditionalNot, local0, VisitConditional(f.Conditional(local4, local3, local2)));
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeConditionalText]) {
                if (local2.NodeType == QilNodeType.TextCtor) {
                    QilNode local4 = local2[0];
                    if (local3.NodeType == QilNodeType.TextCtor) {
                        QilNode local5 = local3[0];
                        if (AllowReplace(XmlILOptimization.NormalizeConditionalText, local0)) {
                            return Replace(XmlILOptimization.NormalizeConditionalText, local0, VisitTextCtor(f.TextCtor(VisitConditional(f.Conditional(local1, local4, local5)))));
                        }
                    }
                }
            }
            return NoReplace(local0);
        }
        
XmlILOptimizerVisitor