666 references to UnaryOperatorKind
Microsoft.CodeAnalysis.CSharp (664)
Binder\Binder_Operators.cs (65)
1605
UnaryOperatorKind
kind,
1645
if (kind ==
UnaryOperatorKind
.UnaryMinus &&
2463
UnaryOperatorKind
kind = SyntaxKindToUnaryOperatorKind(node.Kind());
2492
kind.WithType(
UnaryOperatorKind
.Dynamic).WithOverflowChecksIfApplicable(CheckOverflowAtRuntime),
2580
BoundIncrementOperator? tryApplyUserDefinedInstanceOperator(ExpressionSyntax node, SyntaxToken operatorToken,
UnaryOperatorKind
kind, BoundExpression operand, BindingDiagnosticBag diagnostics)
2586
if (kind is not (
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PrefixDecrement or
UnaryOperatorKind
.PostfixIncrement or
UnaryOperatorKind
.PostfixDecrement) ||
2595
if ((kind is (
UnaryOperatorKind
.PostfixIncrement or
UnaryOperatorKind
.PostfixDecrement) && resultIsUsed) ||
2607
(kind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PostfixIncrement ?
2611
ordinaryName: kind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PostfixIncrement ?
2653
(kind |
UnaryOperatorKind
.UserDefined).WithOverflowChecksIfApplicable(checkOverflowAtRuntime),
2678
(kind |
UnaryOperatorKind
.UserDefined).WithOverflowChecksIfApplicable(checkOverflowAtRuntime),
3166
UnaryOperatorKind
kind = SyntaxKindToUnaryOperatorKind(node.Kind());
3199
operatorKind: kind.WithType(
UnaryOperatorKind
.Dynamic).WithOverflowChecksIfApplicable(CheckOverflowAtRuntime),
3231
UnaryOperatorKind
resultOperatorKind = signature.Kind;
3250
UnaryOperatorKind
kind,
3267
UnaryOperatorKind
newKind = kind.Operator().WithType(upconvertSpecialType);
3275
var binder = kind.Operator() ==
UnaryOperatorKind
.BitwiseComplement ?
3285
UnaryOperatorKind
kind,
3360
private static object? FoldNeverOverflowUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
3365
case
UnaryOperatorKind
.DecimalUnaryMinus:
3367
case
UnaryOperatorKind
.DoubleUnaryMinus:
3368
case
UnaryOperatorKind
.FloatUnaryMinus:
3370
case
UnaryOperatorKind
.DecimalUnaryPlus:
3372
case
UnaryOperatorKind
.FloatUnaryPlus:
3373
case
UnaryOperatorKind
.DoubleUnaryPlus:
3375
case
UnaryOperatorKind
.LongUnaryPlus:
3377
case
UnaryOperatorKind
.ULongUnaryPlus:
3379
case
UnaryOperatorKind
.IntUnaryPlus:
3380
case
UnaryOperatorKind
.NIntUnaryPlus:
3382
case
UnaryOperatorKind
.UIntUnaryPlus:
3383
case
UnaryOperatorKind
.NUIntUnaryPlus:
3385
case
UnaryOperatorKind
.BoolLogicalNegation:
3387
case
UnaryOperatorKind
.IntBitwiseComplement:
3389
case
UnaryOperatorKind
.LongBitwiseComplement:
3391
case
UnaryOperatorKind
.UIntBitwiseComplement:
3393
case
UnaryOperatorKind
.ULongBitwiseComplement:
3400
private static object? FoldUncheckedIntegralUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
3406
case
UnaryOperatorKind
.LongUnaryMinus:
3408
case
UnaryOperatorKind
.IntUnaryMinus:
3416
private static object? FoldCheckedIntegralUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
3422
case
UnaryOperatorKind
.LongUnaryMinus:
3424
case
UnaryOperatorKind
.IntUnaryMinus:
3432
private static object? FoldNativeIntegerOverflowingUnaryOperator(
UnaryOperatorKind
kind, ConstantValue value)
3438
case
UnaryOperatorKind
.NIntUnaryMinus:
3440
case
UnaryOperatorKind
.NIntBitwiseComplement:
3441
case
UnaryOperatorKind
.NUIntBitwiseComplement:
3449
public static
UnaryOperatorKind
SyntaxKindToUnaryOperatorKind(SyntaxKind kind)
3453
case SyntaxKind.PreIncrementExpression: return
UnaryOperatorKind
.PrefixIncrement;
3454
case SyntaxKind.PostIncrementExpression: return
UnaryOperatorKind
.PostfixIncrement;
3455
case SyntaxKind.PreDecrementExpression: return
UnaryOperatorKind
.PrefixDecrement;
3456
case SyntaxKind.PostDecrementExpression: return
UnaryOperatorKind
.PostfixDecrement;
3457
case SyntaxKind.UnaryPlusExpression: return
UnaryOperatorKind
.UnaryPlus;
3458
case SyntaxKind.UnaryMinusExpression: return
UnaryOperatorKind
.UnaryMinus;
3459
case SyntaxKind.LogicalNotExpression: return
UnaryOperatorKind
.LogicalNegation;
3460
case SyntaxKind.BitwiseNotExpression: return
UnaryOperatorKind
.BitwiseComplement;
4891
private void CheckNativeIntegerFeatureAvailability(
UnaryOperatorKind
operatorKind, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
4898
switch (operatorKind &
UnaryOperatorKind
.TypeMask)
4900
case
UnaryOperatorKind
.NInt:
4901
case
UnaryOperatorKind
.NUInt:
Binder\Binder_Statements.cs (2)
2673
UnaryOperatorKind
.DynamicTrue,
2722
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)
231
public static string UnaryOperatorNameFromOperatorKind(
UnaryOperatorKind
kind, bool isChecked)
233
switch (kind &
UnaryOperatorKind
.OpMask)
235
case
UnaryOperatorKind
.UnaryPlus: return WellKnownMemberNames.UnaryPlusOperatorName;
236
case
UnaryOperatorKind
.UnaryMinus: return isChecked ? WellKnownMemberNames.CheckedUnaryNegationOperatorName : WellKnownMemberNames.UnaryNegationOperatorName;
237
case
UnaryOperatorKind
.BitwiseComplement: return WellKnownMemberNames.OnesComplementOperatorName;
238
case
UnaryOperatorKind
.LogicalNegation: return WellKnownMemberNames.LogicalNotOperatorName;
239
case
UnaryOperatorKind
.PostfixIncrement:
240
case
UnaryOperatorKind
.PrefixIncrement: return isChecked ? WellKnownMemberNames.CheckedIncrementOperatorName : WellKnownMemberNames.IncrementOperatorName;
241
case
UnaryOperatorKind
.PostfixDecrement:
242
case
UnaryOperatorKind
.PrefixDecrement: return isChecked ? WellKnownMemberNames.CheckedDecrementOperatorName : WellKnownMemberNames.DecrementOperatorName;
243
case
UnaryOperatorKind
.True: return WellKnownMemberNames.TrueOperatorName;
244
case
UnaryOperatorKind
.False: return WellKnownMemberNames.FalseOperatorName;
246
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)
673
UnaryOperatorKind
operatorKind,
685
public BoundUnaryOperator Update(
UnaryOperatorKind
operatorKind,
699
UnaryOperatorKind
operatorKind,
714
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)
1654
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)
4511
var
unaryKind = Binder.SyntaxKindToUnaryOperatorKind(SyntaxFacts.GetPrefixUnaryExpression(syntaxKind));
4516
var
easyOutUnaryKind = OverloadResolution.UnopEasyOut.OpKind(unaryKind, csharpOperandType);
4518
if (easyOutUnaryKind !=
UnaryOperatorKind
.Error)
4532
unaryKind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PrefixDecrement or
UnaryOperatorKind
.BitwiseComplement &&
4540
unaryKind is
UnaryOperatorKind
.PrefixIncrement or
UnaryOperatorKind
.PrefixDecrement &&
Compilation\CSharpSemanticModel.cs (9)
2015
UnaryOperatorKind
operatorKind = @operator.OperatorKind;
2016
return operatorKind ==
UnaryOperatorKind
.UserDefinedTrue || operatorKind ==
UnaryOperatorKind
.UserDefinedFalse;
3804
UnaryOperatorKind
operandType = unaryOperator.OperatorKind.OperandTypes();
3807
if (operandType == 0 || operandType ==
UnaryOperatorKind
.UserDefined || unaryOperator.ResultKind != LookupResultKind.Viable)
3817
UnaryOperatorKind
op = unaryOperator.OperatorKind.Operator();
3827
UnaryOperatorKind
operandType = increment.OperatorKind.OperandTypes();
3830
if (operandType == 0 || operandType ==
UnaryOperatorKind
.UserDefined || increment.ResultKind != LookupResultKind.Viable)
3840
UnaryOperatorKind
op = increment.OperatorKind.Operator();
FlowAnalysis\AbstractFlowPass.cs (1)
2766
if (node.OperatorKind ==
UnaryOperatorKind
.BoolLogicalNegation)
FlowAnalysis\NullableWalker.cs (6)
10879
var
op = node.OperatorKind.Operator();
10880
TypeWithState resultType = (op ==
UnaryOperatorKind
.PrefixIncrement || op ==
UnaryOperatorKind
.PrefixDecrement) ? resultOfIncrementType : operandType;
11667
case
UnaryOperatorKind
.BoolLogicalNegation:
11673
case
UnaryOperatorKind
.DynamicTrue:
11679
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)
343
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
346
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
357
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
360
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
371
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredRight, loweredRight.Type);
374
return MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, loweredLeft, loweredLeft.Type);
627
var
testOperator = isAnd ?
UnaryOperatorKind
.DynamicFalse :
UnaryOperatorKind
.DynamicTrue;
633
if (testOperator ==
UnaryOperatorKind
.DynamicFalse && constantLeft == ConstantValue.False ||
634
testOperator ==
UnaryOperatorKind
.DynamicTrue && constantLeft == ConstantValue.True)
676
bool leftTestIsConstantFalse = testOperator ==
UnaryOperatorKind
.DynamicFalse && constantLeft == ConstantValue.True ||
677
testOperator ==
UnaryOperatorKind
.DynamicTrue && constantLeft == ConstantValue.False;
737
return _dynamicFactory.MakeDynamicUnaryOperator(negative ?
UnaryOperatorKind
.DynamicFalse :
UnaryOperatorKind
.DynamicTrue, loweredLeft, boolean).ToExpression();
756
return new BoundUnaryOperator(syntax,
UnaryOperatorKind
.BoolLogicalNegation, converted, ConstantValue.NotAvailable, MethodSymbol.None, constrainedToTypeOpt: null, LookupResultKind.Viable, boolean)
892
MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, callHasValue, boolType) :
1875
BoundExpression invert = MakeUnaryOperator(
UnaryOperatorKind
.BoolLogicalNegation, syntax, method: null, constrainedToTypeOpt: null, innerOr, boolType);
2008
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;
710
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.UserDefined)
902
if (node.OperatorKind.OperandTypes() ==
UnaryOperatorKind
.Pointer)
1032
UnaryOperatorKind
kind = node.OperatorKind.OperandTypes();
1037
if (kind ==
UnaryOperatorKind
.Enum)
1046
case
UnaryOperatorKind
.Int:
1049
case
UnaryOperatorKind
.SByte:
1052
case
UnaryOperatorKind
.Short:
1055
case
UnaryOperatorKind
.Byte:
1058
case
UnaryOperatorKind
.UShort:
1061
case
UnaryOperatorKind
.Char:
1064
case
UnaryOperatorKind
.UInt:
1067
case
UnaryOperatorKind
.Long:
1070
case
UnaryOperatorKind
.ULong:
1073
case
UnaryOperatorKind
.NInt:
1076
case
UnaryOperatorKind
.NUInt:
1079
case
UnaryOperatorKind
.Float:
1082
case
UnaryOperatorKind
.Double:
1085
case
UnaryOperatorKind
.Decimal:
1088
case
UnaryOperatorKind
.Pointer:
1090
case
UnaryOperatorKind
.UserDefined:
1091
case
UnaryOperatorKind
.Bool:
1112
UnaryOperatorKind
unaryOperatorKind = node.OperatorKind;
1117
case
UnaryOperatorKind
.Int:
1118
case
UnaryOperatorKind
.SByte:
1119
case
UnaryOperatorKind
.Short:
1122
case
UnaryOperatorKind
.Byte:
1123
case
UnaryOperatorKind
.UShort:
1124
case
UnaryOperatorKind
.Char:
1125
case
UnaryOperatorKind
.UInt:
1128
case
UnaryOperatorKind
.Long:
1131
case
UnaryOperatorKind
.ULong:
1134
case
UnaryOperatorKind
.NInt:
1137
case
UnaryOperatorKind
.NUInt:
1140
case
UnaryOperatorKind
.Float:
1143
case
UnaryOperatorKind
.Double:
1146
case
UnaryOperatorKind
.Decimal: //Dev10 special cased this, but we'll let DecimalRewriter handle it
1149
case
UnaryOperatorKind
.Enum:
1187
case
UnaryOperatorKind
.Pointer:
1190
case
UnaryOperatorKind
.UserDefined:
1191
case
UnaryOperatorKind
.Bool:
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
115
UnaryOperatorKind
operatorKind,
Lowering\SyntheticBoundNodeFactory.cs (2)
1659
return new BoundUnaryOperator(expression.Syntax,
UnaryOperatorKind
.BoolLogicalNegation, expression, null, null, constrainedToTypeOpt: null, LookupResultKind.Viable, expression.Type);
1906
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)
1565
foreach (
var
operatorKind in unaryOperators)
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (1)
Semantics\NativeIntegerTests.cs (1)
4805
foreach (
var
operatorKind in unaryOperators)