245 references to BindValueKind
Microsoft.CodeAnalysis.CSharp (245)
Binder\Binder.ValueChecks.cs (103)
250
private const
BindValueKind
ValueKindSignificantBitsMask = unchecked((
BindValueKind
)~((1 << ValueKindInsignificantBits) - 1));
347
private static bool RequiresRValueOnly(
BindValueKind
kind)
349
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.RValue;
352
private static bool RequiresAssignmentOnly(
BindValueKind
kind)
354
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.Assignable;
357
private static bool RequiresVariable(
BindValueKind
kind)
362
private static bool RequiresReferenceToLocation(
BindValueKind
kind)
364
return (kind &
BindValueKind
.RefersToLocation) != 0;
367
private static bool RequiresAssignableVariable(
BindValueKind
kind)
369
return (kind &
BindValueKind
.Assignable) != 0;
372
private static bool RequiresRefAssignableVariable(
BindValueKind
kind)
374
return (kind &
BindValueKind
.RefAssignable) != 0;
377
private static bool RequiresRefOrOut(
BindValueKind
kind)
379
return (kind &
BindValueKind
.RefOrOut) ==
BindValueKind
.RefOrOut;
384
private static AccessorKind GetIndexerAccessorKind(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind)
391
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
394
BindValueKind
.CompoundAssignment => AccessorKind.Both,
395
BindValueKind
.Assignable => AccessorKind.Set,
400
private BoundIndexerAccess BindIndexerDefaultArgumentsAndParamsCollection(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
402
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
404
var useSetAccessor = coreValueKind ==
BindValueKind
.Assignable && indexerAccess.Indexer.RefKind != RefKind.Ref;
499
private BoundExpression CheckValue(BoundExpression expr,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
514
Debug.Assert(expr.Syntax.Kind() != SyntaxKind.Argument || valueKind ==
BindValueKind
.RefOrOut);
519
Debug.Assert(valueKind ==
BindValueKind
.RefOrOut);
523
Debug.Assert(valueKind is (
BindValueKind
.Assignable or
BindValueKind
.RefOrOut or
BindValueKind
.RefAssignable) || diagnostics.DiagnosticBag is null || diagnostics.HasAnyResolvedErrors());
549
if (valueKind ==
BindValueKind
.RValue)
556
if (valueKind ==
BindValueKind
.RValue)
563
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
571
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
585
if (expr.Kind == BoundKind.MethodGroup && valueKind !=
BindValueKind
.RValueOrMethodGroup)
633
expr.HasAnyErrors && valueKind ==
BindValueKind
.RValueOrMethodGroup)
638
var resultKind = (valueKind ==
BindValueKind
.RValue || valueKind ==
BindValueKind
.RValueOrMethodGroup) ?
670
internal bool CheckValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
728
case BoundKind.MethodGroup when valueKind ==
BindValueKind
.AddressOf:
950
bool checkArrayAccessValueKind(SyntaxNode node,
BindValueKind
valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
972
private static void ReportThisLvalueError(SyntaxNode node,
BindValueKind
valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
1000
private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1002
if (valueKind ==
BindValueKind
.AddressOf)
1015
private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1105
private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1107
Debug.Assert(!RequiresAssignableVariable(
BindValueKind
.AddressOf));
1168
static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1172
Debug.Assert(valueKind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
1178
if (valueKind ==
BindValueKind
.RefReturn)
1197
if (valueKind ==
BindValueKind
.RefReturn)
1313
private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1359
Debug.Assert(valueKind ==
BindValueKind
.RefAssignable);
1368
return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt,
BindValueKind
.Assignable, diagnostics);
1438
private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1517
private bool CheckEventValueKind(BoundEventAccess boundEvent,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1528
if (valueKind ==
BindValueKind
.CompoundAssignment)
1554
if (!CheckIsValidReceiverForVariable(eventSyntax, receiver,
BindValueKind
.Assignable, diagnostics))
1561
if (eventSymbol.IsWindowsRuntimeEvent && valueKind !=
BindValueKind
.Assignable)
1565
if (valueKind ==
BindValueKind
.RefOrOut)
1586
private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver,
BindValueKind
kind, BindingDiagnosticBag diagnostics)
1616
BindValueKind
valueKind,
1657
private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1684
else if (valueKind ==
BindValueKind
.RefOrOut)
1755
var
setValueKind = setMethod.IsEffectivelyReadOnly ?
BindValueKind
.RValue :
BindValueKind
.Assignable;
3050
private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3053
Debug.Assert(kind !=
BindValueKind
.RValue);
3088
private static ErrorCode GetThisLvalueError(
BindValueKind
kind, bool isValueType, bool isPrimaryConstructorParameter)
3092
case
BindValueKind
.CompoundAssignment:
3093
case
BindValueKind
.Assignable:
3096
case
BindValueKind
.RefOrOut:
3099
case
BindValueKind
.AddressOf:
3102
case
BindValueKind
.IncrementDecrement:
3105
case
BindValueKind
.RefReturn:
3106
case
BindValueKind
.ReadonlyRef:
3109
case
BindValueKind
.RefAssignable:
3121
private static ErrorCode GetRangeLvalueError(
BindValueKind
kind)
3125
case
BindValueKind
.Assignable:
3126
case
BindValueKind
.CompoundAssignment:
3127
case
BindValueKind
.IncrementDecrement:
3130
case
BindValueKind
.AddressOf:
3133
case
BindValueKind
.RefReturn:
3134
case
BindValueKind
.ReadonlyRef:
3137
case
BindValueKind
.RefAssignable:
3149
private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(
BindValueKind
valueKind)
3160
private static ErrorCode GetStandardLvalueError(
BindValueKind
kind)
3164
case
BindValueKind
.CompoundAssignment:
3165
case
BindValueKind
.Assignable:
3168
case
BindValueKind
.AddressOf:
3171
case
BindValueKind
.IncrementDecrement:
3174
case
BindValueKind
.FixedReceiver:
3177
case
BindValueKind
.RefReturn:
3178
case
BindValueKind
.ReadonlyRef:
3181
case
BindValueKind
.RefAssignable:
3209
private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3217
Debug.Assert(kind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
3234
int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
3245
private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3252
if (kind ==
BindValueKind
.AddressOf)
3270
int index = (checkingReceiver ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
Binder\Binder_Attributes.cs (1)
561
BoundExpression namedArgumentValue = this.BindValue(namedArgument.Expression, diagnostics,
BindValueKind
.RValue);
Binder\Binder_Conversions.cs (3)
459
if (CheckValueKind(syntax, source,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
474
if (CheckValueKind(syntax, source,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
Binder\Binder_Deconstruct.cs (3)
99
BoundExpression boundRight = rightPlaceholder ?? BindValue(right, deconstructionDiagnostics,
BindValueKind
.RValue);
658
memberAccess = CheckValue(memberAccess,
BindValueKind
.RValueOrMethodGroup, diagnostics);
791
var checkedVariable = CheckValue(boundVariable,
BindValueKind
.Assignable, diagnostics);
Binder\Binder_Expressions.cs (52)
236
internal BoundExpression BindValue(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
244
return BindToNaturalType(BindValue(node, diagnostics,
BindValueKind
.RValue), diagnostics, reportNoTargetType);
261
return CheckValue(valueOrType,
BindValueKind
.RValue, diagnostics);
430
internal BoundExpression BindValueAllowArgList(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
475
BindValueKind
valueKind;
506
valueBeforeConversion = defaultValueBinder.BindValue(defaultValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
524
var initializer = initializerBinder.BindValue(equalsValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
852
node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(BindToTypeForErrorRecovery(BindValue(node.Expression, BindingDiagnosticBag.Discarded,
BindValueKind
.RefersToLocation))),
1004
ImmutableArray.Create(BindValue(arguments[0].Expression, diagnostics,
BindValueKind
.RValue)) :
1034
BoundExpression boundArgument = BindValue(argumentSyntax.Expression, diagnostics,
BindValueKind
.RValue);
1215
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
1238
BoundExpression argument = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RefOrOut);
1263
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2498
BoundExpression operand = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2523
BoundExpression boundOperand = BindValue(node.Operand, diagnostics,
BindValueKind
.RValue);
2631
BoundExpression boundOperand = BindValue(operand, diagnostics,
BindValueKind
.RValue);
3034
var
requiredValueKind = origRefKind == RefKind.In ?
BindValueKind
.ReadonlyRef :
BindValueKind
.RefOrOut;
3313
BindValueKind
valueKind =
3315
BindValueKind
.RValue :
3317
BindValueKind
.ReadonlyRef :
3318
BindValueKind
.RefOrOut;
3400
if (!this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
3412
if (this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
3999
var size = BindValue(dimension, diagnostics,
BindValueKind
.RValue);
4115
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4132
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4461
count = BindValue(countSyntax, diagnostics,
BindValueKind
.RValue);
5176
ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics,
BindValueKind
.RValue),
5550
BindValueKind
rhsValueKind,
5562
Debug.Assert(rhsValueKind ==
BindValueKind
.RValue);
5648
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) :
BindValueKind
.RValue;
5663
var boundExpression = BindValue(memberInitializer, diagnostics,
BindValueKind
.RValue);
5683
BindValueKind
valueKind = isRhsNestedInitializer ?
BindValueKind
.RValue : (isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable);
5917
BindValueKind
valueKind,
5951
return ToBadExpression(boundMember, (valueKind ==
BindValueKind
.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable);
6206
var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType,
BindValueKind
.RValue, implicitReceiver.Syntax, diagnostics);
6235
exprBuilder.Add(BindValue(childElementInitializer, diagnostics,
BindValueKind
.RValue));
7525
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
7635
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
8477
hasError = !CheckValueKind(node, receiver,
BindValueKind
.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics);
8890
receiver = CheckValue(receiver,
BindValueKind
.RValue, diagnostics);
9020
if (CheckValueKind(node, expr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
9032
if (!CheckValueKind(node, expr,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
10055
lengthOrCountAccess = CheckValue(lengthOrCountAccess,
BindValueKind
.RValue, diagnostics);
10755
var access = conditionalAccessBinder.BindValue(node.WhenNotNull, diagnostics,
BindValueKind
.RValue);
Binder\Binder_InterpolatedString.cs (2)
90
var value = BindValue(interpolation.Expression, diagnostics,
BindValueKind
.RValue);
101
alignment = GenerateConversionForAssignment(intType, BindValue(interpolation.AlignmentClause.Value, diagnostics, Binder.
BindValueKind
.RValue), diagnostics);
Binder\Binder_Invocation.cs (8)
125
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
245
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
1230
receiverArgument = CheckValue(receiverArgument,
BindValueKind
.RefOrOut, diagnostics);
1341
var
valueKind = method.IsEffectivelyReadOnly
1342
?
BindValueKind
.RefersToLocation
1343
:
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable;
1912
return CheckValue(typeOrValue.Data.ValueExpression,
BindValueKind
.RValue, diagnostics);
Binder\Binder_Operators.cs (24)
27
BoundExpression right = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
99
if (left.Kind == BoundKind.EventAccess && !CheckEventValueKind((BoundEventAccess)left,
BindValueKind
.Assignable, diagnostics))
494
BindValueKind
bindValueKind = GetBinaryAssignmentKind(syntaxNode.Kind());
496
BoundExpression right = BindValue(syntaxNode.Right, diagnostics,
BindValueKind
.RValue);
2264
BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics,
BindValueKind
.IncrementDecrement), diagnostics);
2512
BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics,
BindValueKind
.AddressOf), diagnostics);
2599
bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver,
BindValueKind
.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded);
3024
private static
BindValueKind
GetBinaryAssignmentKind(SyntaxKind kind)
3029
return
BindValueKind
.Assignable;
3042
return
BindValueKind
.CompoundAssignment;
3044
return
BindValueKind
.RValue;
3048
private static
BindValueKind
GetUnaryAssignmentKind(SyntaxKind kind)
3056
return
BindValueKind
.IncrementDecrement;
3061
return
BindValueKind
.RValue;
3980
var leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.RValue);
3982
var rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
4169
BoundExpression leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.CompoundAssignment);
4171
BoundExpression rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
4298
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue);
4299
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue);
4339
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
4340
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
Binder\Binder_Patterns.cs (5)
239
indexerAccess = CheckValue(indexerAccess,
BindValueKind
.RValue, diagnostics);
388
indexerAccess = CheckValue(indexerAccess,
BindValueKind
.RValue, diagnostics);
536
expression = CheckValue(expression,
BindValueKind
.RValue, diagnostics);
1588
boundMember = CheckValue(boundMember,
BindValueKind
.RValue, diagnostics);
1601
if (!hasErrors && !CheckValueKind(node: memberName.Parent, expr: boundMember, valueKind:
BindValueKind
.RValue,
Binder\Binder_Query.cs (3)
837
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
847
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
1001
var checkedUltimateReceiver = CheckValue(ultimateReceiver,
BindValueKind
.RValue, diagnostics);
Binder\Binder_Statements.cs (28)
239
: BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
394
var boundExpr = BindValue(exprSyntax, diagnostics,
BindValueKind
.RValue);
863
BindValueKind
valueKind;
870
protected BoundExpression BindInferredVariableInitializer(BindingDiagnosticBag diagnostics, ExpressionSyntax initializer,
BindValueKind
valueKind, CSharpSyntaxNode errorSyntax)
911
out
BindValueKind
valueKind,
918
valueKind =
BindValueKind
.RValue;
928
?
BindValueKind
.ReadonlyRef
929
:
BindValueKind
.RefOrOut;
1004
BindValueKind
valueKind;
1416
var
lhsKind = isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable;
1424
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(op1) :
BindValueKind
.RValue;
1437
private static
BindValueKind
GetRequiredRHSValueKindForRefAssignment(BoundExpression boundLeft)
1439
var
rhsKind =
BindValueKind
.RefersToLocation;
1449
rhsKind |=
BindValueKind
.Assignable;
1804
BindValueKind
valueKind,
2543
var expr = BindValue(node, diagnostics,
BindValueKind
.RValue);
2898
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3479
BindValueKind
requiredValueKind = bodyBinder.GetRequiredReturnValueKind(refKind);
3495
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3509
private
BindValueKind
GetRequiredReturnValueKind(RefKind refKind)
3511
BindValueKind
requiredValueKind =
BindValueKind
.RValue;
3516
BindValueKind
.RefReturn :
3517
BindValueKind
.ReadonlyRef;
Binder\ForEachLoopBinder.cs (9)
333
BindValueKind
requiredCurrentKind;
337
requiredCurrentKind =
BindValueKind
.RValue;
340
requiredCurrentKind =
BindValueKind
.Assignable |
BindValueKind
.RefersToLocation;
343
requiredCurrentKind =
BindValueKind
.RefersToLocation;
611
BoundExpression collectionExpr = this.GetBinder(collectionSyntax).BindValue(collectionSyntax, diagnostics,
BindValueKind
.RValue);
821
if (CheckValueKind(collectionExpr.Syntax, collectionExpr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
829
if (!CheckValueKind(collectionExpr.Syntax, collectionExpr,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
Binder\LockOrUsingBinder.cs (1)
84
BoundExpression boundExpression = originalBinder.BindValue(TargetExpressionSyntax, expressionDiagnostics, Binder.
BindValueKind
.RValueOrMethodGroup);
Binder\SwitchBinder.cs (1)
497
gotoCaseExpressionOpt = gotoBinder.BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
Binder\SwitchExpressionArmBinder.cs (1)
46
BoundExpression armResult = armBinder.BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
Symbols\Source\SourceFixedFieldSymbol.cs (1)
92
binder.BindValue(sizeExpression, diagnostics, Binder.
BindValueKind
.RValue),