Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
LoopExpression.cs
Go to the documentation of this file.
2
4
5[DebuggerTypeProxy(typeof(LoopExpressionProxy))]
6public sealed class LoopExpression : Expression
7{
8 public sealed override Type Type
9 {
10 get
11 {
12 if (BreakLabel != null)
13 {
14 return BreakLabel.Type;
15 }
16 return typeof(void);
17 }
18 }
19
20 public sealed override ExpressionType NodeType => ExpressionType.Loop;
21
22 public Expression Body { get; }
23
24 public LabelTarget? BreakLabel { get; }
25
26 public LabelTarget? ContinueLabel { get; }
27
28 internal LoopExpression(Expression body, LabelTarget @break, LabelTarget @continue)
29 {
30 Body = body;
31 BreakLabel = @break;
32 ContinueLabel = @continue;
33 }
34
35 protected internal override Expression Accept(ExpressionVisitor visitor)
36 {
37 return visitor.VisitLoop(this);
38 }
39
40 public LoopExpression Update(LabelTarget? breakLabel, LabelTarget? continueLabel, Expression body)
41 {
42 if (breakLabel == BreakLabel && continueLabel == ContinueLabel && body == Body)
43 {
44 return this;
45 }
46 return Expression.Loop(body, breakLabel, continueLabel);
47 }
48}
virtual Expression VisitLoop(LoopExpression node)
static LoopExpression Loop(Expression body)
LoopExpression Update(LabelTarget? breakLabel, LabelTarget? continueLabel, Expression body)
override Expression Accept(ExpressionVisitor visitor)
LoopExpression(Expression body, LabelTarget @break, LabelTarget @continue)