519 references to ExpressionKind
Microsoft.CSharp (519)
Microsoft\CSharp\RuntimeBinder\ExpressionTreeCallRewriter.cs (1)
57
Debug.Assert(binOp.Kind ==
ExpressionKind
.Sequence);
Microsoft\CSharp\RuntimeBinder\RuntimeBinder.cs (6)
987
?? _binder.bindUDUnop(op == OperatorKind.OP_TRUE ?
ExpressionKind
.True :
ExpressionKind
.False, arg1)
1012
ExpressionKind
ek = Operators.GetExpressionKind(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));
1019
if (ek >
ExpressionKind
.MultiOffset)
1021
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);
549
internal Expr bindUDUnop(
ExpressionKind
ek, Expr arg)
890
case
ExpressionKind
.Property:
918
case
ExpressionKind
.Field:
1075
(((pObject.Flags & EXPRFLAG.EXF_LVALUE) != 0) && (pObject.Kind !=
ExpressionKind
.Property)) ||
1633
private static Name ExpressionKindName(
ExpressionKind
ek)
1635
Debug.Assert(ek >=
ExpressionKind
.FirstOp && (ek -
ExpressionKind
.FirstOp) < (int)EK2NAME.Length);
1636
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)
171
public static ExprBinOp CreateBinop(
ExpressionKind
exprKind, CType type, Expr left, Expr right) =>
174
public static ExprUnaryOp CreateUnaryOp(
ExpressionKind
exprKind, CType type, Expr operand) =>
177
public static ExprOperator CreateOperator(
ExpressionKind
exprKind, CType type, Expr arg1, Expr arg2)
186
public static ExprBinOp CreateUserDefinedBinop(
ExpressionKind
exprKind, CType type, Expr left, Expr right, Expr call, MethPropWithInst userMethod) =>
190
public static ExprUnaryOp CreateUserDefinedUnaryOperator(
ExpressionKind
exprKind, CType type, Expr operand, ExprCall call, MethPropWithInst userMethod) =>
196
ExprUnaryOp unary = CreateUnaryOp(
ExpressionKind
.Negate, operand.Type, operand);
205
CreateBinop(
ExpressionKind
.Sequence, second.Type, first, second);
222
ExprBinOp expr = CreateBinop(
ExpressionKind
.Save, wrap.Type, wrap.OptionalExpression, wrap);
243
if (first.Kind !=
ExpressionKind
.List)
251
Debug.Assert((last as ExprList).OptionalNextListNode.Kind !=
ExpressionKind
.List);
Microsoft\CSharp\RuntimeBinder\Semantics\Operators.cs (170)
147
private ExprBinOp BindUserDefinedBinOp(
ExpressionKind
ek, BinOpArgInfo info)
160
ek -
ExpressionKind
.LogicalAnd +
ExpressionKind
.BitwiseAnd, info.arg1, info.arg2, true, out pmpwi);
465
private static ExprBinOp BindNullEqualityComparison(
ExpressionKind
ek, BinOpArgInfo info)
500
public Expr BindStandardBinop(
ExpressionKind
ek, Expr arg1, Expr arg2)
576
private Expr BindStandardBinopCore(BinOpArgInfo info, BinOpFullSig bofs,
ExpressionKind
ek, EXPRFLAG flags)
619
private ExprBinOp BindLiftedStandardBinOp(BinOpArgInfo info, BinOpFullSig bofs,
ExpressionKind
ek, EXPRFLAG flags)
918
private static bool IsEnumArithmeticBinOp(
ExpressionKind
ek, BinOpArgInfo info) =>
921
ExpressionKind
.Add => info.typeRaw1.IsEnumType ^ info.typeRaw2.IsEnumType,
922
ExpressionKind
.Subtract => info.typeRaw1.IsEnumType | info.typeRaw2.IsEnumType,
1100
private static (
ExpressionKind
, UnaOpKind, EXPRFLAG) CalculateExprAndUnaryOpKinds(OperatorKind op, bool bChecked)
1102
ExpressionKind
ek;
1109
ek =
ExpressionKind
.UnaryPlus;
1118
ek =
ExpressionKind
.Negate;
1123
ek =
ExpressionKind
.BitwiseNot;
1128
ek =
ExpressionKind
.LogicalNot;
1138
ek =
ExpressionKind
.Add;
1147
ek =
ExpressionKind
.Add;
1157
ek =
ExpressionKind
.Subtract;
1166
ek =
ExpressionKind
.Subtract;
1203
(
ExpressionKind
ek, UnaOpKind unaryOpKind, EXPRFLAG flags) =
1322
private UnaryOperatorSignatureFindResult PopulateSignatureList(Expr pArgument, UnaOpKind unaryOpKind, UnaOpMask unaryOpMask,
ExpressionKind
exprKind, EXPRFLAG flags, List<UnaOpFullSig> pSignatures, out Expr ppResult)
1376
Expr exprVal = bindUDUnop((
ExpressionKind
)(exprKind -
ExpressionKind
.Add +
ExpressionKind
.Inc), exprGet);
1541
private ExprOperator BindLiftedStandardUnop(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1595
private static ExprOperator BindIntBinOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1606
private static ExprOperator BindIntUnaOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
1617
private static ExprOperator BindRealBinOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG _, Expr arg1, Expr arg2)
1628
private static ExprOperator BindRealUnaOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG _, Expr arg)
1640
private Expr BindIncOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1642
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1665
private Expr BindIncOpCore(
ExpressionKind
ek, EXPRFLAG flags, Expr exprVal, CType type)
1667
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1682
if (ek ==
ExpressionKind
.Add)
1684
ek =
ExpressionKind
.DecimalInc;
1689
ek =
ExpressionKind
.DecimalDec;
1724
private Expr LScalar(
ExpressionKind
ek, EXPRFLAG flags, Expr exprVal, CType type, ConstVal cv, CType typeTmp)
1739
private ExprMulti BindNonliftedIncOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1741
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1767
private ExprMulti BindLiftedIncOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg, UnaOpFullSig uofs)
1769
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
1785
ExprUnaryOp exprRes = ExprFactory.CreateUnaryOp((ek ==
ExpressionKind
.Add) ?
ExpressionKind
.Inc :
ExpressionKind
.Dec, arg.Type/* type */, exprVal);
1802
private static ExprBinOp BindDecBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1817
case
ExpressionKind
.Add:
1818
case
ExpressionKind
.Subtract:
1819
case
ExpressionKind
.Multiply:
1820
case
ExpressionKind
.Divide:
1821
case
ExpressionKind
.Modulo:
1824
case
ExpressionKind
.LessThan:
1825
case
ExpressionKind
.LessThanOrEqual:
1826
case
ExpressionKind
.GreaterThan:
1827
case
ExpressionKind
.GreaterThanOrEqual:
1828
case
ExpressionKind
.Eq:
1829
case
ExpressionKind
.NotEq:
1845
private static ExprUnaryOp BindDecUnaOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
1848
Debug.Assert(ek ==
ExpressionKind
.Negate || ek ==
ExpressionKind
.UnaryPlus);
1853
if (ek ==
ExpressionKind
.Negate)
1856
return CreateUnaryOpForPredefMethodCall(
ExpressionKind
.DecimalNegate, predefMeth, typeDec, arg);
1858
return ExprFactory.CreateUnaryOp(
ExpressionKind
.UnaryPlus, typeDec, arg);
1866
private static Expr BindStrBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1868
Debug.Assert(ek ==
ExpressionKind
.Add);
1879
private static ExprBinOp BindShiftOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1881
Debug.Assert(ek ==
ExpressionKind
.LeftShirt || ek ==
ExpressionKind
.RightShift);
1898
private static ExprBinOp BindBoolBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1910
private ExprOperator BindBoolBitwiseOp(
ExpressionKind
ek, EXPRFLAG flags, Expr expr1, Expr expr2)
1912
Debug.Assert(ek ==
ExpressionKind
.BitwiseAnd || ek ==
ExpressionKind
.BitwiseOr);
1947
private static Expr BindLiftedBoolBitwiseOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr expr1, Expr expr2) => null;
1955
private static Expr BindBoolUnaOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
1958
Debug.Assert(ek ==
ExpressionKind
.LogicalNot);
1969
return ExprFactory.CreateUnaryOp(
ExpressionKind
.LogicalNot, typeBool, arg);
1981
private static ExprBinOp BindStrCmpOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
1983
Debug.Assert(ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq);
1989
PREDEFMETH predefMeth = ek ==
ExpressionKind
.Eq ? PREDEFMETH.PM_STRING_OPEQUALITY : PREDEFMETH.PM_STRING_OPINEQUALITY;
1990
ek = ek ==
ExpressionKind
.Eq ?
ExpressionKind
.StringEq :
ExpressionKind
.StringNotEq;
2000
private static ExprBinOp BindRefCmpOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
2002
Debug.Assert(ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq);
2017
private static Expr BindDelBinOp(ExpressionBinder _,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
2019
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract || ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq);
2026
case
ExpressionKind
.Add:
2029
ek =
ExpressionKind
.DelegateAdd;
2032
case
ExpressionKind
.Subtract:
2035
ek =
ExpressionKind
.DelegateSubtract;
2038
case
ExpressionKind
.Eq:
2041
ek =
ExpressionKind
.DelegateEq;
2044
case
ExpressionKind
.NotEq:
2047
ek =
ExpressionKind
.DelegateNotEq;
2059
private static Expr BindEnumBinOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
2089
private Expr BindLiftedEnumArithmeticBinOp(
ExpressionKind
ek, EXPRFLAG flags, Expr arg1, Expr arg2)
2091
Debug.Assert(ek ==
ExpressionKind
.Add || ek ==
ExpressionKind
.Subtract);
2137
private static Expr BindEnumUnaOp(ExpressionBinder binder,
ExpressionKind
ek, EXPRFLAG flags, Expr arg)
2139
Debug.Assert(ek ==
ExpressionKind
.BitwiseNot);
2161
private (BinOpKind, EXPRFLAG) GetBinopKindAndFlags(
ExpressionKind
ek)
2167
case
ExpressionKind
.Add:
2174
case
ExpressionKind
.Subtract:
2181
case
ExpressionKind
.Divide:
2182
case
ExpressionKind
.Modulo:
2192
case
ExpressionKind
.Multiply:
2199
case
ExpressionKind
.BitwiseAnd:
2200
case
ExpressionKind
.BitwiseOr:
2203
case
ExpressionKind
.BitwiseExclusiveOr:
2206
case
ExpressionKind
.LeftShirt:
2207
case
ExpressionKind
.RightShift:
2210
case
ExpressionKind
.LogicalOr:
2211
case
ExpressionKind
.LogicalAnd:
2214
case
ExpressionKind
.LessThan:
2215
case
ExpressionKind
.LessThanOrEqual:
2216
case
ExpressionKind
.GreaterThan:
2217
case
ExpressionKind
.GreaterThanOrEqual:
2220
case
ExpressionKind
.Eq:
2221
case
ExpressionKind
.NotEq:
2239
private ExprOperator BindIntOp(
ExpressionKind
kind, EXPRFLAG flags, Expr op1, Expr op2, PredefinedType ptOp)
2247
Debug.Assert((op2 == null) == (kind ==
ExpressionKind
.Negate || kind ==
ExpressionKind
.UnaryPlus || kind ==
ExpressionKind
.BitwiseNot));
2249
if (kind ==
ExpressionKind
.Negate)
2326
private static ExprOperator BindFloatOp(
ExpressionKind
kind, Expr op1, Expr op2)
2387
private Expr BindUserBoolOp(
ExpressionKind
kind, ExprCall pCall)
2392
Debug.Assert(kind ==
ExpressionKind
.LogicalAnd || kind ==
ExpressionKind
.LogicalOr);
2414
Expr pCallT = bindUDUnop(
ExpressionKind
.True, pExprWrap);
2415
Expr pCallF = bindUDUnop(
ExpressionKind
.False, pExprWrap);
2424
return ExprFactory.CreateUserLogOp(typeRet, kind ==
ExpressionKind
.LogicalAnd ? pCallF : pCallT, pCall);
2465
private static bool UserDefinedBinaryOperatorCanBeLifted(
ExpressionKind
ek, MethodSymbol method, AggregateType ats,
2481
case
ExpressionKind
.Eq:
2482
case
ExpressionKind
.NotEq:
2492
case
ExpressionKind
.GreaterThan:
2493
case
ExpressionKind
.GreaterThanOrEqual:
2494
case
ExpressionKind
.LessThan:
2495
case
ExpressionKind
.LessThanOrEqual:
2511
ExpressionKind
ek, MethodSymbol method, AggregateType ats, Expr arg1, Expr arg2, bool fDontLift)
2550
List<CandidateFunctionMember> candidateList,
ExpressionKind
ek, AggregateType type,
2571
List<CandidateFunctionMember> candidateList,
ExpressionKind
ek, AggregateType type,
2587
private ExprCall BindUDBinop(
ExpressionKind
ek, Expr arg1, Expr arg2, bool fDontLift, out MethPropWithInst ppmpwi)
2667
private ExprCall BindLiftedUDBinop(
ExpressionKind
ek, Expr arg1, Expr arg2, TypeArray Params, MethPropWithInst mpwi)
2704
case
ExpressionKind
.Eq:
2705
case
ExpressionKind
.NotEq:
2711
case
ExpressionKind
.GreaterThan:
2712
case
ExpressionKind
.GreaterThanOrEqual:
2713
case
ExpressionKind
.LessThan:
2714
case
ExpressionKind
.LessThanOrEqual:
2723
Debug.Assert(!(ek ==
ExpressionKind
.Eq || ek ==
ExpressionKind
.NotEq) || nonLiftedArg1.Type == nonLiftedArg2.Type);
2734
ExpressionKind
.Eq => NullableCallLiftKind.EqualityOperator,
2736
ExpressionKind
.NotEq => NullableCallLiftKind.InequalityOperator,
2746
private static AggregateType GetEnumBinOpType(
ExpressionKind
ek, CType argType1, CType argType2, out AggregateType ppEnumType)
2762
case
ExpressionKind
.BitwiseAnd:
2763
case
ExpressionKind
.BitwiseOr:
2764
case
ExpressionKind
.BitwiseExclusiveOr:
2768
case
ExpressionKind
.Add:
2772
case
ExpressionKind
.Subtract:
2789
private static ExprBinOp CreateBinopForPredefMethodCall(
ExpressionKind
ek, PREDEFMETH predefMeth, CType RetType, Expr arg1, Expr arg2)
2805
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)
15
: 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)
381
ExpressionKind
.LeftShirt => PREDEFMETH.PM_EXPRESSION_LEFTSHIFT,
382
ExpressionKind
.RightShift => PREDEFMETH.PM_EXPRESSION_RIGHTSHIFT,
383
ExpressionKind
.BitwiseExclusiveOr => PREDEFMETH.PM_EXPRESSION_EXCLUSIVEOR,
384
ExpressionKind
.BitwiseOr => PREDEFMETH.PM_EXPRESSION_OR,
385
ExpressionKind
.BitwiseAnd => PREDEFMETH.PM_EXPRESSION_AND,
386
ExpressionKind
.LogicalAnd => PREDEFMETH.PM_EXPRESSION_ANDALSO,
387
ExpressionKind
.LogicalOr => PREDEFMETH.PM_EXPRESSION_ORELSE,
388
ExpressionKind
.StringEq => PREDEFMETH.PM_EXPRESSION_EQUAL,
389
ExpressionKind
.Eq => PREDEFMETH.PM_EXPRESSION_EQUAL,
390
ExpressionKind
.StringNotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL,
391
ExpressionKind
.NotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL,
392
ExpressionKind
.GreaterThanOrEqual => PREDEFMETH.PM_EXPRESSION_GREATERTHANOREQUAL,
393
ExpressionKind
.LessThanOrEqual => PREDEFMETH.PM_EXPRESSION_LESSTHANOREQUAL,
394
ExpressionKind
.LessThan => PREDEFMETH.PM_EXPRESSION_LESSTHAN,
395
ExpressionKind
.GreaterThan => PREDEFMETH.PM_EXPRESSION_GREATERTHAN,
396
ExpressionKind
.Modulo => PREDEFMETH.PM_EXPRESSION_MODULO,
397
ExpressionKind
.Divide => PREDEFMETH.PM_EXPRESSION_DIVIDE,
398
ExpressionKind
.Multiply => expr.isChecked() ? PREDEFMETH.PM_EXPRESSION_MULTIPLYCHECKED : PREDEFMETH.PM_EXPRESSION_MULTIPLY,
399
ExpressionKind
.Subtract => expr.isChecked() ? PREDEFMETH.PM_EXPRESSION_SUBTRACTCHECKED : PREDEFMETH.PM_EXPRESSION_SUBTRACT,
400
ExpressionKind
.Add => expr.isChecked() ? PREDEFMETH.PM_EXPRESSION_ADDCHECKED : PREDEFMETH.PM_EXPRESSION_ADD,
482
case
ExpressionKind
.UnaryPlus:
484
case
ExpressionKind
.BitwiseNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT; break;
485
case
ExpressionKind
.LogicalNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT; break;
486
case
ExpressionKind
.Negate:
507
case
ExpressionKind
.LogicalOr: pdm = PREDEFMETH.PM_EXPRESSION_ORELSE_USER_DEFINED; break;
508
case
ExpressionKind
.LogicalAnd: pdm = PREDEFMETH.PM_EXPRESSION_ANDALSO_USER_DEFINED; break;
509
case
ExpressionKind
.LeftShirt: pdm = PREDEFMETH.PM_EXPRESSION_LEFTSHIFT_USER_DEFINED; break;
510
case
ExpressionKind
.RightShift: pdm = PREDEFMETH.PM_EXPRESSION_RIGHTSHIFT_USER_DEFINED; break;
511
case
ExpressionKind
.BitwiseExclusiveOr: pdm = PREDEFMETH.PM_EXPRESSION_EXCLUSIVEOR_USER_DEFINED; break;
512
case
ExpressionKind
.BitwiseOr: pdm = PREDEFMETH.PM_EXPRESSION_OR_USER_DEFINED; break;
513
case
ExpressionKind
.BitwiseAnd: pdm = PREDEFMETH.PM_EXPRESSION_AND_USER_DEFINED; break;
514
case
ExpressionKind
.Modulo: pdm = PREDEFMETH.PM_EXPRESSION_MODULO_USER_DEFINED; break;
515
case
ExpressionKind
.Divide: pdm = PREDEFMETH.PM_EXPRESSION_DIVIDE_USER_DEFINED; break;
516
case
ExpressionKind
.StringEq:
517
case
ExpressionKind
.StringNotEq:
518
case
ExpressionKind
.DelegateEq:
519
case
ExpressionKind
.DelegateNotEq:
520
case
ExpressionKind
.Eq:
521
case
ExpressionKind
.NotEq:
522
case
ExpressionKind
.GreaterThanOrEqual:
523
case
ExpressionKind
.GreaterThan:
524
case
ExpressionKind
.LessThanOrEqual:
525
case
ExpressionKind
.LessThan:
527
case
ExpressionKind
.DelegateSubtract:
528
case
ExpressionKind
.Subtract:
531
case
ExpressionKind
.DelegateAdd:
532
case
ExpressionKind
.Add:
535
case
ExpressionKind
.Multiply:
546
Debug.Assert(udcall.Kind ==
ExpressionKind
.Call || udcall.Kind ==
ExpressionKind
.UserLogicalOp);
550
Debug.Assert(args.OptionalNextListNode.Kind !=
ExpressionKind
.List);
559
Debug.Assert(args.OptionalNextListNode.Kind !=
ExpressionKind
.List);
571
if (expr.Kind ==
ExpressionKind
.DelegateSubtract || expr.Kind ==
ExpressionKind
.DelegateAdd)
593
Debug.Assert(arg != null && arg.Kind !=
ExpressionKind
.List);
596
case
ExpressionKind
.True:
597
case
ExpressionKind
.False:
599
case
ExpressionKind
.UnaryPlus:
602
case
ExpressionKind
.BitwiseNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT_USER_DEFINED; break;
603
case
ExpressionKind
.LogicalNot: pdm = PREDEFMETH.PM_EXPRESSION_NOT_USER_DEFINED; break;
604
case
ExpressionKind
.DecimalNegate:
605
case
ExpressionKind
.Negate:
609
case
ExpressionKind
.Inc:
610
case
ExpressionKind
.Dec:
611
case
ExpressionKind
.DecimalInc:
612
case
ExpressionKind
.DecimalDec:
622
if (expr.Kind ==
ExpressionKind
.Inc || expr.Kind ==
ExpressionKind
.Dec ||
623
expr.Kind ==
ExpressionKind
.DecimalInc || expr.Kind ==
ExpressionKind
.DecimalDec)
637
ExpressionKind
.StringEq => PREDEFMETH.PM_EXPRESSION_EQUAL_USER_DEFINED,
638
ExpressionKind
.StringNotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL_USER_DEFINED,
639
ExpressionKind
.DelegateEq => PREDEFMETH.PM_EXPRESSION_EQUAL_USER_DEFINED,
640
ExpressionKind
.DelegateNotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL_USER_DEFINED,
641
ExpressionKind
.Eq => PREDEFMETH.PM_EXPRESSION_EQUAL_USER_DEFINED,
642
ExpressionKind
.NotEq => PREDEFMETH.PM_EXPRESSION_NOTEQUAL_USER_DEFINED,
643
ExpressionKind
.LessThanOrEqual => PREDEFMETH.PM_EXPRESSION_LESSTHANOREQUAL_USER_DEFINED,
644
ExpressionKind
.LessThan => PREDEFMETH.PM_EXPRESSION_LESSTHAN_USER_DEFINED,
645
ExpressionKind
.GreaterThanOrEqual => PREDEFMETH.PM_EXPRESSION_GREATERTHANOREQUAL_USER_DEFINED,
646
ExpressionKind
.GreaterThan => PREDEFMETH.PM_EXPRESSION_GREATERTHAN_USER_DEFINED,
655
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)