Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ConstantCheck.cs
Go to the documentation of this file.
1
using
System.Dynamic.Utils
;
2
3
namespace
System.Linq.Expressions
;
4
5
internal
static
class
ConstantCheck
6
{
7
internal
static
bool
IsNull
(
Expression
e)
8
{
9
return
e.NodeType
switch
10
{
11
ExpressionType.Constant => ((
ConstantExpression
)e).Value ==
null
,
12
ExpressionType.Default => e.
Type
.IsNullableOrReferenceType(),
13
_ =>
false
,
14
};
15
}
16
17
internal
static
AnalyzeTypeIsResult
AnalyzeTypeIs
(
TypeBinaryExpression
typeIs)
18
{
19
return
AnalyzeTypeIs
(typeIs.
Expression
, typeIs.
TypeOperand
);
20
}
21
22
private
static
AnalyzeTypeIsResult
AnalyzeTypeIs
(
Expression
operand,
Type
testType)
23
{
24
Type
type
= operand.
Type
;
25
if
(
type
== typeof(
void
))
26
{
27
if
(!(testType == typeof(
void
)))
28
{
29
return
AnalyzeTypeIsResult
.KnownFalse;
30
}
31
return
AnalyzeTypeIsResult
.KnownTrue;
32
}
33
if
(testType == typeof(
void
) || testType.
IsPointer
)
34
{
35
return
AnalyzeTypeIsResult
.KnownFalse;
36
}
37
Type
nonNullableType =
type
.GetNonNullableType();
38
Type
nonNullableType2 = testType.GetNonNullableType();
39
if
(nonNullableType2.
IsAssignableFrom
(nonNullableType))
40
{
41
if
(
type
.IsValueType && !
type
.IsNullableType())
42
{
43
return
AnalyzeTypeIsResult
.KnownTrue;
44
}
45
return
AnalyzeTypeIsResult
.KnownAssignable;
46
}
47
return
AnalyzeTypeIsResult
.Unknown;
48
}
49
}
System.Linq.Expressions.ConstantCheck.AnalyzeTypeIs
static AnalyzeTypeIsResult AnalyzeTypeIs(TypeBinaryExpression typeIs)
Definition
ConstantCheck.cs:17
System.Linq.Expressions.ConstantCheck.IsNull
static bool IsNull(Expression e)
Definition
ConstantCheck.cs:7
System.Linq.Expressions.ConstantCheck.AnalyzeTypeIs
static AnalyzeTypeIsResult AnalyzeTypeIs(Expression operand, Type testType)
Definition
ConstantCheck.cs:22
System.Linq.Expressions.ConstantCheck
Definition
ConstantCheck.cs:6
System.Linq.Expressions.ConstantExpression
Definition
ConstantExpression.cs:7
System.Linq.Expressions.Expression.Type
virtual Type Type
Definition
Expression.cs:683
System.Linq.Expressions.Expression
Definition
Expression.cs:5484
System.Linq.Expressions.TypeBinaryExpression.Expression
Expression Expression
Definition
TypeBinaryExpression.cs:14
System.Linq.Expressions.TypeBinaryExpression.TypeOperand
Type TypeOperand
Definition
TypeBinaryExpression.cs:16
System.Linq.Expressions.TypeBinaryExpression
Definition
TypeBinaryExpression.cs:9
System.Type.IsAssignableFrom
virtual bool IsAssignableFrom([NotNullWhen(true)] Type? c)
Definition
Type.cs:1561
System.Type.IsPointer
bool IsPointer
Definition
Type.cs:75
System.Type
Definition
Type.cs:14
System.Dynamic.Utils
Definition
CacheDict.cs:4
System.Linq.Expressions.AnalyzeTypeIsResult
AnalyzeTypeIsResult
Definition
AnalyzeTypeIsResult.cs:4
System.Linq.Expressions
Definition
AnalyzedTree.cs:3
System.ExceptionArgument.type
@ type
source
System.Linq.Expressions
System.Linq.Expressions
ConstantCheck.cs
Generated by
1.10.0