703 references to UnaryOperatorKind
Microsoft.CodeAnalysis.CSharp (651)
Binder\Binder_Operators.cs (52)
1378
UnaryOperatorKind
kind,
1418
if (kind ==
UnaryOperatorKind
.UnaryMinus &&
2234
UnaryOperatorKind
kind = SyntaxKindToUnaryOperatorKind(node.Kind());
2263
kind.WithType(
UnaryOperatorKind
.Dynamic).WithOverflowChecksIfApplicable(CheckOverflowAtRuntime),
2682
UnaryOperatorKind
kind = SyntaxKindToUnaryOperatorKind(node.Kind());
2715
operatorKind: kind.WithType(
UnaryOperatorKind
.Dynamic).WithOverflowChecksIfApplicable(CheckOverflowAtRuntime),
2747
UnaryOperatorKind
resultOperatorKind = signature.Kind;
2766
UnaryOperatorKind
kind,
2783
UnaryOperatorKind
newKind = kind.Operator().WithType(upconvertSpecialType);
2791
var binder = kind.Operator() ==
UnaryOperatorKind
.BitwiseComplement ?
2801
UnaryOperatorKind
kind,
2876
private static object? FoldNeverOverflowUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
2881
case
UnaryOperatorKind
.DecimalUnaryMinus:
2883
case
UnaryOperatorKind
.DoubleUnaryMinus:
2884
case
UnaryOperatorKind
.FloatUnaryMinus:
2886
case
UnaryOperatorKind
.DecimalUnaryPlus:
2888
case
UnaryOperatorKind
.FloatUnaryPlus:
2889
case
UnaryOperatorKind
.DoubleUnaryPlus:
2891
case
UnaryOperatorKind
.LongUnaryPlus:
2893
case
UnaryOperatorKind
.ULongUnaryPlus:
2895
case
UnaryOperatorKind
.IntUnaryPlus:
2896
case
UnaryOperatorKind
.NIntUnaryPlus:
2898
case
UnaryOperatorKind
.UIntUnaryPlus:
2899
case
UnaryOperatorKind
.NUIntUnaryPlus:
2901
case
UnaryOperatorKind
.BoolLogicalNegation:
2903
case
UnaryOperatorKind
.IntBitwiseComplement:
2905
case
UnaryOperatorKind
.LongBitwiseComplement:
2907
case
UnaryOperatorKind
.UIntBitwiseComplement:
2909
case
UnaryOperatorKind
.ULongBitwiseComplement:
2916
private static object? FoldUncheckedIntegralUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
2922
case
UnaryOperatorKind
.LongUnaryMinus:
2924
case
UnaryOperatorKind
.IntUnaryMinus:
2932
private static object? FoldCheckedIntegralUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
2938
case
UnaryOperatorKind
.LongUnaryMinus:
2940
case
UnaryOperatorKind
.IntUnaryMinus:
2948
private static object? FoldNativeIntegerOverflowingUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
2954
case
UnaryOperatorKind
.NIntUnaryMinus:
2956
case
UnaryOperatorKind
.NIntBitwiseComplement:
2957
case
UnaryOperatorKind
.NUIntBitwiseComplement:
2965
public static
UnaryOperatorKind
SyntaxKindToUnaryOperatorKind(SyntaxKind kind)
2969
case SyntaxKind.PreIncrementExpression: return
UnaryOperatorKind
.PrefixIncrement;
2970
case SyntaxKind.PostIncrementExpression: return
UnaryOperatorKind
.PostfixIncrement;
2971
case SyntaxKind.PreDecrementExpression: return
UnaryOperatorKind
.PrefixDecrement;
2972
case SyntaxKind.PostDecrementExpression: return
UnaryOperatorKind
.PostfixDecrement;
2973
case SyntaxKind.UnaryPlusExpression: return
UnaryOperatorKind
.UnaryPlus;
2974
case SyntaxKind.UnaryMinusExpression: return
UnaryOperatorKind
.UnaryMinus;
2975
case SyntaxKind.LogicalNotExpression: return
UnaryOperatorKind
.LogicalNegation;
2976
case SyntaxKind.BitwiseNotExpression: return
UnaryOperatorKind
.BitwiseComplement;
4378
private void CheckNativeIntegerFeatureAvailability(
UnaryOperatorKind
operatorKind, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
4385
switch (operatorKind &
UnaryOperatorKind
.TypeMask)
4387
case
UnaryOperatorKind
.NInt:
4388
case
UnaryOperatorKind
.NUInt:
Binder\Binder_Statements.cs (2)
2556
UnaryOperatorKind
.DynamicTrue,
2605
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)
239
private void GetAllBuiltInOperators(
UnaryOperatorKind
kind, bool isChecked, BoundExpression operand, ArrayBuilder<UnaryOperatorAnalysisResult> results, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
290
private void GetEnumOperations(
UnaryOperatorKind
kind, BoundExpression operand, ArrayBuilder<UnaryOperatorSignature> operators)
310
case
UnaryOperatorKind
.PostfixIncrement:
311
case
UnaryOperatorKind
.PostfixDecrement:
312
case
UnaryOperatorKind
.PrefixIncrement:
313
case
UnaryOperatorKind
.PrefixDecrement:
314
case
UnaryOperatorKind
.BitwiseComplement:
315
operators.Add(new UnaryOperatorSignature(kind |
UnaryOperatorKind
.Enum, enumType, enumType));
316
operators.Add(new UnaryOperatorSignature(kind |
UnaryOperatorKind
.Lifted |
UnaryOperatorKind
.Enum, nullableEnum, nullableEnum));
321
private static UnaryOperatorSignature? GetPointerOperation(
UnaryOperatorKind
kind, BoundExpression operand)
334
case
UnaryOperatorKind
.PostfixIncrement:
335
case
UnaryOperatorKind
.PostfixDecrement:
336
case
UnaryOperatorKind
.PrefixIncrement:
337
case
UnaryOperatorKind
.PrefixDecrement:
338
op = new UnaryOperatorSignature(kind |
UnaryOperatorKind
.Pointer, pointerType, pointerType);
345
private bool GetUserDefinedOperators(
UnaryOperatorKind
kind, bool isChecked, BoundExpression operand, ArrayBuilder<UnaryOperatorAnalysisResult> results, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
473
UnaryOperatorKind
kind,
513
static void getDeclaredOperators(TypeSymbol constrainedToTypeOpt, NamedTypeSymbol type,
UnaryOperatorKind
kind, string name, ArrayBuilder<UnaryOperatorSignature> operators)
526
operators.Add(new UnaryOperatorSignature(
UnaryOperatorKind
.UserDefined | kind, operandType, resultType, op, constrainedToTypeOpt));
530
void addLiftedOperators(TypeSymbol constrainedToTypeOpt,
UnaryOperatorKind
kind, ArrayBuilder<UnaryOperatorSignature> operators)
538
case
UnaryOperatorKind
.UnaryPlus:
539
case
UnaryOperatorKind
.PrefixDecrement:
540
case
UnaryOperatorKind
.PrefixIncrement:
541
case
UnaryOperatorKind
.UnaryMinus:
542
case
UnaryOperatorKind
.PostfixDecrement:
543
case
UnaryOperatorKind
.PostfixIncrement:
544
case
UnaryOperatorKind
.LogicalNegation:
545
case
UnaryOperatorKind
.BitwiseComplement:
557
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)
687
UnaryOperatorKind
operatorKind,
699
public BoundUnaryOperator Update(
UnaryOperatorKind
operatorKind,
713
UnaryOperatorKind
operatorKind,
728
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:
477
Debug.Assert(unOp.OperatorKind ==
UnaryOperatorKind
.BoolLogicalNegation);
511
Debug.Assert(expression.OperatorKind.Operator() ==
UnaryOperatorKind
.UnaryMinus);
512
var
type = expression.OperatorKind.OperandTypes();
524
Debug.Assert(type ==
UnaryOperatorKind
.Int || type ==
UnaryOperatorKind
.Long || type ==
UnaryOperatorKind
.NInt);
533
if (type ==
UnaryOperatorKind
.Long)
537
else if (type ==
UnaryOperatorKind
.NInt)
CodeGen\EmitStatement.cs (1)
577
if (unOp.OperatorKind ==
UnaryOperatorKind
.BoolLogicalNegation)
CodeGen\Optimizer.cs (1)
1588
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)
4173
var
unaryKind = Binder.SyntaxKindToUnaryOperatorKind(SyntaxFacts.GetPrefixUnaryExpression(syntaxKind));
4178
var
easyOutUnaryKind = OverloadResolution.UnopEasyOut.OpKind(unaryKind, csharpOperandType);
4180
if (easyOutUnaryKind !=
UnaryOperatorKind
.Error)
4194
unaryKind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PrefixDecrement or
UnaryOperatorKind
.BitwiseComplement &&
4202
unaryKind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PrefixDecrement &&
Compilation\CSharpSemanticModel.cs (9)
2028
UnaryOperatorKind
operatorKind = @operator.OperatorKind;
2029
return operatorKind ==
UnaryOperatorKind
.UserDefinedTrue || operatorKind ==
UnaryOperatorKind
.UserDefinedFalse;
3784
UnaryOperatorKind
operandType = unaryOperator.OperatorKind.OperandTypes();
3787
if (operandType == 0 || operandType ==
UnaryOperatorKind
.UserDefined || unaryOperator.ResultKind != LookupResultKind.Viable)
3797
UnaryOperatorKind
op = unaryOperator.OperatorKind.Operator();
3807
UnaryOperatorKind
operandType = increment.OperatorKind.OperandTypes();
3810
if (operandType == 0 || operandType ==
UnaryOperatorKind
.UserDefined || increment.ResultKind != LookupResultKind.Viable)
3820
UnaryOperatorKind
op = increment.OperatorKind.Operator();
FlowAnalysis\AbstractFlowPass.cs (1)
2564
if (node.OperatorKind ==
UnaryOperatorKind
.BoolLogicalNegation)
FlowAnalysis\NullableWalker.cs (6)
9611
var
op = node.OperatorKind.Operator();
9612
TypeWithState resultType = (op ==
UnaryOperatorKind
.PrefixIncrement || op ==
UnaryOperatorKind
.PrefixDecrement) ? resultOfIncrementType : operandType;
10311
case
UnaryOperatorKind
.BoolLogicalNegation:
10317
case
UnaryOperatorKind
.DynamicTrue:
10323
case
UnaryOperatorKind
.DynamicLogicalNegation:
Generated\BoundNodes.xml.Generated.cs (6)
1170
public BoundUnaryOperator(SyntaxNode syntax,
UnaryOperatorKind
operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1187
public
UnaryOperatorKind
OperatorKind { get; }
1198
public BoundUnaryOperator Update(
UnaryOperatorKind
operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type)
1212
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)
1232
public
UnaryOperatorKind
OperatorKind { get; }
1246
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)
1046
var
opKind = node.OperatorKind;
1047
var
op = opKind &
UnaryOperatorKind
.OpMask;
1048
var isChecked = (opKind &
UnaryOperatorKind
.Checked) != 0;
1053
case
UnaryOperatorKind
.UnaryPlus:
1060
case
UnaryOperatorKind
.UnaryMinus:
1063
case
UnaryOperatorKind
.BitwiseComplement:
1064
case
UnaryOperatorKind
.LogicalNegation:
1071
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.Enum && (opKind &
UnaryOperatorKind
.Lifted) != 0)
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (19)
334
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
337
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
348
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
351
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
362
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
365
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
618
var
testOperator = isAnd ?
UnaryOperatorKind
.DynamicFalse :
UnaryOperatorKind
.DynamicTrue;
624
if (testOperator ==
UnaryOperatorKind
.DynamicFalse && constantLeft == ConstantValue.False ||
625
testOperator ==
UnaryOperatorKind
.DynamicTrue && constantLeft == ConstantValue.True)
667
bool leftTestIsConstantFalse = testOperator ==
UnaryOperatorKind
.DynamicFalse && constantLeft == ConstantValue.True ||
668
testOperator ==
UnaryOperatorKind
.DynamicTrue && constantLeft == ConstantValue.False;
728
return _dynamicFactory.MakeDynamicUnaryOperator(negative ?
UnaryOperatorKind
.DynamicFalse :
UnaryOperatorKind
.DynamicTrue, loweredLeft, boolean).ToExpression();
745
return new BoundUnaryOperator(syntax,
UnaryOperatorKind
.BoolLogicalNegation, converted, ConstantValue.NotAvailable, MethodSymbol.None, constrainedToTypeOpt: null, LookupResultKind.Viable, boolean)
861
MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, callHasValue, boolType) :
1777
BoundExpression invert = MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, innerOr, boolType);
1910
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)
119
else if (kind.Operator() ==
UnaryOperatorKind
.UnaryPlus)
125
if (kind ==
UnaryOperatorKind
.EnumBitwiseComplement)
135
UnaryOperatorKind
newKind = kind.Operator().WithType(upconvertSpecialType);
159
if (kind ==
UnaryOperatorKind
.DecimalUnaryMinus)
174
UnaryOperatorKind
kind,
238
UnaryOperatorKind
operatorKind,
348
private BoundExpression GetLiftedUnaryOperatorConsequence(
UnaryOperatorKind
kind, SyntaxNode syntax, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, BoundExpression nonNullOperand)
372
var
op = node.OperatorKind.Operator();
373
return op ==
UnaryOperatorKind
.PostfixIncrement || op ==
UnaryOperatorKind
.PrefixIncrement;
378
var
op = node.OperatorKind.Operator();
379
return op ==
UnaryOperatorKind
.PrefixIncrement || op ==
UnaryOperatorKind
.PrefixDecrement;
571
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.UserDefined)
752
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.Pointer)
882
UnaryOperatorKind
kind = node.OperatorKind.OperandTypes();
887
if (kind ==
UnaryOperatorKind
.Enum)
896
case
UnaryOperatorKind
.Int:
899
case
UnaryOperatorKind
.SByte:
902
case
UnaryOperatorKind
.Short:
905
case
UnaryOperatorKind
.Byte:
908
case
UnaryOperatorKind
.UShort:
911
case
UnaryOperatorKind
.Char:
914
case
UnaryOperatorKind
.UInt:
917
case
UnaryOperatorKind
.Long:
920
case
UnaryOperatorKind
.ULong:
923
case
UnaryOperatorKind
.NInt:
926
case
UnaryOperatorKind
.NUInt:
929
case
UnaryOperatorKind
.Float:
932
case
UnaryOperatorKind
.Double:
935
case
UnaryOperatorKind
.Decimal:
938
case
UnaryOperatorKind
.Pointer:
940
case
UnaryOperatorKind
.UserDefined:
941
case
UnaryOperatorKind
.Bool:
962
UnaryOperatorKind
unaryOperatorKind = node.OperatorKind;
967
case
UnaryOperatorKind
.Int:
968
case
UnaryOperatorKind
.SByte:
969
case
UnaryOperatorKind
.Short:
972
case
UnaryOperatorKind
.Byte:
973
case
UnaryOperatorKind
.UShort:
974
case
UnaryOperatorKind
.Char:
975
case
UnaryOperatorKind
.UInt:
978
case
UnaryOperatorKind
.Long:
981
case
UnaryOperatorKind
.ULong:
984
case
UnaryOperatorKind
.NInt:
987
case
UnaryOperatorKind
.NUInt:
990
case
UnaryOperatorKind
.Float:
993
case
UnaryOperatorKind
.Double:
996
case
UnaryOperatorKind
.Decimal: //Dev10 special cased this, but we'll let DecimalRewriter handle it
999
case
UnaryOperatorKind
.Enum:
1037
case
UnaryOperatorKind
.Pointer:
1040
case
UnaryOperatorKind
.UserDefined:
1041
case
UnaryOperatorKind
.Bool:
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
115
UnaryOperatorKind
operatorKind,
Lowering\SyntheticBoundNodeFactory.cs (2)
1499
return new BoundUnaryOperator(expression.Syntax,
UnaryOperatorKind
.BoolLogicalNegation, expression, null, null, constrainedToTypeOpt: null, LookupResultKind.Viable, expression.Type);
1742
new BoundUnaryOperator(syntax,
UnaryOperatorKind
.BoolLogicalNegation, call, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Viable, returnType);
Operations\CSharpOperationFactory_Methods.cs (13)
415
internal static bool IsPostfixIncrementOrDecrement(CSharp.
UnaryOperatorKind
operatorKind)
419
case CSharp.
UnaryOperatorKind
.PostfixIncrement:
420
case CSharp.
UnaryOperatorKind
.PostfixDecrement:
428
internal static bool IsDecrement(CSharp.
UnaryOperatorKind
operatorKind)
432
case CSharp.
UnaryOperatorKind
.PrefixDecrement:
433
case CSharp.
UnaryOperatorKind
.PostfixDecrement:
441
internal static UnaryOperatorKind DeriveUnaryOperatorKind(CSharp.
UnaryOperatorKind
operatorKind)
445
case CSharp.
UnaryOperatorKind
.UnaryPlus:
448
case CSharp.
UnaryOperatorKind
.UnaryMinus:
451
case CSharp.
UnaryOperatorKind
.LogicalNegation:
454
case CSharp.
UnaryOperatorKind
.BitwiseComplement:
457
case CSharp.
UnaryOperatorKind
.True:
460
case CSharp.
UnaryOperatorKind
.False:
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (10)
Emit\NumericIntPtrTests.cs (10)
1495
UnaryOperatorKind
.PostfixIncrement,
1496
UnaryOperatorKind
.PostfixDecrement,
1497
UnaryOperatorKind
.PrefixIncrement,
1498
UnaryOperatorKind
.PrefixDecrement,
1499
UnaryOperatorKind
.UnaryPlus,
1500
UnaryOperatorKind
.UnaryMinus,
1501
UnaryOperatorKind
.BitwiseComplement,
1525
foreach (
var
operatorKind in unaryOperators)
1537
static void verifyUnaryOperators(CSharpCompilation comp,
UnaryOperatorKind
operatorKind, bool skipNativeIntegerOperators)
1543
int expectedUnsigned = skipNativeIntegerOperators ? 0 : (operatorKind ==
UnaryOperatorKind
.UnaryMinus) ? 0 : 1;
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (42)
Semantics\NativeIntegerTests.cs (10)
4744
UnaryOperatorKind
.PostfixIncrement,
4745
UnaryOperatorKind
.PostfixDecrement,
4746
UnaryOperatorKind
.PrefixIncrement,
4747
UnaryOperatorKind
.PrefixDecrement,
4748
UnaryOperatorKind
.UnaryPlus,
4749
UnaryOperatorKind
.UnaryMinus,
4750
UnaryOperatorKind
.BitwiseComplement,
4774
foreach (
var
operatorKind in unaryOperators)
4786
static void verifyUnaryOperators(CSharpCompilation comp,
UnaryOperatorKind
operatorKind, bool skipNativeIntegerOperators)
4792
int expectedUnsigned = skipNativeIntegerOperators ? 0 : (operatorKind ==
UnaryOperatorKind
.UnaryMinus) ? 0 : 1;
Semantics\OperatorTests.cs (32)
7396
UnaryOperatorKind
[] operators =
7398
UnaryOperatorKind
.PostfixIncrement,
7399
UnaryOperatorKind
.PostfixDecrement,
7400
UnaryOperatorKind
.PrefixIncrement,
7401
UnaryOperatorKind
.PrefixDecrement,
7402
UnaryOperatorKind
.UnaryPlus,
7403
UnaryOperatorKind
.UnaryMinus,
7404
UnaryOperatorKind
.LogicalNegation,
7405
UnaryOperatorKind
.BitwiseComplement
7453
if (operators[k] ==
UnaryOperatorKind
.PostfixDecrement || operators[k] ==
UnaryOperatorKind
.PostfixIncrement)
7509
foreach (
var
op in operators)
7528
UnaryOperatorKind
op,
7562
if (op ==
UnaryOperatorKind
.BitwiseComplement ||
7563
op ==
UnaryOperatorKind
.PrefixDecrement || op ==
UnaryOperatorKind
.PrefixIncrement ||
7564
op ==
UnaryOperatorKind
.PostfixDecrement || op ==
UnaryOperatorKind
.PostfixIncrement)
7569
UnaryOperatorKind
result = OverloadResolution.UnopEasyOut.OpKind(op, underlying);
7572
if (result ==
UnaryOperatorKind
.Error)
7576
signature = new UnaryOperatorSignature(op |
UnaryOperatorKind
.Dynamic, type, type);
7579
(op ==
UnaryOperatorKind
.PrefixDecrement || op ==
UnaryOperatorKind
.PrefixIncrement ||
7580
op ==
UnaryOperatorKind
.PostfixDecrement || op ==
UnaryOperatorKind
.PostfixIncrement))
7582
signature = new UnaryOperatorSignature(op |
UnaryOperatorKind
.Pointer, type, type);
7611
if (op ==
UnaryOperatorKind
.LogicalNegation && type.IsEnumType())
7628
case
UnaryOperatorKind
.UnaryMinus:
7632
case
UnaryOperatorKind
.PrefixDecrement:
7633
case
UnaryOperatorKind
.PrefixIncrement:
7634
case
UnaryOperatorKind
.PostfixDecrement:
7635
case
UnaryOperatorKind
.PostfixIncrement: