Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TypeBinaryExpression.cs
Go to the documentation of this file.
4
6
7[DebuggerTypeProxy(typeof(TypeBinaryExpressionProxy))]
8public sealed class TypeBinaryExpression : Expression
9{
10 public sealed override Type Type => typeof(bool);
11
12 public sealed override ExpressionType NodeType { get; }
13
14 public Expression Expression { get; }
15
16 public Type TypeOperand { get; }
17
18 internal TypeBinaryExpression(Expression expression, Type typeOperand, ExpressionType nodeType)
19 {
20 Expression = expression;
21 TypeOperand = typeOperand;
22 NodeType = nodeType;
23 }
24
26 {
28 if (type.IsValueType || TypeOperand.IsPointer)
29 {
30 if (type.IsNullableType())
31 {
32 if (type.GetNonNullableType() != TypeOperand.GetNonNullableType())
33 {
35 }
37 }
39 }
40 if (Expression.NodeType == ExpressionType.Constant)
41 {
43 }
44 if (Expression is ParameterExpression { IsByRef: false } parameterExpression)
45 {
46 return ByValParameterTypeEqual(parameterExpression);
47 }
48 ParameterExpression parameterExpression2 = System.Linq.Expressions.Expression.Parameter(typeof(object));
50 }
51
62
64 {
65 ConstantExpression constantExpression = Expression as ConstantExpression;
66 if (constantExpression.Value == null)
67 {
68 return Utils.Constant(value: false);
69 }
70 return Utils.Constant(TypeOperand.GetNonNullableType() == constantExpression.Value.GetType());
71 }
72
73 protected internal override Expression Accept(ExpressionVisitor visitor)
74 {
75 return visitor.VisitTypeBinary(this);
76 }
77
79 {
80 if (expression == Expression)
81 {
82 return this;
83 }
84 if (NodeType == ExpressionType.TypeIs)
85 {
87 }
89 }
90}
virtual Expression VisitTypeBinary(TypeBinaryExpression node)
static ConstantExpression Constant(object? value)
static BlockExpression Block(Expression arg0, Expression arg1)
static BinaryExpression NotEqual(Expression left, Expression right)
static MethodCallExpression Call(MethodInfo method)
static BinaryExpression Assign(Expression left, Expression right)
static TypeBinaryExpression TypeEqual(Expression expression, Type type)
static ParameterExpression Parameter(Type type)
static BinaryExpression ReferenceEqual(Expression left, Expression right)
virtual ExpressionType NodeType
static TypeBinaryExpression TypeIs(Expression expression, Type type)
static BinaryExpression AndAlso(Expression left, Expression right)
static BinaryExpression ReferenceNotEqual(Expression left, Expression right)
TypeBinaryExpression(Expression expression, Type typeOperand, ExpressionType nodeType)
Expression ByValParameterTypeEqual(ParameterExpression value)
TypeBinaryExpression Update(Expression expression)
override Expression Accept(ExpressionVisitor visitor)
static readonly ConstantExpression Null
Definition Utils.cs:62
static ConstantExpression Constant(bool value)
Definition Utils.cs:64
bool IsInterface
Definition Type.cs:30
bool IsPointer
Definition Type.cs:75