Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ VisitTypeAssert()

override QilNode System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitTypeAssert ( QilTargetType local0)
inlineprotectedvirtual

Reimplemented from System.Xml.Xsl.Qil.QilVisitor.

Definition at line 2553 of file XmlILOptimizerVisitor.cs.

2554 {
2555 QilNode qilNode = local0[0];
2556 QilNode qilNode2 = local0[1];
2557 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
2558 {
2559 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
2560 }
2561 if (this[XmlILOptimization.EliminateTypeAssert] && qilNode2.NodeType == QilNodeType.LiteralType)
2562 {
2563 XmlQueryType baseType = (XmlQueryType)((QilLiteral)qilNode2).Value;
2564 if (qilNode.XmlType.NeverSubtypeOf(baseType) && AllowReplace(XmlILOptimization.EliminateTypeAssert, local0))
2565 {
2566 return Replace(XmlILOptimization.EliminateTypeAssert, local0, VisitError(f.Error(VisitLiteralString(f.LiteralString(string.Empty)))));
2567 }
2568 }
2569 if (this[XmlILOptimization.EliminateTypeAssert] && qilNode2.NodeType == QilNodeType.LiteralType)
2570 {
2571 XmlQueryType xmlQueryType = (XmlQueryType)((QilLiteral)qilNode2).Value;
2572 if (qilNode.XmlType.Prime.NeverSubtypeOf(xmlQueryType.Prime) && AllowReplace(XmlILOptimization.EliminateTypeAssert, local0))
2573 {
2575 }
2576 }
2577 if (this[XmlILOptimization.EliminateTypeAssertOptional] && qilNode2.NodeType == QilNodeType.LiteralType)
2578 {
2579 XmlQueryType baseType2 = (XmlQueryType)((QilLiteral)qilNode2).Value;
2580 if (qilNode.XmlType.IsSubtypeOf(baseType2) && AllowReplace(XmlILOptimization.EliminateTypeAssertOptional, local0))
2581 {
2582 return Replace(XmlILOptimization.EliminateTypeAssertOptional, local0, qilNode);
2583 }
2584 }
2585 return NoReplace(local0);
2586 }
override QilNode VisitIsEmpty(QilUnary local0)
override QilNode VisitError(QilUnary local0)
override QilNode VisitConditional(QilTernary local0)
bool AllowReplace(XmlILOptimization pattern, QilNode original)
override QilNode VisitNop(QilUnary local0)
override QilNode VisitSequence(QilList local0)
QilList Sequence(IList< QilNode > values)
Definition QilFactory.cs:44
QilUnary IsEmpty(QilNode child)
QilLiteral LiteralString(string value)
QilTernary Conditional(QilNode left, QilNode center, QilNode right)
QilUnary Nop(QilNode child)
QilUnary Error(QilNode child)
override QilNode VisitLiteralString(QilLiteral n)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AllowReplace(), System.Xml.Xsl.Qil.QilFactory.Conditional(), System.Xml.Dictionary, System.Xml.Xsl.Qil.QilFactory.Error(), System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.Qil.QilFactory.IsEmpty(), System.Xml.Xsl.Qil.QilFactory.LiteralString(), System.Xml.Xsl.XmlQueryTypeFactory.None, System.Xml.Xsl.Qil.QilFactory.Nop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.NoReplace(), System.Xml.Replace, System.Xml.Xsl.Qil.QilFactory.Sequence(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitConditional(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitError(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitIsEmpty(), System.Xml.Xsl.Qil.QilPatternVisitor.VisitLiteralString(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitSequence().