519 references to ExpressionKind
Microsoft.CSharp (519)
Microsoft\CSharp\RuntimeBinder\ExpressionTreeCallRewriter.cs (1)
56
Debug.Assert(binOp.Kind ==
ExpressionKind
.Sequence);
Microsoft\CSharp\RuntimeBinder\RuntimeBinder.cs (6)
963
?? _binder.bindUDUnop(op == OperatorKind.OP_TRUE ?
ExpressionKind
.True :
ExpressionKind
.False, arg1)
987
ExpressionKind
ek = Operators.GetExpressionKind(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));
994
if (ek >
ExpressionKind
.MultiOffset)
996
ek = (
ExpressionKind
)(ek -
ExpressionKind
.MultiOffset);
Microsoft\CSharp\RuntimeBinder\Semantics\COperators.cs (81)
15
public readonly
ExpressionKind
ExpressionKind;
17
public OperatorInfo(TokenKind kind, PredefinedName pn,
ExpressionKind
e)
26
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
27
new OperatorInfo(TokenKind.Equal, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
28
new OperatorInfo(TokenKind.PlusEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.Add ),
29
new OperatorInfo(TokenKind.MinusEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.Subtract ),
30
new OperatorInfo(TokenKind.SplatEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.Multiply ),
31
new OperatorInfo(TokenKind.SlashEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.Divide ),
32
new OperatorInfo(TokenKind.PercentEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.Modulo ),
33
new OperatorInfo(TokenKind.AndEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.BitwiseAnd ),
34
new OperatorInfo(TokenKind.HatEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.BitwiseExclusiveOr),
35
new OperatorInfo(TokenKind.BarEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.BitwiseOr ),
36
new OperatorInfo(TokenKind.LeftShiftEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.LeftShirt ),
37
new OperatorInfo(TokenKind.RightShiftEqual, PredefinedName.PN_COUNT,
ExpressionKind
.MultiOffset + (int)
ExpressionKind
.RightShift ),
38
new OperatorInfo(TokenKind.Question, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
39
new OperatorInfo(TokenKind.QuestionQuestion, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
40
new OperatorInfo(TokenKind.LogicalOr, PredefinedName.PN_COUNT,
ExpressionKind
.LogicalOr ),
41
new OperatorInfo(TokenKind.LogicalAnd, PredefinedName.PN_COUNT,
ExpressionKind
.LogicalAnd ),
42
new OperatorInfo(TokenKind.Bar, PredefinedName.PN_OPBITWISEOR,
ExpressionKind
.BitwiseOr ),
43
new OperatorInfo(TokenKind.Hat, PredefinedName.PN_OPXOR,
ExpressionKind
.BitwiseExclusiveOr ),
44
new OperatorInfo(TokenKind.Ampersand, PredefinedName.PN_OPBITWISEAND,
ExpressionKind
.BitwiseAnd ),
45
new OperatorInfo(TokenKind.EqualEqual, PredefinedName.PN_OPEQUALITY,
ExpressionKind
.Eq ),
46
new OperatorInfo(TokenKind.NotEqual, PredefinedName.PN_OPINEQUALITY,
ExpressionKind
.NotEq ),
47
new OperatorInfo(TokenKind.LessThan, PredefinedName.PN_OPLESSTHAN,
ExpressionKind
.LessThan ),
48
new OperatorInfo(TokenKind.LessThanEqual, PredefinedName.PN_OPLESSTHANOREQUAL,
ExpressionKind
.LessThanOrEqual ),
49
new OperatorInfo(TokenKind.GreaterThan, PredefinedName.PN_OPGREATERTHAN,
ExpressionKind
.GreaterThan ),
50
new OperatorInfo(TokenKind.GreaterThanEqual, PredefinedName.PN_OPGREATERTHANOREQUAL,
ExpressionKind
.GreaterThanOrEqual ),
51
new OperatorInfo(TokenKind.Is, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
52
new OperatorInfo(TokenKind.As, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
53
new OperatorInfo(TokenKind.LeftShift, PredefinedName.PN_OPLEFTSHIFT,
ExpressionKind
.LeftShirt ),
54
new OperatorInfo(TokenKind.RightShift, PredefinedName.PN_OPRIGHTSHIFT,
ExpressionKind
.RightShift ),
55
new OperatorInfo(TokenKind.Plus, PredefinedName.PN_OPPLUS,
ExpressionKind
.Add ),
56
new OperatorInfo(TokenKind.Minus, PredefinedName.PN_OPMINUS,
ExpressionKind
.Subtract ),
57
new OperatorInfo(TokenKind.Splat, PredefinedName.PN_OPMULTIPLY,
ExpressionKind
.Multiply ),
58
new OperatorInfo(TokenKind.Slash, PredefinedName.PN_OPDIVISION,
ExpressionKind
.Divide ),
59
new OperatorInfo(TokenKind.Percent, PredefinedName.PN_OPMODULUS,
ExpressionKind
.Modulo ),
60
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
61
new OperatorInfo(TokenKind.Plus, PredefinedName.PN_OPUNARYPLUS,
ExpressionKind
.UnaryPlus ),
62
new OperatorInfo(TokenKind.Minus, PredefinedName.PN_OPUNARYMINUS,
ExpressionKind
.Negate ),
63
new OperatorInfo(TokenKind.Tilde, PredefinedName.PN_OPCOMPLEMENT,
ExpressionKind
.BitwiseNot ),
64
new OperatorInfo(TokenKind.Bang, PredefinedName.PN_OPNEGATION,
ExpressionKind
.LogicalNot ),
65
new OperatorInfo(TokenKind.PlusPlus, PredefinedName.PN_OPINCREMENT,
ExpressionKind
.Add ),
66
new OperatorInfo(TokenKind.MinusMinus, PredefinedName.PN_OPDECREMENT,
ExpressionKind
.Subtract ),
67
new OperatorInfo(TokenKind.TypeOf, PredefinedName.PN_COUNT,
ExpressionKind
.TypeOf ),
68
new OperatorInfo(TokenKind.Checked, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
69
new OperatorInfo(TokenKind.Unchecked, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
70
new OperatorInfo(TokenKind.MakeRef, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
71
new OperatorInfo(TokenKind.RefValue, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
72
new OperatorInfo(TokenKind.RefType, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
73
new OperatorInfo(TokenKind.ArgList, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
74
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
75
new OperatorInfo(TokenKind.Splat, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
76
new OperatorInfo(TokenKind.Ampersand, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
77
new OperatorInfo(TokenKind.Colon, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
78
new OperatorInfo(TokenKind.This, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
79
new OperatorInfo(TokenKind.Base, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
80
new OperatorInfo(TokenKind.Null, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
81
new OperatorInfo(TokenKind.True, PredefinedName.PN_OPTRUE,
ExpressionKind
.ExpressionKindCount ),
82
new OperatorInfo(TokenKind.False, PredefinedName.PN_OPFALSE,
ExpressionKind
.ExpressionKindCount ),
83
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
84
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
85
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
86
new OperatorInfo(TokenKind.PlusPlus, PredefinedName.PN_COUNT,
ExpressionKind
.Add ),
87
new OperatorInfo(TokenKind.MinusMinus, PredefinedName.PN_COUNT,
ExpressionKind
.Subtract ),
88
new OperatorInfo(TokenKind.Dot, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount ),
89
new OperatorInfo(TokenKind.Implicit, PredefinedName.PN_OPIMPLICITMN,
ExpressionKind
.ExpressionKindCount ),
90
new OperatorInfo(TokenKind.Explicit, PredefinedName.PN_OPEXPLICITMN,
ExpressionKind
.ExpressionKindCount ),
91
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_OPEQUALS,
ExpressionKind
.ExpressionKindCount ),
92
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_OPCOMPARE,
ExpressionKind
.ExpressionKindCount ),
93
new OperatorInfo(TokenKind.Unknown, PredefinedName.PN_COUNT,
ExpressionKind
.ExpressionKindCount )
126
public static
ExpressionKind
GetExpressionKind(OperatorKind op) => GetInfo(op).ExpressionKind;
Microsoft\CSharp\RuntimeBinder\Semantics\ExpressionBinder.cs (10)
262
private delegate Expr PfnBindBinOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr op1, Expr op2);
263
private delegate Expr PfnBindUnaOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr op);
537
internal Expr bindUDUnop(
ExpressionKind
ek, Expr arg)
870
case
ExpressionKind
.Property:
898
case
ExpressionKind
.Field:
1052
(((pObject.Flags & EXPRFLAG.EXF_LVALUE) != 0) && (pObject.Kind !=
ExpressionKind
.Property)) ||
1605
private static Name ExpressionKindName(
ExpressionKind
ek)
1607
Debug.Assert(ek >=
ExpressionKind
.FirstOp && (ek -
ExpressionKind
.FirstOp) < (int)EK2NAME.Length);
1608
return NameManager.GetPredefinedName(EK2NAME[ek -
ExpressionKind
.FirstOp]);
Microsoft\CSharp\RuntimeBinder\Semantics\ExpressionKind.cs (16)
104
public static bool IsRelational(this
ExpressionKind
kind)
106
return
ExpressionKind
.RelationalMin <= kind && kind <=
ExpressionKind
.RelationalMax;
109
public static bool IsUnaryOperator(this
ExpressionKind
kind)
113
case
ExpressionKind
.True:
114
case
ExpressionKind
.False:
115
case
ExpressionKind
.Inc:
116
case
ExpressionKind
.Dec:
117
case
ExpressionKind
.LogicalNot:
118
case
ExpressionKind
.Negate:
119
case
ExpressionKind
.UnaryPlus:
120
case
ExpressionKind
.BitwiseNot:
121
case
ExpressionKind
.Addr:
122
case
ExpressionKind
.DecimalNegate:
123
case
ExpressionKind
.DecimalInc:
124
case
ExpressionKind
.DecimalDec:
Microsoft\CSharp\RuntimeBinder\Semantics\EXPRExtensions.cs (4)
52
Debug.Assert(expr?.Kind >=
ExpressionKind
.TypeLimit && 0 != (expr.Flags & EXPRFLAG.EXF_BINOP));
77
while (exprVal.Kind ==
ExpressionKind
.Sequence)
95
case
ExpressionKind
.Constant:
96
case
ExpressionKind
.ZeroInit:
Microsoft\CSharp\RuntimeBinder\Semantics\ExprFactory.cs (10)
152
public static ExprBinOp CreateBinop(
ExpressionKind
exprKind, CType type, Expr left, Expr right) =>
155
public static ExprUnaryOp CreateUnaryOp(
ExpressionKind
exprKind, CType type, Expr operand) =>
158
public static ExprOperator CreateOperator(
ExpressionKind
exprKind, CType type, Expr arg1, Expr arg2)
167
public static ExprBinOp CreateUserDefinedBinop(
ExpressionKind
exprKind, CType type, Expr left, Expr right, Expr call, MethPropWithInst userMethod) =>
171
public static ExprUnaryOp CreateUserDefinedUnaryOperator(
ExpressionKind
exprKind, CType type, Expr operand, ExprCall call, MethPropWithInst userMethod) =>
177
ExprUnaryOp unary = CreateUnaryOp(
ExpressionKind
.Negate, operand.Type, operand);
186
CreateBinop(
ExpressionKind
.Sequence, second.Type, first, second);
203
ExprBinOp expr = CreateBinop(
ExpressionKind
.Save, wrap.Type, wrap.OptionalExpression, wrap);
224
if (first.Kind !=
ExpressionKind
.List)
232
Debug.Assert((last as ExprList).OptionalNextListNode.Kind !=
ExpressionKind
.List);
Microsoft\CSharp\RuntimeBinder\Semantics\Operators.cs (170)
138
private ExprBinOp BindUserDefinedBinOp(
ExpressionKind
ek, BinOpArgInfo info)
151
ek -
ExpressionKind
.LogicalAnd +
ExpressionKind
.BitwiseAnd, info.arg1, info.arg2, true, out pmpwi);
452
private static ExprBinOp BindNullEqualityComparison(
ExpressionKind
ek, BinOpArgInfo info)
486
public Expr BindStandardBinop(
ExpressionKind
ek, Expr arg1, Expr arg2)
561
private Expr BindStandardBinopCore(BinOpArgInfo info, BinOpFullSig bofs,
ExpressionKind
ek, EXPRFLAG flags)
603
private ExprBinOp BindLiftedStandardBinOp(BinOpArgInfo info, BinOpFullSig bofs,
ExpressionKind
ek, EXPRFLAG flags)
896
private static bool IsEnumArithmeticBinOp(
ExpressionKind
ek, BinOpArgInfo info) =>
899
ExpressionKind
.Add => info.typeRaw1.IsEnumType ^ info.typeRaw2.IsEnumType,
900
ExpressionKind
.Subtract => info.typeRaw1.IsEnumType | info.typeRaw2.IsEnumType,
1076
private static (
ExpressionKind
, UnaOpKind, EXPRFLAG) CalculateExprAndUnaryOpKinds(OperatorKind op, bool bChecked)
1078
ExpressionKind
ek;
1085
ek =
ExpressionKind
.UnaryPlus;
1094
ek =
ExpressionKind
.Negate;
1099
ek =
ExpressionKind
.BitwiseNot;
1104
ek =
ExpressionKind
.LogicalNot;
1114
ek =
ExpressionKind
.Add;
1123
ek =
ExpressionKind
.Add;
1133
ek =
ExpressionKind
.Subtract;
1142
ek =
ExpressionKind
.Subtract;
1178
(
ExpressionKind
ek, UnaOpKind unaryOpKind, EXPRFLAG flags) =
1296
private UnaryOperatorSignatureFindResult PopulateSignatureList(Expr pArgument, UnaOpKind unaryOpKind, UnaOpMask unaryOpMask,
ExpressionKind
exprKind, EXPRFLAG flags, List<UnaOpFullSig> pSignatures, out Expr ppResult)
1350
Expr exprVal = bindUDUnop((
ExpressionKind
)(exprKind -
ExpressionKind
.Add +
ExpressionKind
.Inc), exprGet);
1513
private ExprOperator BindLiftedStandardUnop(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1565
private static ExprOperator BindIntBinOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1575
private static ExprOperator BindIntUnaOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
1585
private static ExprOperator BindRealBinOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG _, Expr arg1, Expr arg2)
1595
private static ExprOperator BindRealUnaOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG _, Expr arg)
1606
private Expr BindIncOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1608
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1630
private Expr BindIncOpCore(
ExpressionKind
ek, EXPRFLAG flags, Expr exprVal, CType type)
1632
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1647
if (ek ==
ExpressionKind
.Add)
1649
ek =
ExpressionKind
.DecimalInc;
1654
ek =
ExpressionKind
.DecimalDec;
1688
private Expr LScalar(
ExpressionKind
ek, EXPRFLAG flags, Expr exprVal, CType type, ConstVal cv, CType typeTmp)
1702
private ExprMulti BindNonliftedIncOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1704
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1729
private ExprMulti BindLiftedIncOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1731
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1747
ExprUnaryOp exprRes = ExprFactory.CreateUnaryOp((ek ==
ExpressionKind
.Add) ?
ExpressionKind
.Inc :
ExpressionKind
.Dec, arg.Type/* type */, exprVal);
1763
private static ExprBinOp BindDecBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1778
case
ExpressionKind
.Add:
1779
case
ExpressionKind
.Subtract:
1780
case
ExpressionKind
.Multiply:
1781
case
ExpressionKind
.Divide:
1782
case
ExpressionKind
.Modulo:
1785
case
ExpressionKind
.LessThan:
1786
case
ExpressionKind
.LessThanOrEqual:
1787
case
ExpressionKind
.GreaterThan:
1788
case
ExpressionKind
.GreaterThanOrEqual:
1789
case
ExpressionKind
.Eq:
1790
case
ExpressionKind
.NotEq:
1805
private static ExprUnaryOp BindDecUnaOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
1808
Debug.Assert(ek ==
ExpressionKind
.Negate || ek ==
ExpressionKind
.UnaryPlus);
1813
if (ek ==
ExpressionKind
.Negate)
1816
return CreateUnaryOpForPredefMethodCall(
ExpressionKind
.DecimalNegate, predefMeth, typeDec, arg);
1818
return ExprFactory.CreateUnaryOp(
ExpressionKind
.UnaryPlus, typeDec, arg);
1825
private static Expr BindStrBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1827
Debug.Assert(ek ==
ExpressionKind
.Add);
1837
private static ExprBinOp BindShiftOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1839
Debug.Assert(ek ==
ExpressionKind
.LeftShirt || ek ==
ExpressionKind
.RightShift);
1855
private static ExprBinOp BindBoolBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1866
private ExprOperator BindBoolBitwiseOp(
ExpressionKind
ek, EXPRFLAG flags, Expr expr1, Expr expr2)
1868
Debug.Assert(ek ==
ExpressionKind
.BitwiseAnd || ek ==
ExpressionKind
.BitwiseOr);
1903
private static Expr BindLiftedBoolBitwiseOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr expr1, Expr expr2) => null;
1910
private static Expr BindBoolUnaOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
1913
Debug.Assert(ek ==
ExpressionKind
.LogicalNot);
1924
return ExprFactory.CreateUnaryOp(
ExpressionKind
.LogicalNot, typeBool, arg);
1935
private static ExprBinOp BindStrCmpOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1937
Debug.Assert(ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq);
1943
PREDEFMETH predefMeth = ek ==
ExpressionKind
.Eq ? PREDEFMETH.PM_STRING_OPEQUALITY : PREDEFMETH.PM_STRING_OPINEQUALITY;
1944
ek = ek ==
ExpressionKind
.Eq ?
ExpressionKind
.StringEq :
ExpressionKind
.StringNotEq;
1953
private static ExprBinOp BindRefCmpOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1955
Debug.Assert(ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq);
1969
private static Expr BindDelBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1971
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract || ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq);
1978
case
ExpressionKind
.Add:
1981
ek =
ExpressionKind
.DelegateAdd;
1984
case
ExpressionKind
.Subtract:
1987
ek =
ExpressionKind
.DelegateSubtract;
1990
case
ExpressionKind
.Eq:
1993
ek =
ExpressionKind
.DelegateEq;
1996
case
ExpressionKind
.NotEq:
1999
ek =
ExpressionKind
.DelegateNotEq;
2010
private static Expr BindEnumBinOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
2039
private Expr BindLiftedEnumArithmeticBinOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
2041
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
2086
private static Expr BindEnumUnaOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
2088
Debug.Assert(ek ==
ExpressionKind
.BitwiseNot);
2110
private (BinOpKind, EXPRFLAG) GetBinopKindAndFlags(
ExpressionKind
ek)
2116
case
ExpressionKind
.Add:
2123
case
ExpressionKind
.Subtract:
2130
case
ExpressionKind
.Divide:
2131
case
ExpressionKind
.Modulo:
2141
case
ExpressionKind
.Multiply:
2148
case
ExpressionKind
.BitwiseAnd:
2149
case
ExpressionKind
.BitwiseOr:
2152
case
ExpressionKind
.BitwiseExclusiveOr:
2155
case
ExpressionKind
.LeftShirt:
2156
case
ExpressionKind
.RightShift:
2159
case
ExpressionKind
.LogicalOr:
2160
case
ExpressionKind
.LogicalAnd:
2163
case
ExpressionKind
.LessThan:
2164
case
ExpressionKind
.LessThanOrEqual:
2165
case
ExpressionKind
.GreaterThan:
2166
case
ExpressionKind
.GreaterThanOrEqual:
2169
case
ExpressionKind
.Eq:
2170
case
ExpressionKind
.NotEq:
2187
private ExprOperator BindIntOp(
ExpressionKind
kind, EXPRFLAG flags, Expr op1, Expr op2, PredefinedType ptOp)
2195
Debug.Assert((op2 == null) == (kind ==
ExpressionKind
.Negate || kind ==
ExpressionKind
.UnaryPlus || kind ==
ExpressionKind
.BitwiseNot));
2197
if (kind ==
ExpressionKind
.Negate)
2272
private static ExprOperator BindFloatOp(
ExpressionKind
kind, Expr op1, Expr op2)
2330
private Expr BindUserBoolOp(
ExpressionKind
kind, ExprCall pCall)
2335
Debug.Assert(kind ==
ExpressionKind
.LogicalAnd || kind ==
ExpressionKind
.LogicalOr);
2357
Expr pCallT = bindUDUnop(
ExpressionKind
.True, pExprWrap);
2358
Expr pCallF = bindUDUnop(
ExpressionKind
.False, pExprWrap);
2367
return ExprFactory.CreateUserLogOp(typeRet, kind ==
ExpressionKind
.LogicalAnd ? pCallF : pCallT, pCall);
2406
private static bool UserDefinedBinaryOperatorCanBeLifted(
ExpressionKind
ek, MethodSymbol method, AggregateType ats,
2422
case
ExpressionKind
.Eq:
2423
case
ExpressionKind
.NotEq:
2433
case
ExpressionKind
.GreaterThan:
2434
case
ExpressionKind
.GreaterThanOrEqual:
2435
case
ExpressionKind
.LessThan:
2436
case
ExpressionKind
.LessThanOrEqual:
2451
ExpressionKind
ek, MethodSymbol method, AggregateType ats, Expr arg1, Expr arg2, bool fDontLift)
2489
List<CandidateFunctionMember> candidateList,
ExpressionKind
ek, AggregateType type,
2509
List<CandidateFunctionMember> candidateList,
ExpressionKind
ek, AggregateType type,
2524
private ExprCall BindUDBinop(
ExpressionKind
ek, Expr arg1, Expr arg2, bool fDontLift, out MethPropWithInst ppmpwi)
2602
private ExprCall BindLiftedUDBinop(
ExpressionKind
ek, Expr arg1, Expr arg2, TypeArray Params, MethPropWithInst mpwi)
2639
case
ExpressionKind
.Eq:
2640
case
ExpressionKind
.NotEq:
2646
case
ExpressionKind
.GreaterThan:
2647
case
ExpressionKind
.GreaterThanOrEqual:
2648
case
ExpressionKind
.LessThan:
2649
case
ExpressionKind
.LessThanOrEqual:
2658
Debug.Assert(!(ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq) || nonLiftedArg1.Type == nonLiftedArg2.Type);
2669
ExpressionKind
.Eq => NullableCallLiftKind.EqualityOperator,
2671
ExpressionKind
.NotEq => NullableCallLiftKind.InequalityOperator,
2680
private static AggregateType GetEnumBinOpType(
ExpressionKind
ek, CType argType1, CType argType2, out AggregateType ppEnumType)
2696
case
ExpressionKind
.BitwiseAnd:
2697
case
ExpressionKind
.BitwiseOr:
2698
case
ExpressionKind
.BitwiseExclusiveOr:
2702
case
ExpressionKind
.Add:
2706
case
ExpressionKind
.Subtract:
2722
private static ExprBinOp CreateBinopForPredefMethodCall(
ExpressionKind
ek, PREDEFMETH predefMeth, CType RetType, Expr arg1, Expr arg2)
2737
private static ExprUnaryOp CreateUnaryOpForPredefMethodCall(
ExpressionKind
ek, PREDEFMETH predefMeth, CType pRetType, Expr pArg)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\ArrayIndex.cs (1)
9
: base(
ExpressionKind
.ArrayIndex, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\ArrayInitialization.cs (1)
9
: base(
ExpressionKind
.ArrayInit, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Assignment.cs (1)
11
: base(
ExpressionKind
.Assignment)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\BinaryOperator.cs (4)
10
public ExprBinOp(
ExpressionKind
kind, CType type, Expr left, Expr right)
13
Debug.Assert(kind >
ExpressionKind
.TypeLimit);
21
public ExprBinOp(
ExpressionKind
kind, CType type, Expr left, Expr right, Expr call, MethPropWithInst userMethod)
24
Debug.Assert(kind >
ExpressionKind
.TypeLimit);
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\BoundAnonymousFunction.cs (1)
11
: base(
ExpressionKind
.BoundLambda, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Call.cs (1)
11
: base(
ExpressionKind
.Call, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Cast.cs (1)
12
: base(
ExpressionKind
.Cast, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Class.cs (1)
11
: base(
ExpressionKind
.Class, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\CompoundOperator.cs (2)
11
: base(
ExpressionKind
.MultiGet, type)
24
: base(
ExpressionKind
.Multi, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Concatenate.cs (1)
12
: base(
ExpressionKind
.Concat, TypeFromOperands(first, second))
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Constant.cs (1)
13
: base(
ExpressionKind
.Constant, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\EXPR.cs (2)
13
protected Expr(
ExpressionKind
kind)
22
public
ExpressionKind
Kind { get; }
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\ExprOperator.cs (3)
10
protected ExprOperator(
ExpressionKind
kind, CType type)
13
Debug.Assert(kind.IsUnaryOperator() || kind >
ExpressionKind
.TypeLimit);
16
protected ExprOperator(
ExpressionKind
kind, CType type, Expr call, MethPropWithInst userDefinedMethod)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\ExprWithArgs.cs (1)
8
protected ExprWithArgs(
ExpressionKind
kind, CType type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\ExprWithType.cs (1)
10
protected ExprWithType(
ExpressionKind
kind, CType type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Field.cs (1)
9
: base(
ExpressionKind
.Field, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\FieldInfo.cs (1)
11
: base(
ExpressionKind
.FieldInfo, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\List.cs (1)
9
: base(
ExpressionKind
.List)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\LocalVariable.cs (1)
11
: base(
ExpressionKind
.Local)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\MemberGroup.cs (1)
12
: base(
ExpressionKind
.MemberGroup, MethodGroupType.Instance)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\MethodInfo.cs (1)
14
: base(
ExpressionKind
.MethodInfo, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\NamedArgumentSpecification.cs (1)
13
: base(
ExpressionKind
.NamedArgumentSpecification)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Property.cs (1)
20
: base(
ExpressionKind
.Property, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\PropertyInfo.cs (1)
14
: base(
ExpressionKind
.PropertyInfo, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Temporary.cs (1)
9
: base(
ExpressionKind
.Wrap)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\TypeOf.cs (1)
11
: base(
ExpressionKind
.TypeOf, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\UnaryOperator.cs (2)
10
public ExprUnaryOp(
ExpressionKind
kind, CType type, Expr operand)
18
public ExprUnaryOp(
ExpressionKind
kind, CType type, Expr operand, Expr call, MethPropWithInst userMethod)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\UserDefinedConversion.cs (1)
13
: base(
ExpressionKind
.UserDefinedConversion)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\UserDefinedLogicalOperator.cs (1)
11
: base(
ExpressionKind
.UserLogicalOp, type)
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Visitors\ExpressionTreeRewriter.cs (81)
380
ExpressionKind
.LeftShirt => PREDEFMETH.PM_EXPRESSION_LEFTSHIFT,
381
ExpressionKind
.RightShift => PREDEFMETH.PM_EXPRESSION_RIGHTSHIFT,
382
ExpressionKind
.BitwiseExclusiveOr => PREDEFMETH.PM_EXPRESSION_EXCLUSIVEOR,
383
ExpressionKind
.BitwiseOr => PREDEFMETH.PM_EXPRESSION_OR,
384
ExpressionKind
.BitwiseAnd => PREDEFMETH.PM_EXPRESSION_AND,
385
ExpressionKind
.LogicalAnd => PREDEFMETH.PM_EXPRESSION_ANDALSO,
386
ExpressionKind
.LogicalOr => PREDEFMETH.PM_EXPRESSION_ORELSE,
387
ExpressionKind
.StringEq => PREDEFMETH.PM_EXPRESSION_EQUAL,
388
ExpressionKind
.Eq => PREDEFMETH.PM_EXPRESSION_EQUAL,
389
ExpressionKind
.StringNotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL,
390
ExpressionKind
.NotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL,
391
ExpressionKind
.GreaterThanOrEqual => PREDEFMETH.PM_EXPRESSION_GREATERTHANOREQUAL,
392
ExpressionKind
.LessThanOrEqual => PREDEFMETH.PM_EXPRESSION_LESSTHANOREQUAL,
393
ExpressionKind
.LessThan => PREDEFMETH.PM_EXPRESSION_LESSTHAN,
394
ExpressionKind
.GreaterThan => PREDEFMETH.PM_EXPRESSION_GREATERTHAN,
395
ExpressionKind
.Modulo => PREDEFMETH.PM_EXPRESSION_MODULO,
396
ExpressionKind
.Divide => PREDEFMETH.PM_EXPRESSION_DIVIDE,
397
ExpressionKind
.Multiply => expr.isChecked() ? PREDEFMETH.PM_EXPRESSION_MULTIPLYCHECKED : PREDEFMETH.PM_EXPRESSION_MULTIPLY,
398
ExpressionKind
.Subtract => expr.isChecked() ? PREDEFMETH.PM_EXPRESSION_SUBTRACTCHECKED : PREDEFMETH.PM_EXPRESSION_SUBTRACT,
399
ExpressionKind
.Add => expr.isChecked() ? PREDEFMETH.PM_EXPRESSION_ADDCHECKED : PREDEFMETH.PM_EXPRESSION_ADD,
481
case
ExpressionKind
.UnaryPlus:
483
case
ExpressionKind
.BitwiseNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT; break;
484
case
ExpressionKind
.LogicalNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT; break;
485
case
ExpressionKind
.Negate:
506
case
ExpressionKind
.LogicalOr: pdm = PREDEFMETH.PM_EXPRESSION_ORELSE_USER_DEFINED; break;
507
case
ExpressionKind
.LogicalAnd: pdm = PREDEFMETH.PM_EXPRESSION_ANDALSO_USER_DEFINED; break;
508
case
ExpressionKind
.LeftShirt: pdm = PREDEFMETH.PM_EXPRESSION_LEFTSHIFT_USER_DEFINED; break;
509
case
ExpressionKind
.RightShift: pdm = PREDEFMETH.PM_EXPRESSION_RIGHTSHIFT_USER_DEFINED; break;
510
case
ExpressionKind
.BitwiseExclusiveOr: pdm = PREDEFMETH.PM_EXPRESSION_EXCLUSIVEOR_USER_DEFINED; break;
511
case
ExpressionKind
.BitwiseOr: pdm = PREDEFMETH.PM_EXPRESSION_OR_USER_DEFINED; break;
512
case
ExpressionKind
.BitwiseAnd: pdm = PREDEFMETH.PM_EXPRESSION_AND_USER_DEFINED; break;
513
case
ExpressionKind
.Modulo: pdm = PREDEFMETH.PM_EXPRESSION_MODULO_USER_DEFINED; break;
514
case
ExpressionKind
.Divide: pdm = PREDEFMETH.PM_EXPRESSION_DIVIDE_USER_DEFINED; break;
515
case
ExpressionKind
.StringEq:
516
case
ExpressionKind
.StringNotEq:
517
case
ExpressionKind
.DelegateEq:
518
case
ExpressionKind
.DelegateNotEq:
519
case
ExpressionKind
.Eq:
520
case
ExpressionKind
.NotEq:
521
case
ExpressionKind
.GreaterThanOrEqual:
522
case
ExpressionKind
.GreaterThan:
523
case
ExpressionKind
.LessThanOrEqual:
524
case
ExpressionKind
.LessThan:
526
case
ExpressionKind
.DelegateSubtract:
527
case
ExpressionKind
.Subtract:
530
case
ExpressionKind
.DelegateAdd:
531
case
ExpressionKind
.Add:
534
case
ExpressionKind
.Multiply:
545
Debug.Assert(udcall.Kind ==
ExpressionKind
.Call || udcall.Kind ==
ExpressionKind
.UserLogicalOp);
549
Debug.Assert(args.OptionalNextListNode.Kind !=
ExpressionKind
.List);
558
Debug.Assert(args.OptionalNextListNode.Kind !=
ExpressionKind
.List);
570
if (expr.Kind ==
ExpressionKind
.DelegateSubtract || expr.Kind ==
ExpressionKind
.DelegateAdd)
592
Debug.Assert(arg != null && arg.Kind !=
ExpressionKind
.List);
595
case
ExpressionKind
.True:
596
case
ExpressionKind
.False:
598
case
ExpressionKind
.UnaryPlus:
601
case
ExpressionKind
.BitwiseNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT_USER_DEFINED; break;
602
case
ExpressionKind
.LogicalNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT_USER_DEFINED; break;
603
case
ExpressionKind
.DecimalNegate:
604
case
ExpressionKind
.Negate:
608
case
ExpressionKind
.Inc:
609
case
ExpressionKind
.Dec:
610
case
ExpressionKind
.DecimalInc:
611
case
ExpressionKind
.DecimalDec:
621
if (expr.Kind ==
ExpressionKind
.Inc || expr.Kind ==
ExpressionKind
.Dec ||
622
expr.Kind ==
ExpressionKind
.DecimalInc || expr.Kind ==
ExpressionKind
.DecimalDec)
636
ExpressionKind
.StringEq => PREDEFMETH.PM_EXPRESSION_EQUAL_USER_DEFINED,
637
ExpressionKind
.StringNotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL_USER_DEFINED,
638
ExpressionKind
.DelegateEq => PREDEFMETH.PM_EXPRESSION_EQUAL_USER_DEFINED,
639
ExpressionKind
.DelegateNotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL_USER_DEFINED,
640
ExpressionKind
.Eq => PREDEFMETH.PM_EXPRESSION_EQUAL_USER_DEFINED,
641
ExpressionKind
.NotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL_USER_DEFINED,
642
ExpressionKind
.LessThanOrEqual => PREDEFMETH.PM_EXPRESSION_LESSTHANOREQUAL_USER_DEFINED,
643
ExpressionKind
.LessThan => PREDEFMETH.PM_EXPRESSION_LESSTHAN_USER_DEFINED,
644
ExpressionKind
.GreaterThanOrEqual => PREDEFMETH.PM_EXPRESSION_GREATERTHANOREQUAL_USER_DEFINED,
645
ExpressionKind
.GreaterThan => PREDEFMETH.PM_EXPRESSION_GREATERTHAN_USER_DEFINED,
654
Debug.Assert(args.OptionalNextListNode.Kind !=
ExpressionKind
.List);
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\Visitors\ExprVisitorBase.cs (102)
18
ExpressionKind
.BinaryOp => VisitBINOP(pExpr as ExprBinOp),
19
ExpressionKind
.UnaryOp => VisitUNARYOP(pExpr as ExprUnaryOp),
20
ExpressionKind
.Assignment => VisitASSIGNMENT(pExpr as ExprAssignment),
21
ExpressionKind
.List => VisitLIST(pExpr as ExprList),
22
ExpressionKind
.ArrayIndex => VisitARRAYINDEX(pExpr as ExprArrayIndex),
23
ExpressionKind
.Call => VisitCALL(pExpr as ExprCall),
24
ExpressionKind
.Field => VisitFIELD(pExpr as ExprField),
25
ExpressionKind
.Local => VisitLOCAL(pExpr as ExprLocal),
26
ExpressionKind
.Constant => VisitCONSTANT(pExpr as ExprConstant),
27
ExpressionKind
.Class => pExpr,
28
ExpressionKind
.Property => VisitPROP(pExpr as ExprProperty),
29
ExpressionKind
.Multi => VisitMULTI(pExpr as ExprMulti),
30
ExpressionKind
.MultiGet => VisitMULTIGET(pExpr as ExprMultiGet),
31
ExpressionKind
.Wrap => VisitWRAP(pExpr as ExprWrap),
32
ExpressionKind
.Concat => VisitCONCAT(pExpr as ExprConcat),
33
ExpressionKind
.ArrayInit => VisitARRINIT(pExpr as ExprArrayInit),
34
ExpressionKind
.Cast => VisitCAST(pExpr as ExprCast),
35
ExpressionKind
.UserDefinedConversion => VisitUSERDEFINEDCONVERSION(pExpr as ExprUserDefinedConversion),
36
ExpressionKind
.TypeOf => VisitTYPEOF(pExpr as ExprTypeOf),
37
ExpressionKind
.ZeroInit => VisitZEROINIT(pExpr as ExprZeroInit),
38
ExpressionKind
.UserLogicalOp => VisitUSERLOGOP(pExpr as ExprUserLogicalOp),
39
ExpressionKind
.MemberGroup => VisitMEMGRP(pExpr as ExprMemberGroup),
40
ExpressionKind
.FieldInfo => VisitFIELDINFO(pExpr as ExprFieldInfo),
41
ExpressionKind
.MethodInfo => VisitMETHODINFO(pExpr as ExprMethodInfo),
44
ExpressionKind
.EqualsParam => VisitEQUALS(pExpr as ExprBinOp),
45
ExpressionKind
.Compare => VisitCOMPARE(pExpr as ExprBinOp),
46
ExpressionKind
.NotEq => VisitNE(pExpr as ExprBinOp),
47
ExpressionKind
.LessThan => VisitLT(pExpr as ExprBinOp),
48
ExpressionKind
.LessThanOrEqual => VisitLE(pExpr as ExprBinOp),
49
ExpressionKind
.GreaterThan => VisitGT(pExpr as ExprBinOp),
50
ExpressionKind
.GreaterThanOrEqual => VisitGE(pExpr as ExprBinOp),
51
ExpressionKind
.Add => VisitADD(pExpr as ExprBinOp),
52
ExpressionKind
.Subtract => VisitSUB(pExpr as ExprBinOp),
53
ExpressionKind
.Multiply => VisitMUL(pExpr as ExprBinOp),
54
ExpressionKind
.Divide => VisitDIV(pExpr as ExprBinOp),
55
ExpressionKind
.Modulo => VisitMOD(pExpr as ExprBinOp),
56
ExpressionKind
.BitwiseAnd => VisitBITAND(pExpr as ExprBinOp),
57
ExpressionKind
.BitwiseOr => VisitBITOR(pExpr as ExprBinOp),
58
ExpressionKind
.BitwiseExclusiveOr => VisitBITXOR(pExpr as ExprBinOp),
59
ExpressionKind
.LeftShirt => VisitLSHIFT(pExpr as ExprBinOp),
60
ExpressionKind
.RightShift => VisitRSHIFT(pExpr as ExprBinOp),
61
ExpressionKind
.LogicalAnd => VisitLOGAND(pExpr as ExprBinOp),
62
ExpressionKind
.LogicalOr => VisitLOGOR(pExpr as ExprBinOp),
63
ExpressionKind
.Sequence => VisitSEQUENCE(pExpr as ExprBinOp),
64
ExpressionKind
.Save => VisitSAVE(pExpr as ExprBinOp),
65
ExpressionKind
.Swap => VisitSWAP(pExpr as ExprBinOp),
66
ExpressionKind
.Indir => VisitINDIR(pExpr as ExprBinOp),
67
ExpressionKind
.StringEq => VisitSTRINGEQ(pExpr as ExprBinOp),
68
ExpressionKind
.StringNotEq => VisitSTRINGNE(pExpr as ExprBinOp),
69
ExpressionKind
.DelegateEq => VisitDELEGATEEQ(pExpr as ExprBinOp),
70
ExpressionKind
.DelegateNotEq => VisitDELEGATENE(pExpr as ExprBinOp),
71
ExpressionKind
.DelegateAdd => VisitDELEGATEADD(pExpr as ExprBinOp),
72
ExpressionKind
.DelegateSubtract => VisitDELEGATESUB(pExpr as ExprBinOp),
73
ExpressionKind
.Eq => VisitEQ(pExpr as ExprBinOp),
76
ExpressionKind
.True => VisitTRUE(pExpr as ExprUnaryOp),
77
ExpressionKind
.False => VisitFALSE(pExpr as ExprUnaryOp),
78
ExpressionKind
.Inc => VisitINC(pExpr as ExprUnaryOp),
79
ExpressionKind
.Dec => VisitDEC(pExpr as ExprUnaryOp),
80
ExpressionKind
.LogicalNot => VisitLOGNOT(pExpr as ExprUnaryOp),
81
ExpressionKind
.Negate => VisitNEG(pExpr as ExprUnaryOp),
82
ExpressionKind
.UnaryPlus => VisitUPLUS(pExpr as ExprUnaryOp),
83
ExpressionKind
.BitwiseNot => VisitBITNOT(pExpr as ExprUnaryOp),
84
ExpressionKind
.Addr => VisitADDR(pExpr as ExprUnaryOp),
85
ExpressionKind
.DecimalNegate => VisitDECIMALNEG(pExpr as ExprUnaryOp),
86
ExpressionKind
.DecimalInc => VisitDECIMALINC(pExpr as ExprUnaryOp),
87
ExpressionKind
.DecimalDec => VisitDECIMALDEC(pExpr as ExprUnaryOp),
100
case
ExpressionKind
.List:
123
case
ExpressionKind
.Assignment:
132
case
ExpressionKind
.ArrayIndex:
141
case
ExpressionKind
.UnaryOp:
142
case
ExpressionKind
.True:
143
case
ExpressionKind
.False:
144
case
ExpressionKind
.Inc:
145
case
ExpressionKind
.Dec:
146
case
ExpressionKind
.LogicalNot:
147
case
ExpressionKind
.Negate:
148
case
ExpressionKind
.UnaryPlus:
149
case
ExpressionKind
.BitwiseNot:
150
case
ExpressionKind
.Addr:
151
case
ExpressionKind
.DecimalNegate:
152
case
ExpressionKind
.DecimalInc:
153
case
ExpressionKind
.DecimalDec:
159
case
ExpressionKind
.UserLogicalOp:
171
case
ExpressionKind
.TypeOf:
174
case
ExpressionKind
.Cast:
180
case
ExpressionKind
.UserDefinedConversion:
186
case
ExpressionKind
.ZeroInit:
189
case
ExpressionKind
.MemberGroup:
196
case
ExpressionKind
.Call:
204
case
ExpressionKind
.Property:
212
case
ExpressionKind
.Field:
217
case
ExpressionKind
.Constant:
252
case
ExpressionKind
.Multi:
261
case
ExpressionKind
.Concat:
270
case
ExpressionKind
.ArrayInit:
277
case
ExpressionKind
.Local:
278
case
ExpressionKind
.Class:
279
case
ExpressionKind
.MultiGet:
280
case
ExpressionKind
.Wrap:
281
case
ExpressionKind
.NoOp:
282
case
ExpressionKind
.FieldInfo:
283
case
ExpressionKind
.MethodInfo:
Microsoft\CSharp\RuntimeBinder\Semantics\Tree\ZeroInitialize.cs (1)
12
: base(
ExpressionKind
.ZeroInit, type)