Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
InstanceMethodCallExpression2.cs
Go to the documentation of this file.
5
7
9{
10 private object _arg0;
11
12 private readonly Expression _arg1;
13
14 public override int ArgumentCount => 2;
15
22
23 public override Expression GetArgument(int index)
24 {
25 return index switch
26 {
27 0 => ExpressionUtils.ReturnObject<Expression>(_arg0),
28 1 => _arg1,
29 _ => throw new ArgumentOutOfRangeException("index"),
30 };
31 }
32
34 {
35 if (arguments != null && arguments.Count == 2)
36 {
38 {
39 return ExpressionUtils.SameElements(arguments, current);
40 }
42 enumerator.MoveNext();
43 if (enumerator.Current == _arg0)
44 {
45 enumerator.MoveNext();
46 return enumerator.Current == _arg1;
47 }
48 }
49 return false;
50 }
51
56
58 {
59 if (args != null)
60 {
61 return Expression.Call(instance, base.Method, args[0], args[1]);
62 }
63 return Expression.Call(instance, base.Method, ExpressionUtils.ReturnObject<Expression>(_arg0), _arg1);
64 }
65}
static ReadOnlyCollection< ParameterExpression > ReturnReadOnly(IParameterProvider provider, ref object collection)
static MethodCallExpression Call(MethodInfo method)
override bool SameArguments(ICollection< Expression > arguments)
override MethodCallExpression Rewrite(Expression instance, IReadOnlyList< Expression > args)
InstanceMethodCallExpression2(MethodInfo method, Expression instance, Expression arg0, Expression arg1)
override ReadOnlyCollection< Expression > GetOrMakeArguments()