653 references to UnaryOperatorKind
Microsoft.CodeAnalysis.CSharp (651)
Binder\Binder_Operators.cs (52)
1414
UnaryOperatorKind
kind,
1454
if (kind ==
UnaryOperatorKind
.UnaryMinus &&
2270
UnaryOperatorKind
kind = SyntaxKindToUnaryOperatorKind(node.Kind());
2299
kind.WithType(
UnaryOperatorKind
.Dynamic).WithOverflowChecksIfApplicable(CheckOverflowAtRuntime),
2730
UnaryOperatorKind
kind = SyntaxKindToUnaryOperatorKind(node.Kind());
2763
operatorKind: kind.WithType(
UnaryOperatorKind
.Dynamic).WithOverflowChecksIfApplicable(CheckOverflowAtRuntime),
2795
UnaryOperatorKind
resultOperatorKind = signature.Kind;
2814
UnaryOperatorKind
kind,
2831
UnaryOperatorKind
newKind = kind.Operator().WithType(upconvertSpecialType);
2839
var binder = kind.Operator() ==
UnaryOperatorKind
.BitwiseComplement ?
2849
UnaryOperatorKind
kind,
2924
private static object? FoldNeverOverflowUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
2929
case
UnaryOperatorKind
.DecimalUnaryMinus:
2931
case
UnaryOperatorKind
.DoubleUnaryMinus:
2932
case
UnaryOperatorKind
.FloatUnaryMinus:
2934
case
UnaryOperatorKind
.DecimalUnaryPlus:
2936
case
UnaryOperatorKind
.FloatUnaryPlus:
2937
case
UnaryOperatorKind
.DoubleUnaryPlus:
2939
case
UnaryOperatorKind
.LongUnaryPlus:
2941
case
UnaryOperatorKind
.ULongUnaryPlus:
2943
case
UnaryOperatorKind
.IntUnaryPlus:
2944
case
UnaryOperatorKind
.NIntUnaryPlus:
2946
case
UnaryOperatorKind
.UIntUnaryPlus:
2947
case
UnaryOperatorKind
.NUIntUnaryPlus:
2949
case
UnaryOperatorKind
.BoolLogicalNegation:
2951
case
UnaryOperatorKind
.IntBitwiseComplement:
2953
case
UnaryOperatorKind
.LongBitwiseComplement:
2955
case
UnaryOperatorKind
.UIntBitwiseComplement:
2957
case
UnaryOperatorKind
.ULongBitwiseComplement:
2964
private static object? FoldUncheckedIntegralUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
2970
case
UnaryOperatorKind
.LongUnaryMinus:
2972
case
UnaryOperatorKind
.IntUnaryMinus:
2980
private static object? FoldCheckedIntegralUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
2986
case
UnaryOperatorKind
.LongUnaryMinus:
2988
case
UnaryOperatorKind
.IntUnaryMinus:
2996
private static object? FoldNativeIntegerOverflowingUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
3002
case
UnaryOperatorKind
.NIntUnaryMinus:
3004
case
UnaryOperatorKind
.NIntBitwiseComplement:
3005
case
UnaryOperatorKind
.NUIntBitwiseComplement:
3013
public static
UnaryOperatorKind
SyntaxKindToUnaryOperatorKind(SyntaxKind kind)
3017
case SyntaxKind.PreIncrementExpression: return
UnaryOperatorKind
.PrefixIncrement;
3018
case SyntaxKind.PostIncrementExpression: return
UnaryOperatorKind
.PostfixIncrement;
3019
case SyntaxKind.PreDecrementExpression: return
UnaryOperatorKind
.PrefixDecrement;
3020
case SyntaxKind.PostDecrementExpression: return
UnaryOperatorKind
.PostfixDecrement;
3021
case SyntaxKind.UnaryPlusExpression: return
UnaryOperatorKind
.UnaryPlus;
3022
case SyntaxKind.UnaryMinusExpression: return
UnaryOperatorKind
.UnaryMinus;
3023
case SyntaxKind.LogicalNotExpression: return
UnaryOperatorKind
.LogicalNegation;
3024
case SyntaxKind.BitwiseNotExpression: return
UnaryOperatorKind
.BitwiseComplement;
4455
private void CheckNativeIntegerFeatureAvailability(
UnaryOperatorKind
operatorKind, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
4462
switch (operatorKind &
UnaryOperatorKind
.TypeMask)
4464
case
UnaryOperatorKind
.NInt:
4465
case
UnaryOperatorKind
.NUInt:
Binder\Binder_Statements.cs (2)
2657
UnaryOperatorKind
.DynamicTrue,
2706
var best = this.UnaryOperatorOverloadResolution(
UnaryOperatorKind
.True, expr, node, diagnostics, out LookupResultKind resultKind, out ImmutableArray<MethodSymbol> originalUserDefinedOperators);
Binder\Binder_TupleOperators.cs (3)
145
UnaryOperatorKind
boolOpKind;
149
boolOpKind =
UnaryOperatorKind
.False;
152
boolOpKind =
UnaryOperatorKind
.True;
Binder\Semantics\Operators\OperatorFacts.cs (13)
169
public static string UnaryOperatorNameFromOperatorKind(
UnaryOperatorKind
kind, bool isChecked)
171
switch (kind &
UnaryOperatorKind
.OpMask)
173
case
UnaryOperatorKind
.UnaryPlus: return WellKnownMemberNames.UnaryPlusOperatorName;
174
case
UnaryOperatorKind
.UnaryMinus: return isChecked ? WellKnownMemberNames.CheckedUnaryNegationOperatorName : WellKnownMemberNames.UnaryNegationOperatorName;
175
case
UnaryOperatorKind
.BitwiseComplement: return WellKnownMemberNames.OnesComplementOperatorName;
176
case
UnaryOperatorKind
.LogicalNegation: return WellKnownMemberNames.LogicalNotOperatorName;
177
case
UnaryOperatorKind
.PostfixIncrement:
178
case
UnaryOperatorKind
.PrefixIncrement: return isChecked ? WellKnownMemberNames.CheckedIncrementOperatorName : WellKnownMemberNames.IncrementOperatorName;
179
case
UnaryOperatorKind
.PostfixDecrement:
180
case
UnaryOperatorKind
.PrefixDecrement: return isChecked ? WellKnownMemberNames.CheckedDecrementOperatorName : WellKnownMemberNames.DecrementOperatorName;
181
case
UnaryOperatorKind
.True: return WellKnownMemberNames.TrueOperatorName;
182
case
UnaryOperatorKind
.False: return WellKnownMemberNames.FalseOperatorName;
184
throw ExceptionUtilities.UnexpectedValue(kind &
UnaryOperatorKind
.OpMask);
Binder\Semantics\Operators\OperatorKind.cs (36)
294
TypeMask =
UnaryOperatorKind
.TypeMask,
296
Int =
UnaryOperatorKind
.Int,
297
UInt =
UnaryOperatorKind
.UInt,
298
Long =
UnaryOperatorKind
.Long,
299
ULong =
UnaryOperatorKind
.ULong,
300
NInt =
UnaryOperatorKind
.NInt,
301
NUInt =
UnaryOperatorKind
.NUInt,
302
Char =
UnaryOperatorKind
.Char, //not used
303
Float =
UnaryOperatorKind
.Float,
304
Double =
UnaryOperatorKind
.Double,
305
Decimal =
UnaryOperatorKind
.Decimal,
306
Bool =
UnaryOperatorKind
.Bool,
307
Object =
UnaryOperatorKind
._Object,
308
String =
UnaryOperatorKind
._String,
309
StringAndObject =
UnaryOperatorKind
._StringAndObject,
310
ObjectAndString =
UnaryOperatorKind
._ObjectAndString,
312
Enum =
UnaryOperatorKind
.Enum,
313
EnumAndUnderlying =
UnaryOperatorKind
._EnumAndUnderlying,
314
UnderlyingAndEnum =
UnaryOperatorKind
._UnderlyingAndEnum,
315
Delegate =
UnaryOperatorKind
._Delegate,
316
Pointer =
UnaryOperatorKind
.Pointer,
317
PointerAndInt =
UnaryOperatorKind
._PointerAndInt,
318
PointerAndUInt =
UnaryOperatorKind
._PointerAndUInt,
319
PointerAndLong =
UnaryOperatorKind
._PointerAndLong,
320
PointerAndULong =
UnaryOperatorKind
._PointerAndULong,
321
IntAndPointer =
UnaryOperatorKind
._IntAndPointer,
322
UIntAndPointer =
UnaryOperatorKind
._UIntAndPointer,
323
LongAndPointer =
UnaryOperatorKind
._LongAndPointer,
324
ULongAndPointer =
UnaryOperatorKind
._ULongAndPointer,
325
NullableNull =
UnaryOperatorKind
._NullableNull,
326
UserDefined =
UnaryOperatorKind
.UserDefined,
327
Dynamic =
UnaryOperatorKind
.Dynamic,
328
Utf8 =
UnaryOperatorKind
._Utf8,
349
Lifted =
UnaryOperatorKind
.Lifted,
350
Logical =
UnaryOperatorKind
._Logical,
351
Checked =
UnaryOperatorKind
.Checked,
Binder\Semantics\Operators\OperatorKindExtensions.cs (78)
19
public static int OperatorIndex(this
UnaryOperatorKind
kind)
24
public static
UnaryOperatorKind
Operator(this
UnaryOperatorKind
kind)
26
return kind &
UnaryOperatorKind
.OpMask;
29
public static
UnaryOperatorKind
Unlifted(this
UnaryOperatorKind
kind)
31
return kind & ~
UnaryOperatorKind
.Lifted;
34
public static bool IsLifted(this
UnaryOperatorKind
kind)
36
return 0 != (kind &
UnaryOperatorKind
.Lifted);
39
public static bool IsChecked(this
UnaryOperatorKind
kind)
41
return 0 != (kind &
UnaryOperatorKind
.Checked);
44
public static bool IsUserDefined(this
UnaryOperatorKind
kind)
46
return (kind &
UnaryOperatorKind
.TypeMask) ==
UnaryOperatorKind
.UserDefined;
49
public static
UnaryOperatorKind
OverflowChecks(this
UnaryOperatorKind
kind)
51
return kind &
UnaryOperatorKind
.Checked;
54
public static
UnaryOperatorKind
WithOverflowChecksIfApplicable(this
UnaryOperatorKind
kind, bool enabled)
64
return kind |
UnaryOperatorKind
.Checked;
71
case
UnaryOperatorKind
.PrefixIncrement:
72
case
UnaryOperatorKind
.PostfixIncrement:
73
case
UnaryOperatorKind
.PrefixDecrement:
74
case
UnaryOperatorKind
.PostfixDecrement:
75
case
UnaryOperatorKind
.UnaryMinus:
76
return kind |
UnaryOperatorKind
.Checked;
83
return kind & ~
UnaryOperatorKind
.Checked;
87
public static
UnaryOperatorKind
OperandTypes(this
UnaryOperatorKind
kind)
89
return kind &
UnaryOperatorKind
.TypeMask;
92
public static bool IsDynamic(this
UnaryOperatorKind
kind)
94
return kind.OperandTypes() ==
UnaryOperatorKind
.Dynamic;
97
public static bool IsIntegral(this
UnaryOperatorKind
kind)
101
case
UnaryOperatorKind
.SByte:
102
case
UnaryOperatorKind
.Byte:
103
case
UnaryOperatorKind
.Short:
104
case
UnaryOperatorKind
.UShort:
105
case
UnaryOperatorKind
.Int:
106
case
UnaryOperatorKind
.UInt:
107
case
UnaryOperatorKind
.Long:
108
case
UnaryOperatorKind
.ULong:
109
case
UnaryOperatorKind
.NInt:
110
case
UnaryOperatorKind
.NUInt:
111
case
UnaryOperatorKind
.Char:
112
case
UnaryOperatorKind
.Enum:
113
case
UnaryOperatorKind
.Pointer:
120
public static
UnaryOperatorKind
WithType(this
UnaryOperatorKind
kind,
UnaryOperatorKind
type)
122
Debug.Assert(kind == (kind & ~
UnaryOperatorKind
.TypeMask));
123
Debug.Assert(type == (type &
UnaryOperatorKind
.TypeMask));
165
public static
UnaryOperatorKind
WithType(this
UnaryOperatorKind
kind, SpecialType type)
167
Debug.Assert(kind == (kind & ~
UnaryOperatorKind
.TypeMask));
171
return kind |
UnaryOperatorKind
.Int;
173
return kind |
UnaryOperatorKind
.UInt;
175
return kind |
UnaryOperatorKind
.Long;
177
return kind |
UnaryOperatorKind
.ULong;
281
public static bool IsEnum(this
UnaryOperatorKind
kind)
283
return kind.OperandTypes() ==
UnaryOperatorKind
.Enum;
380
public static ExpressionType ToExpressionType(this
UnaryOperatorKind
kind)
384
case
UnaryOperatorKind
.PrefixIncrement:
385
case
UnaryOperatorKind
.PostfixIncrement:
388
case
UnaryOperatorKind
.PostfixDecrement:
389
case
UnaryOperatorKind
.PrefixDecrement:
392
case
UnaryOperatorKind
.UnaryPlus: return ExpressionType.UnaryPlus;
393
case
UnaryOperatorKind
.UnaryMinus: return ExpressionType.Negate;
394
case
UnaryOperatorKind
.LogicalNegation: return ExpressionType.Not;
395
case
UnaryOperatorKind
.BitwiseComplement: return ExpressionType.OnesComplement;
396
case
UnaryOperatorKind
.True: return ExpressionType.IsTrue;
397
case
UnaryOperatorKind
.False: return ExpressionType.IsFalse;
417
public static string Dump(this
UnaryOperatorKind
kind)
420
if ((kind &
UnaryOperatorKind
.Lifted) != 0) b.Append("Lifted");
421
if ((kind &
UnaryOperatorKind
.Checked) != 0) b.Append("Checked");
422
var
type = kind &
UnaryOperatorKind
.TypeMask;
424
var
op = kind &
UnaryOperatorKind
.OpMask;
Binder\Semantics\Operators\UnaryOperatorEasyOut.cs (92)
14
private const
UnaryOperatorKind
ERR =
UnaryOperatorKind
.Error;
16
private const
UnaryOperatorKind
BOL =
UnaryOperatorKind
.Bool;
17
private const
UnaryOperatorKind
CHR =
UnaryOperatorKind
.Char;
18
private const
UnaryOperatorKind
I08 =
UnaryOperatorKind
.SByte;
19
private const
UnaryOperatorKind
U08 =
UnaryOperatorKind
.Byte;
20
private const
UnaryOperatorKind
I16 =
UnaryOperatorKind
.Short;
21
private const
UnaryOperatorKind
U16 =
UnaryOperatorKind
.UShort;
22
private const
UnaryOperatorKind
I32 =
UnaryOperatorKind
.Int;
23
private const
UnaryOperatorKind
U32 =
UnaryOperatorKind
.UInt;
24
private const
UnaryOperatorKind
I64 =
UnaryOperatorKind
.Long;
25
private const
UnaryOperatorKind
U64 =
UnaryOperatorKind
.ULong;
26
private const
UnaryOperatorKind
NIN =
UnaryOperatorKind
.NInt;
27
private const
UnaryOperatorKind
NUI =
UnaryOperatorKind
.NUInt;
28
private const
UnaryOperatorKind
R32 =
UnaryOperatorKind
.Float;
29
private const
UnaryOperatorKind
R64 =
UnaryOperatorKind
.Double;
30
private const
UnaryOperatorKind
DEC =
UnaryOperatorKind
.Decimal;
31
private const
UnaryOperatorKind
LBOL =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Bool;
32
private const
UnaryOperatorKind
LCHR =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Char;
33
private const
UnaryOperatorKind
LI08 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.SByte;
34
private const
UnaryOperatorKind
LU08 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Byte;
35
private const
UnaryOperatorKind
LI16 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Short;
36
private const
UnaryOperatorKind
LU16 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.UShort;
37
private const
UnaryOperatorKind
LI32 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Int;
38
private const
UnaryOperatorKind
LU32 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.UInt;
39
private const
UnaryOperatorKind
LI64 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Long;
40
private const
UnaryOperatorKind
LU64 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.ULong;
41
private const
UnaryOperatorKind
LNI =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.NInt;
42
private const
UnaryOperatorKind
LNU =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.NUInt;
43
private const
UnaryOperatorKind
LR32 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Float;
44
private const
UnaryOperatorKind
LR64 =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Double;
45
private const
UnaryOperatorKind
LDEC =
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Decimal;
47
private static readonly
UnaryOperatorKind
[] s_increment =
52
private static readonly
UnaryOperatorKind
[] s_plus =
57
private static readonly
UnaryOperatorKind
[] s_minus =
62
private static readonly
UnaryOperatorKind
[] s_logicalNegation =
67
private static readonly
UnaryOperatorKind
[] s_bitwiseComplement =
72
private static readonly
UnaryOperatorKind
[][] s_opkind =
84
public static
UnaryOperatorKind
OpKind(
UnaryOperatorKind
kind, TypeSymbol operand)
89
return
UnaryOperatorKind
.Error;
92
var
result = (kindIndex >= s_opkind.Length) ?
UnaryOperatorKind
.Error : s_opkind[kindIndex][index];
93
return result ==
UnaryOperatorKind
.Error ? result : result | kind;
97
private void UnaryOperatorEasyOut(
UnaryOperatorKind
kind, BoundExpression operand, UnaryOperatorOverloadResolutionResult result)
105
var
easyOut = UnopEasyOut.OpKind(kind, operandType);
107
if (easyOut ==
UnaryOperatorKind
.Error)
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (32)
23
public void UnaryOperatorOverloadResolution(
UnaryOperatorKind
kind, bool isChecked, BoundExpression operand, UnaryOperatorOverloadResolutionResult result, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
241
private void GetAllBuiltInOperators(
UnaryOperatorKind
kind, bool isChecked, BoundExpression operand, ArrayBuilder<UnaryOperatorAnalysisResult> results, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
292
private void GetEnumOperations(
UnaryOperatorKind
kind, BoundExpression operand, ArrayBuilder<UnaryOperatorSignature> operators)
312
case
UnaryOperatorKind
.PostfixIncrement:
313
case
UnaryOperatorKind
.PostfixDecrement:
314
case
UnaryOperatorKind
.PrefixIncrement:
315
case
UnaryOperatorKind
.PrefixDecrement:
316
case
UnaryOperatorKind
.BitwiseComplement:
317
operators.Add(new UnaryOperatorSignature(kind |
UnaryOperatorKind
.Enum, enumType, enumType));
318
operators.Add(new UnaryOperatorSignature(kind |
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Enum, nullableEnum, nullableEnum));
323
private static UnaryOperatorSignature? GetPointerOperation(
UnaryOperatorKind
kind, BoundExpression operand)
336
case
UnaryOperatorKind
.PostfixIncrement:
337
case
UnaryOperatorKind
.PostfixDecrement:
338
case
UnaryOperatorKind
.PrefixIncrement:
339
case
UnaryOperatorKind
.PrefixDecrement:
340
op = new UnaryOperatorSignature(kind |
UnaryOperatorKind
.Pointer, pointerType, pointerType);
347
private bool GetUserDefinedOperators(
UnaryOperatorKind
kind, bool isChecked, BoundExpression operand, ArrayBuilder<UnaryOperatorAnalysisResult> results, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
475
UnaryOperatorKind
kind,
515
static void getDeclaredOperators(TypeSymbol constrainedToTypeOpt, NamedTypeSymbol type,
UnaryOperatorKind
kind, string name, ArrayBuilder<UnaryOperatorSignature> operators)
531
operators.Add(new UnaryOperatorSignature(
UnaryOperatorKind
.UserDefined | kind, operandType, resultType, op, constrainedToTypeOpt));
537
void addLiftedOperators(TypeSymbol constrainedToTypeOpt,
UnaryOperatorKind
kind, ArrayBuilder<UnaryOperatorSignature> operators)
545
case
UnaryOperatorKind
.UnaryPlus:
546
case
UnaryOperatorKind
.PrefixDecrement:
547
case
UnaryOperatorKind
.PrefixIncrement:
548
case
UnaryOperatorKind
.UnaryMinus:
549
case
UnaryOperatorKind
.PostfixDecrement:
550
case
UnaryOperatorKind
.PostfixIncrement:
551
case
UnaryOperatorKind
.LogicalNegation:
552
case
UnaryOperatorKind
.BitwiseComplement:
564
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.UserDefined | kind,
Binder\Semantics\Operators\UnaryOperatorSignature.cs (3)
21
public readonly
UnaryOperatorKind
Kind;
23
public UnaryOperatorSignature(
UnaryOperatorKind
kind, TypeSymbol operandType, TypeSymbol returnType)
32
public UnaryOperatorSignature(
UnaryOperatorKind
kind, TypeSymbol operandType, TypeSymbol returnType, MethodSymbol method, TypeSymbol constrainedToTypeOpt)
BoundTree\Constructors.cs (4)
744
UnaryOperatorKind
operatorKind,
756
public BoundUnaryOperator Update(
UnaryOperatorKind
operatorKind,
770
UnaryOperatorKind
operatorKind,
785
public BoundIncrementOperator Update(
UnaryOperatorKind
operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, TypeSymbol type)
CodeGen\EmitOperators.cs (13)
19
var
operatorKind = expression.OperatorKind;
33
if (operatorKind ==
UnaryOperatorKind
.BoolLogicalNegation)
42
case
UnaryOperatorKind
.UnaryMinus:
46
case
UnaryOperatorKind
.BitwiseComplement:
50
case
UnaryOperatorKind
.UnaryPlus:
575
Debug.Assert(unOp.OperatorKind ==
UnaryOperatorKind
.BoolLogicalNegation);
583
Debug.Assert(expression.OperatorKind.Operator() ==
UnaryOperatorKind
.UnaryMinus);
584
var
type = expression.OperatorKind.OperandTypes();
596
Debug.Assert(type ==
UnaryOperatorKind
.Int || type ==
UnaryOperatorKind
.Long || type ==
UnaryOperatorKind
.NInt);
605
if (type ==
UnaryOperatorKind
.Long)
609
else if (type ==
UnaryOperatorKind
.NInt)
CodeGen\EmitStatement.cs (1)
577
if (unOp.OperatorKind ==
UnaryOperatorKind
.BoolLogicalNegation)
CodeGen\Optimizer.cs (1)
1655
if (node.OperatorKind.IsChecked() && node.OperatorKind.Operator() ==
UnaryOperatorKind
.UnaryMinus)
Compilation\BuiltInOperators.cs (176)
44
builder.Add(GetSignature((
UnaryOperatorKind
)kind));
50
internal void GetSimpleBuiltInOperators(
UnaryOperatorKind
kind, ArrayBuilder<UnaryOperatorSignature> operators, bool skipNativeIntegerOperators)
58
(int)
UnaryOperatorKind
.SBytePostfixIncrement,
59
(int)
UnaryOperatorKind
.BytePostfixIncrement,
60
(int)
UnaryOperatorKind
.ShortPostfixIncrement,
61
(int)
UnaryOperatorKind
.UShortPostfixIncrement,
62
(int)
UnaryOperatorKind
.IntPostfixIncrement,
63
(int)
UnaryOperatorKind
.UIntPostfixIncrement,
64
(int)
UnaryOperatorKind
.LongPostfixIncrement,
65
(int)
UnaryOperatorKind
.ULongPostfixIncrement,
66
(int)
UnaryOperatorKind
.NIntPostfixIncrement,
67
(int)
UnaryOperatorKind
.NUIntPostfixIncrement,
68
(int)
UnaryOperatorKind
.CharPostfixIncrement,
69
(int)
UnaryOperatorKind
.FloatPostfixIncrement,
70
(int)
UnaryOperatorKind
.DoublePostfixIncrement,
71
(int)
UnaryOperatorKind
.DecimalPostfixIncrement,
72
(int)
UnaryOperatorKind
.LiftedSBytePostfixIncrement,
73
(int)
UnaryOperatorKind
.LiftedBytePostfixIncrement,
74
(int)
UnaryOperatorKind
.LiftedShortPostfixIncrement,
75
(int)
UnaryOperatorKind
.LiftedUShortPostfixIncrement,
76
(int)
UnaryOperatorKind
.LiftedIntPostfixIncrement,
77
(int)
UnaryOperatorKind
.LiftedUIntPostfixIncrement,
78
(int)
UnaryOperatorKind
.LiftedLongPostfixIncrement,
79
(int)
UnaryOperatorKind
.LiftedULongPostfixIncrement,
80
(int)
UnaryOperatorKind
.LiftedNIntPostfixIncrement,
81
(int)
UnaryOperatorKind
.LiftedNUIntPostfixIncrement,
82
(int)
UnaryOperatorKind
.LiftedCharPostfixIncrement,
83
(int)
UnaryOperatorKind
.LiftedFloatPostfixIncrement,
84
(int)
UnaryOperatorKind
.LiftedDoublePostfixIncrement,
85
(int)
UnaryOperatorKind
.LiftedDecimalPostfixIncrement,
89
(int)
UnaryOperatorKind
.SBytePostfixDecrement,
90
(int)
UnaryOperatorKind
.BytePostfixDecrement,
91
(int)
UnaryOperatorKind
.ShortPostfixDecrement,
92
(int)
UnaryOperatorKind
.UShortPostfixDecrement,
93
(int)
UnaryOperatorKind
.IntPostfixDecrement,
94
(int)
UnaryOperatorKind
.UIntPostfixDecrement,
95
(int)
UnaryOperatorKind
.LongPostfixDecrement,
96
(int)
UnaryOperatorKind
.ULongPostfixDecrement,
97
(int)
UnaryOperatorKind
.NIntPostfixDecrement,
98
(int)
UnaryOperatorKind
.NUIntPostfixDecrement,
99
(int)
UnaryOperatorKind
.CharPostfixDecrement,
100
(int)
UnaryOperatorKind
.FloatPostfixDecrement,
101
(int)
UnaryOperatorKind
.DoublePostfixDecrement,
102
(int)
UnaryOperatorKind
.DecimalPostfixDecrement,
103
(int)
UnaryOperatorKind
.LiftedSBytePostfixDecrement,
104
(int)
UnaryOperatorKind
.LiftedBytePostfixDecrement,
105
(int)
UnaryOperatorKind
.LiftedShortPostfixDecrement,
106
(int)
UnaryOperatorKind
.LiftedUShortPostfixDecrement,
107
(int)
UnaryOperatorKind
.LiftedIntPostfixDecrement,
108
(int)
UnaryOperatorKind
.LiftedUIntPostfixDecrement,
109
(int)
UnaryOperatorKind
.LiftedLongPostfixDecrement,
110
(int)
UnaryOperatorKind
.LiftedULongPostfixDecrement,
111
(int)
UnaryOperatorKind
.LiftedNIntPostfixDecrement,
112
(int)
UnaryOperatorKind
.LiftedNUIntPostfixDecrement,
113
(int)
UnaryOperatorKind
.LiftedCharPostfixDecrement,
114
(int)
UnaryOperatorKind
.LiftedFloatPostfixDecrement,
115
(int)
UnaryOperatorKind
.LiftedDoublePostfixDecrement,
116
(int)
UnaryOperatorKind
.LiftedDecimalPostfixDecrement,
120
(int)
UnaryOperatorKind
.SBytePrefixIncrement,
121
(int)
UnaryOperatorKind
.BytePrefixIncrement,
122
(int)
UnaryOperatorKind
.ShortPrefixIncrement,
123
(int)
UnaryOperatorKind
.UShortPrefixIncrement,
124
(int)
UnaryOperatorKind
.IntPrefixIncrement,
125
(int)
UnaryOperatorKind
.UIntPrefixIncrement,
126
(int)
UnaryOperatorKind
.LongPrefixIncrement,
127
(int)
UnaryOperatorKind
.ULongPrefixIncrement,
128
(int)
UnaryOperatorKind
.NIntPrefixIncrement,
129
(int)
UnaryOperatorKind
.NUIntPrefixIncrement,
130
(int)
UnaryOperatorKind
.CharPrefixIncrement,
131
(int)
UnaryOperatorKind
.FloatPrefixIncrement,
132
(int)
UnaryOperatorKind
.DoublePrefixIncrement,
133
(int)
UnaryOperatorKind
.DecimalPrefixIncrement,
134
(int)
UnaryOperatorKind
.LiftedSBytePrefixIncrement,
135
(int)
UnaryOperatorKind
.LiftedBytePrefixIncrement,
136
(int)
UnaryOperatorKind
.LiftedShortPrefixIncrement,
137
(int)
UnaryOperatorKind
.LiftedUShortPrefixIncrement,
138
(int)
UnaryOperatorKind
.LiftedIntPrefixIncrement,
139
(int)
UnaryOperatorKind
.LiftedUIntPrefixIncrement,
140
(int)
UnaryOperatorKind
.LiftedLongPrefixIncrement,
141
(int)
UnaryOperatorKind
.LiftedULongPrefixIncrement,
142
(int)
UnaryOperatorKind
.LiftedNIntPrefixIncrement,
143
(int)
UnaryOperatorKind
.LiftedNUIntPrefixIncrement,
144
(int)
UnaryOperatorKind
.LiftedCharPrefixIncrement,
145
(int)
UnaryOperatorKind
.LiftedFloatPrefixIncrement,
146
(int)
UnaryOperatorKind
.LiftedDoublePrefixIncrement,
147
(int)
UnaryOperatorKind
.LiftedDecimalPrefixIncrement,
151
(int)
UnaryOperatorKind
.SBytePrefixDecrement,
152
(int)
UnaryOperatorKind
.BytePrefixDecrement,
153
(int)
UnaryOperatorKind
.ShortPrefixDecrement,
154
(int)
UnaryOperatorKind
.UShortPrefixDecrement,
155
(int)
UnaryOperatorKind
.IntPrefixDecrement,
156
(int)
UnaryOperatorKind
.UIntPrefixDecrement,
157
(int)
UnaryOperatorKind
.NIntPrefixDecrement,
158
(int)
UnaryOperatorKind
.NUIntPrefixDecrement,
159
(int)
UnaryOperatorKind
.LongPrefixDecrement,
160
(int)
UnaryOperatorKind
.ULongPrefixDecrement,
161
(int)
UnaryOperatorKind
.CharPrefixDecrement,
162
(int)
UnaryOperatorKind
.FloatPrefixDecrement,
163
(int)
UnaryOperatorKind
.DoublePrefixDecrement,
164
(int)
UnaryOperatorKind
.DecimalPrefixDecrement,
165
(int)
UnaryOperatorKind
.LiftedSBytePrefixDecrement,
166
(int)
UnaryOperatorKind
.LiftedBytePrefixDecrement,
167
(int)
UnaryOperatorKind
.LiftedShortPrefixDecrement,
168
(int)
UnaryOperatorKind
.LiftedUShortPrefixDecrement,
169
(int)
UnaryOperatorKind
.LiftedIntPrefixDecrement,
170
(int)
UnaryOperatorKind
.LiftedUIntPrefixDecrement,
171
(int)
UnaryOperatorKind
.LiftedLongPrefixDecrement,
172
(int)
UnaryOperatorKind
.LiftedULongPrefixDecrement,
173
(int)
UnaryOperatorKind
.LiftedNIntPrefixDecrement,
174
(int)
UnaryOperatorKind
.LiftedNUIntPrefixDecrement,
175
(int)
UnaryOperatorKind
.LiftedCharPrefixDecrement,
176
(int)
UnaryOperatorKind
.LiftedFloatPrefixDecrement,
177
(int)
UnaryOperatorKind
.LiftedDoublePrefixDecrement,
178
(int)
UnaryOperatorKind
.LiftedDecimalPrefixDecrement,
182
(int)
UnaryOperatorKind
.IntUnaryPlus,
183
(int)
UnaryOperatorKind
.UIntUnaryPlus,
184
(int)
UnaryOperatorKind
.LongUnaryPlus,
185
(int)
UnaryOperatorKind
.ULongUnaryPlus,
186
(int)
UnaryOperatorKind
.NIntUnaryPlus,
187
(int)
UnaryOperatorKind
.NUIntUnaryPlus,
188
(int)
UnaryOperatorKind
.FloatUnaryPlus,
189
(int)
UnaryOperatorKind
.DoubleUnaryPlus,
190
(int)
UnaryOperatorKind
.DecimalUnaryPlus,
191
(int)
UnaryOperatorKind
.LiftedIntUnaryPlus,
192
(int)
UnaryOperatorKind
.LiftedUIntUnaryPlus,
193
(int)
UnaryOperatorKind
.LiftedLongUnaryPlus,
194
(int)
UnaryOperatorKind
.LiftedULongUnaryPlus,
195
(int)
UnaryOperatorKind
.LiftedNIntUnaryPlus,
196
(int)
UnaryOperatorKind
.LiftedNUIntUnaryPlus,
197
(int)
UnaryOperatorKind
.LiftedFloatUnaryPlus,
198
(int)
UnaryOperatorKind
.LiftedDoubleUnaryPlus,
199
(int)
UnaryOperatorKind
.LiftedDecimalUnaryPlus,
203
(int)
UnaryOperatorKind
.IntUnaryMinus,
204
(int)
UnaryOperatorKind
.LongUnaryMinus,
205
(int)
UnaryOperatorKind
.NIntUnaryMinus,
206
(int)
UnaryOperatorKind
.FloatUnaryMinus,
207
(int)
UnaryOperatorKind
.DoubleUnaryMinus,
208
(int)
UnaryOperatorKind
.DecimalUnaryMinus,
209
(int)
UnaryOperatorKind
.LiftedIntUnaryMinus,
210
(int)
UnaryOperatorKind
.LiftedLongUnaryMinus,
211
(int)
UnaryOperatorKind
.LiftedNIntUnaryMinus,
212
(int)
UnaryOperatorKind
.LiftedFloatUnaryMinus,
213
(int)
UnaryOperatorKind
.LiftedDoubleUnaryMinus,
214
(int)
UnaryOperatorKind
.LiftedDecimalUnaryMinus,
218
(int)
UnaryOperatorKind
.BoolLogicalNegation,
219
(int)
UnaryOperatorKind
.LiftedBoolLogicalNegation,
223
(int)
UnaryOperatorKind
.IntBitwiseComplement,
224
(int)
UnaryOperatorKind
.UIntBitwiseComplement,
225
(int)
UnaryOperatorKind
.LongBitwiseComplement,
226
(int)
UnaryOperatorKind
.ULongBitwiseComplement,
227
(int)
UnaryOperatorKind
.NIntBitwiseComplement,
228
(int)
UnaryOperatorKind
.NUIntBitwiseComplement,
229
(int)
UnaryOperatorKind
.LiftedIntBitwiseComplement,
230
(int)
UnaryOperatorKind
.LiftedUIntBitwiseComplement,
231
(int)
UnaryOperatorKind
.LiftedLongBitwiseComplement,
232
(int)
UnaryOperatorKind
.LiftedULongBitwiseComplement,
233
(int)
UnaryOperatorKind
.LiftedNIntBitwiseComplement,
234
(int)
UnaryOperatorKind
.LiftedNUIntBitwiseComplement,
250
case
UnaryOperatorKind
.NInt:
251
case
UnaryOperatorKind
.NUInt:
259
internal UnaryOperatorSignature GetSignature(
UnaryOperatorKind
kind)
264
case
UnaryOperatorKind
.SByte: opType = _compilation.GetSpecialType(SpecialType.System_SByte); break;
265
case
UnaryOperatorKind
.Byte: opType = _compilation.GetSpecialType(SpecialType.System_Byte); break;
266
case
UnaryOperatorKind
.Short: opType = _compilation.GetSpecialType(SpecialType.System_Int16); break;
267
case
UnaryOperatorKind
.UShort: opType = _compilation.GetSpecialType(SpecialType.System_UInt16); break;
268
case
UnaryOperatorKind
.Int: opType = _compilation.GetSpecialType(SpecialType.System_Int32); break;
269
case
UnaryOperatorKind
.UInt: opType = _compilation.GetSpecialType(SpecialType.System_UInt32); break;
270
case
UnaryOperatorKind
.Long: opType = _compilation.GetSpecialType(SpecialType.System_Int64); break;
271
case
UnaryOperatorKind
.ULong: opType = _compilation.GetSpecialType(SpecialType.System_UInt64); break;
272
case
UnaryOperatorKind
.NInt: opType = _compilation.CreateNativeIntegerTypeSymbol(signed: true); break;
273
case
UnaryOperatorKind
.NUInt: opType = _compilation.CreateNativeIntegerTypeSymbol(signed: false); break;
274
case
UnaryOperatorKind
.Char: opType = _compilation.GetSpecialType(SpecialType.System_Char); break;
275
case
UnaryOperatorKind
.Float: opType = _compilation.GetSpecialType(SpecialType.System_Single); break;
276
case
UnaryOperatorKind
.Double: opType = _compilation.GetSpecialType(SpecialType.System_Double); break;
277
case
UnaryOperatorKind
.Decimal: opType = _compilation.GetSpecialType(SpecialType.System_Decimal); break;
278
case
UnaryOperatorKind
.Bool: opType = _compilation.GetSpecialType(SpecialType.System_Boolean); break;
Compilation\CSharpCompilation.cs (8)
4487
var
unaryKind = Binder.SyntaxKindToUnaryOperatorKind(SyntaxFacts.GetPrefixUnaryExpression(syntaxKind));
4492
var
easyOutUnaryKind = OverloadResolution.UnopEasyOut.OpKind(unaryKind, csharpOperandType);
4494
if (easyOutUnaryKind !=
UnaryOperatorKind
.Error)
4508
unaryKind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PrefixDecrement or
UnaryOperatorKind
.BitwiseComplement &&
4516
unaryKind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PrefixDecrement &&
Compilation\CSharpSemanticModel.cs (9)
2007
UnaryOperatorKind
operatorKind = @operator.OperatorKind;
2008
return operatorKind ==
UnaryOperatorKind
.UserDefinedTrue || operatorKind ==
UnaryOperatorKind
.UserDefinedFalse;
3795
UnaryOperatorKind
operandType = unaryOperator.OperatorKind.OperandTypes();
3798
if (operandType == 0 || operandType ==
UnaryOperatorKind
.UserDefined || unaryOperator.ResultKind != LookupResultKind.Viable)
3808
UnaryOperatorKind
op = unaryOperator.OperatorKind.Operator();
3818
UnaryOperatorKind
operandType = increment.OperatorKind.OperandTypes();
3821
if (operandType == 0 || operandType ==
UnaryOperatorKind
.UserDefined || increment.ResultKind != LookupResultKind.Viable)
3831
UnaryOperatorKind
op = increment.OperatorKind.Operator();
FlowAnalysis\AbstractFlowPass.cs (1)
2760
if (node.OperatorKind ==
UnaryOperatorKind
.BoolLogicalNegation)
FlowAnalysis\NullableWalker.cs (6)
10556
var
op = node.OperatorKind.Operator();
10557
TypeWithState resultType = (op ==
UnaryOperatorKind
.PrefixIncrement || op ==
UnaryOperatorKind
.PrefixDecrement) ? resultOfIncrementType : operandType;
11290
case
UnaryOperatorKind
.BoolLogicalNegation:
11296
case
UnaryOperatorKind
.DynamicTrue:
11302
case
UnaryOperatorKind
.DynamicLogicalNegation:
Generated\BoundNodes.xml.Generated.cs (6)
1183
public BoundUnaryOperator(SyntaxNode syntax,
UnaryOperatorKind
operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1200
public
UnaryOperatorKind
OperatorKind { get; }
1211
public BoundUnaryOperator Update(
UnaryOperatorKind
operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type)
1225
public BoundIncrementOperator(SyntaxNode syntax,
UnaryOperatorKind
operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1245
public
UnaryOperatorKind
OperatorKind { get; }
1259
public BoundIncrementOperator Update(
UnaryOperatorKind
operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type)
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (10)
1137
var
opKind = node.OperatorKind;
1138
var
op = opKind &
UnaryOperatorKind
.OpMask;
1139
var isChecked = (opKind &
UnaryOperatorKind
.Checked) != 0;
1144
case
UnaryOperatorKind
.UnaryPlus:
1151
case
UnaryOperatorKind
.UnaryMinus:
1156
case
UnaryOperatorKind
.BitwiseComplement:
1157
case
UnaryOperatorKind
.LogicalNegation:
1185
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.Enum && (opKind &
UnaryOperatorKind
.Lifted) != 0)
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (19)
336
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
339
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
350
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
353
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
364
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
367
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
620
var
testOperator = isAnd ?
UnaryOperatorKind
.DynamicFalse :
UnaryOperatorKind
.DynamicTrue;
626
if (testOperator ==
UnaryOperatorKind
.DynamicFalse && constantLeft == ConstantValue.False ||
627
testOperator ==
UnaryOperatorKind
.DynamicTrue && constantLeft == ConstantValue.True)
669
bool leftTestIsConstantFalse = testOperator ==
UnaryOperatorKind
.DynamicFalse && constantLeft == ConstantValue.True ||
670
testOperator ==
UnaryOperatorKind
.DynamicTrue && constantLeft == ConstantValue.False;
730
return _dynamicFactory.MakeDynamicUnaryOperator(negative ?
UnaryOperatorKind
.DynamicFalse :
UnaryOperatorKind
.DynamicTrue, loweredLeft, boolean).ToExpression();
747
return new BoundUnaryOperator(syntax,
UnaryOperatorKind
.BoolLogicalNegation, converted, ConstantValue.NotAvailable, MethodSymbol.None, constrainedToTypeOpt: null, LookupResultKind.Viable, boolean)
874
MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, callHasValue, boolType) :
1857
BoundExpression invert = MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, innerOr, boolType);
1990
new BoundUnaryOperator(syntax,
UnaryOperatorKind
.BoolLogicalNegation, call, ConstantValue.NotAvailable, null, constrainedToTypeOpt: null, LookupResultKind.Viable, returnType);
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (3)
558
return _factory.Not(MakeUnaryOperator(
UnaryOperatorKind
.DynamicFalse, left.Syntax, method: null, constrainedToTypeOpt: null, dynamicResult, boolType));
562
return MakeUnaryOperator(
UnaryOperatorKind
.DynamicTrue, left.Syntax, method: null, constrainedToTypeOpt: null, dynamicResult, boolType);
578
if (boolOperator.Kind !=
UnaryOperatorKind
.Error)
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (67)
33
case
UnaryOperatorKind
.PrefixDecrement:
34
case
UnaryOperatorKind
.PrefixIncrement:
35
case
UnaryOperatorKind
.PostfixDecrement:
36
case
UnaryOperatorKind
.PostfixIncrement:
51
if (node.OperatorKind ==
UnaryOperatorKind
.DynamicTrue && binaryOperator.OperatorKind == BinaryOperatorKind.DynamicLogicalOr ||
52
node.OperatorKind ==
UnaryOperatorKind
.DynamicFalse && binaryOperator.OperatorKind == BinaryOperatorKind.DynamicLogicalAnd)
63
UnaryOperatorKind
kind,
75
UnaryOperatorKind
kind,
84
Debug.Assert((kind ==
UnaryOperatorKind
.DynamicTrue || kind ==
UnaryOperatorKind
.DynamicFalse) && type.SpecialType == SpecialType.System_Boolean
94
case
UnaryOperatorKind
.DynamicTrue:
96
case
UnaryOperatorKind
.DynamicLogicalNegation:
114
if (!_inExpressionLambda || kind ==
UnaryOperatorKind
.UserDefinedTrue || kind ==
UnaryOperatorKind
.UserDefinedFalse)
124
else if (kind.Operator() ==
UnaryOperatorKind
.UnaryPlus)
130
if (kind ==
UnaryOperatorKind
.EnumBitwiseComplement)
140
UnaryOperatorKind
newKind = kind.Operator().WithType(upconvertSpecialType);
164
if (kind ==
UnaryOperatorKind
.DecimalUnaryMinus)
179
UnaryOperatorKind
kind,
243
UnaryOperatorKind
operatorKind,
353
private BoundExpression GetLiftedUnaryOperatorConsequence(
UnaryOperatorKind
kind, SyntaxNode syntax, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, BoundExpression nonNullOperand)
377
var
op = node.OperatorKind.Operator();
378
return op ==
UnaryOperatorKind
.PostfixIncrement || op ==
UnaryOperatorKind
.PrefixIncrement;
383
var
op = node.OperatorKind.Operator();
384
return op ==
UnaryOperatorKind
.PrefixIncrement || op ==
UnaryOperatorKind
.PrefixDecrement;
577
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.UserDefined)
769
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.Pointer)
899
UnaryOperatorKind
kind = node.OperatorKind.OperandTypes();
904
if (kind ==
UnaryOperatorKind
.Enum)
913
case
UnaryOperatorKind
.Int:
916
case
UnaryOperatorKind
.SByte:
919
case
UnaryOperatorKind
.Short:
922
case
UnaryOperatorKind
.Byte:
925
case
UnaryOperatorKind
.UShort:
928
case
UnaryOperatorKind
.Char:
931
case
UnaryOperatorKind
.UInt:
934
case
UnaryOperatorKind
.Long:
937
case
UnaryOperatorKind
.ULong:
940
case
UnaryOperatorKind
.NInt:
943
case
UnaryOperatorKind
.NUInt:
946
case
UnaryOperatorKind
.Float:
949
case
UnaryOperatorKind
.Double:
952
case
UnaryOperatorKind
.Decimal:
955
case
UnaryOperatorKind
.Pointer:
957
case
UnaryOperatorKind
.UserDefined:
958
case
UnaryOperatorKind
.Bool:
979
UnaryOperatorKind
unaryOperatorKind = node.OperatorKind;
984
case
UnaryOperatorKind
.Int:
985
case
UnaryOperatorKind
.SByte:
986
case
UnaryOperatorKind
.Short:
989
case
UnaryOperatorKind
.Byte:
990
case
UnaryOperatorKind
.UShort:
991
case
UnaryOperatorKind
.Char:
992
case
UnaryOperatorKind
.UInt:
995
case
UnaryOperatorKind
.Long:
998
case
UnaryOperatorKind
.ULong:
1001
case
UnaryOperatorKind
.NInt:
1004
case
UnaryOperatorKind
.NUInt:
1007
case
UnaryOperatorKind
.Float:
1010
case
UnaryOperatorKind
.Double:
1013
case
UnaryOperatorKind
.Decimal: //Dev10 special cased this, but we'll let DecimalRewriter handle it
1016
case
UnaryOperatorKind
.Enum:
1054
case
UnaryOperatorKind
.Pointer:
1057
case
UnaryOperatorKind
.UserDefined:
1058
case
UnaryOperatorKind
.Bool:
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
115
UnaryOperatorKind
operatorKind,
Lowering\SyntheticBoundNodeFactory.cs (2)
1623
return new BoundUnaryOperator(expression.Syntax,
UnaryOperatorKind
.BoolLogicalNegation, expression, null, null, constrainedToTypeOpt: null, LookupResultKind.Viable, expression.Type);
1870
new BoundUnaryOperator(syntax,
UnaryOperatorKind
.BoolLogicalNegation, call, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Viable, returnType);
Operations\CSharpOperationFactory_Methods.cs (13)
495
internal static bool IsPostfixIncrementOrDecrement(CSharp.
UnaryOperatorKind
operatorKind)
499
case CSharp.
UnaryOperatorKind
.PostfixIncrement:
500
case CSharp.
UnaryOperatorKind
.PostfixDecrement:
508
internal static bool IsDecrement(CSharp.
UnaryOperatorKind
operatorKind)
512
case CSharp.
UnaryOperatorKind
.PrefixDecrement:
513
case CSharp.
UnaryOperatorKind
.PostfixDecrement:
521
internal static UnaryOperatorKind DeriveUnaryOperatorKind(CSharp.
UnaryOperatorKind
operatorKind)
525
case CSharp.
UnaryOperatorKind
.UnaryPlus:
528
case CSharp.
UnaryOperatorKind
.UnaryMinus:
531
case CSharp.
UnaryOperatorKind
.LogicalNegation:
534
case CSharp.
UnaryOperatorKind
.BitwiseComplement:
537
case CSharp.
UnaryOperatorKind
.True:
540
case CSharp.
UnaryOperatorKind
.False:
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (1)
Emit\NumericIntPtrTests.cs (1)
1559
foreach (
var
operatorKind in unaryOperators)
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (1)
Semantics\NativeIntegerTests.cs (1)
4800
foreach (
var
operatorKind in unaryOperators)