251 references to BindValueKind
Microsoft.CodeAnalysis.CSharp (251)
Binder\Binder.ValueChecks.cs (104)
256
private const
BindValueKind
ValueKindSignificantBitsMask = unchecked((
BindValueKind
)~((1 << ValueKindInsignificantBits) - 1));
353
private static bool RequiresRValueOnly(
BindValueKind
kind)
355
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.RValue;
358
private static bool RequiresAssignmentOnly(
BindValueKind
kind)
360
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.Assignable;
363
private static bool RequiresVariable(
BindValueKind
kind)
368
private static bool RequiresReferenceToLocation(
BindValueKind
kind)
370
return (kind &
BindValueKind
.RefersToLocation) != 0;
373
private static bool RequiresAssignableVariable(
BindValueKind
kind)
375
return (kind &
BindValueKind
.Assignable) != 0;
378
private static bool RequiresRefAssignableVariable(
BindValueKind
kind)
380
return (kind &
BindValueKind
.RefAssignable) != 0;
383
private static bool RequiresRefOrOut(
BindValueKind
kind)
385
return (kind &
BindValueKind
.RefOrOut) ==
BindValueKind
.RefOrOut;
390
private static AccessorKind GetIndexerAccessorKind(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind)
400
private static AccessorKind GetAccessorKind(
BindValueKind
valueKind)
402
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
405
BindValueKind
.CompoundAssignment => AccessorKind.Both,
406
BindValueKind
.Assignable => AccessorKind.Set,
411
private BoundIndexerAccess BindIndexerDefaultArgumentsAndParamsCollection(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
413
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
415
var useSetAccessor = coreValueKind ==
BindValueKind
.Assignable && indexerAccess.Indexer.RefKind != RefKind.Ref;
510
private BoundExpression CheckValue(BoundExpression expr,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
525
Debug.Assert(expr.Syntax.Kind() != SyntaxKind.Argument || valueKind ==
BindValueKind
.RefOrOut);
530
Debug.Assert(valueKind ==
BindValueKind
.RefOrOut);
534
Debug.Assert(valueKind is (
BindValueKind
.Assignable or
BindValueKind
.RefOrOut or
BindValueKind
.RefAssignable) || diagnostics.DiagnosticBag is null || diagnostics.HasAnyResolvedErrors());
582
if (valueKind ==
BindValueKind
.RValue)
589
if (valueKind ==
BindValueKind
.RValue)
596
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
604
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
618
if (expr.Kind == BoundKind.MethodGroup && valueKind !=
BindValueKind
.RValueOrMethodGroup)
667
expr.HasAnyErrors && valueKind ==
BindValueKind
.RValueOrMethodGroup)
672
var resultKind = (valueKind ==
BindValueKind
.RValue || valueKind ==
BindValueKind
.RValueOrMethodGroup) ?
704
internal bool CheckValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
762
case BoundKind.MethodGroup when valueKind ==
BindValueKind
.AddressOf:
984
bool checkArrayAccessValueKind(SyntaxNode node,
BindValueKind
valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
1006
private static void ReportThisLvalueError(SyntaxNode node,
BindValueKind
valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
1034
private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1036
if (valueKind ==
BindValueKind
.AddressOf)
1049
private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1139
private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1141
Debug.Assert(!RequiresAssignableVariable(
BindValueKind
.AddressOf));
1202
static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1206
Debug.Assert(valueKind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
1212
if (valueKind ==
BindValueKind
.RefReturn)
1231
if (valueKind ==
BindValueKind
.RefReturn)
1347
private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1393
Debug.Assert(valueKind ==
BindValueKind
.RefAssignable);
1402
return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt,
BindValueKind
.Assignable, diagnostics);
1487
private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1566
private bool CheckEventValueKind(BoundEventAccess boundEvent,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1577
if (valueKind ==
BindValueKind
.CompoundAssignment)
1603
if (!CheckIsValidReceiverForVariable(eventSyntax, receiver,
BindValueKind
.Assignable, diagnostics))
1610
if (eventSymbol.IsWindowsRuntimeEvent && valueKind !=
BindValueKind
.Assignable)
1614
if (valueKind ==
BindValueKind
.RefOrOut)
1635
private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver,
BindValueKind
kind, BindingDiagnosticBag diagnostics)
1665
BindValueKind
valueKind,
1706
private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1733
else if (valueKind ==
BindValueKind
.RefOrOut)
1804
var
setValueKind = setMethod.IsEffectivelyReadOnly ?
BindValueKind
.RValue :
BindValueKind
.Assignable;
3167
private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3170
Debug.Assert(kind !=
BindValueKind
.RValue);
3205
private static ErrorCode GetThisLvalueError(
BindValueKind
kind, bool isValueType, bool isPrimaryConstructorParameter)
3209
case
BindValueKind
.CompoundAssignment:
3210
case
BindValueKind
.Assignable:
3213
case
BindValueKind
.RefOrOut:
3216
case
BindValueKind
.AddressOf:
3219
case
BindValueKind
.IncrementDecrement:
3222
case
BindValueKind
.RefReturn:
3223
case
BindValueKind
.ReadonlyRef:
3226
case
BindValueKind
.RefAssignable:
3238
private static ErrorCode GetRangeLvalueError(
BindValueKind
kind)
3242
case
BindValueKind
.Assignable:
3243
case
BindValueKind
.CompoundAssignment:
3244
case
BindValueKind
.IncrementDecrement:
3247
case
BindValueKind
.AddressOf:
3250
case
BindValueKind
.RefReturn:
3251
case
BindValueKind
.ReadonlyRef:
3254
case
BindValueKind
.RefAssignable:
3266
private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(
BindValueKind
valueKind)
3277
private static ErrorCode GetStandardLvalueError(
BindValueKind
kind)
3281
case
BindValueKind
.CompoundAssignment:
3282
case
BindValueKind
.Assignable:
3285
case
BindValueKind
.AddressOf:
3288
case
BindValueKind
.IncrementDecrement:
3291
case
BindValueKind
.FixedReceiver:
3294
case
BindValueKind
.RefReturn:
3295
case
BindValueKind
.ReadonlyRef:
3298
case
BindValueKind
.RefAssignable:
3326
private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3334
Debug.Assert(kind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
3351
int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
3362
private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3369
if (kind ==
BindValueKind
.AddressOf)
3387
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)
455
if (CheckValueKind(syntax, source,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
470
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);
792
var checkedVariable = CheckValue(boundVariable,
BindValueKind
.Assignable, diagnostics);
Binder\Binder_Expressions.cs (54)
241
internal BoundExpression BindValue(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
249
return BindToNaturalType(BindValue(node, diagnostics,
BindValueKind
.RValue), diagnostics, reportNoTargetType);
266
return CheckValue(valueOrType,
BindValueKind
.RValue, diagnostics);
435
internal BoundExpression BindValueAllowArgList(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
480
BindValueKind
valueKind;
513
valueBeforeConversion = defaultValueBinder.BindValue(defaultValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
531
var initializer = initializerBinder.BindValue(equalsValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
861
node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(BindToTypeForErrorRecovery(BindValue(node.Expression, BindingDiagnosticBag.Discarded,
BindValueKind
.RefersToLocation))),
1013
ImmutableArray.Create(BindValue(arguments[0].Expression, diagnostics,
BindValueKind
.RValue)) :
1043
BoundExpression boundArgument = BindValue(argumentSyntax.Expression, diagnostics,
BindValueKind
.RValue);
1224
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
1247
BoundExpression argument = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RefOrOut);
1272
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2584
BoundExpression operand = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2609
BoundExpression boundOperand = BindValue(node.Operand, diagnostics,
BindValueKind
.RValue);
2717
BoundExpression boundOperand = BindValue(operand, diagnostics,
BindValueKind
.RValue);
3120
var
requiredValueKind = origRefKind == RefKind.In ?
BindValueKind
.ReadonlyRef :
BindValueKind
.RefOrOut;
3401
BindValueKind
valueKind =
3403
BindValueKind
.RValue :
3405
BindValueKind
.ReadonlyRef :
3406
BindValueKind
.RefOrOut;
3926
if (!this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
3938
if (this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4091
var size = BindValue(dimension, diagnostics,
BindValueKind
.RValue);
4207
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4224
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4553
count = BindValue(countSyntax, diagnostics,
BindValueKind
.RValue);
5268
ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics,
BindValueKind
.RValue),
5642
BindValueKind
rhsValueKind,
5654
Debug.Assert(rhsValueKind ==
BindValueKind
.RValue);
5742
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) :
BindValueKind
.RValue;
5790
var boundExpression = BindValue(memberInitializer, diagnostics,
BindValueKind
.RValue);
5805
BindValueKind
valueKind = isRhsNestedInitializer ?
BindValueKind
.RValue : (isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable);
5818
leftSyntax, implicitReceiver,
BindValueKind
.Assignable, false, diagnostics);
5825
BindValueKind
valueKind,
6067
BindValueKind
valueKind,
6101
return ToBadExpression(boundMember, (valueKind ==
BindValueKind
.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable);
6356
var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType,
BindValueKind
.RValue, implicitReceiver.Syntax, diagnostics);
6385
exprBuilder.Add(BindValue(childElementInitializer, diagnostics,
BindValueKind
.RValue));
7673
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
7783
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
8952
hasError = !CheckValueKind(node, receiver,
BindValueKind
.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics);
9365
receiver = CheckValue(receiver,
BindValueKind
.RValue, diagnostics);
9495
if (CheckValueKind(node, expr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
9507
if (!CheckValueKind(node, expr,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
10532
lengthOrCountAccess = CheckValue(lengthOrCountAccess,
BindValueKind
.RValue, diagnostics);
11328
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 (11)
125
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
245
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
729
extensionMemberAccess = CheckValue(extensionMemberAccess,
BindValueKind
.RValue, diagnostics);
1268
receiverArgument = CheckValue(receiverArgument,
BindValueKind
.RefOrOut, diagnostics);
1370
receiver = CheckValue(receiver,
BindValueKind
.RefOrOut, diagnostics);
1397
var
valueKind = method.IsEffectivelyReadOnly
1398
?
BindValueKind
.RefersToLocation
1399
:
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable;
1915
return CheckValue(typeOrValue.Data.ValueExpression,
BindValueKind
.RValue, diagnostics);
2309
boundArgument = CheckValue(boundArgument,
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);
2269
BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics,
BindValueKind
.IncrementDecrement), diagnostics);
2517
BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics,
BindValueKind
.AddressOf), diagnostics);
2604
bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver,
BindValueKind
.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded);
3029
private static
BindValueKind
GetBinaryAssignmentKind(SyntaxKind kind)
3034
return
BindValueKind
.Assignable;
3047
return
BindValueKind
.CompoundAssignment;
3049
return
BindValueKind
.RValue;
3053
private static
BindValueKind
GetUnaryAssignmentKind(SyntaxKind kind)
3061
return
BindValueKind
.IncrementDecrement;
3066
return
BindValueKind
.RValue;
3987
var leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.RValue);
3989
var rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
4176
BoundExpression leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.CompoundAssignment);
4178
BoundExpression rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
4305
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue);
4306
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue);
4346
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
4347
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);
985
var checkedUltimateReceiver = CheckValue(ultimateReceiver,
BindValueKind
.RValue, diagnostics);
Binder\Binder_Statements.cs (28)
240
: BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
395
var boundExpr = BindValue(exprSyntax, diagnostics,
BindValueKind
.RValue);
866
BindValueKind
valueKind;
873
protected BoundExpression BindInferredVariableInitializer(BindingDiagnosticBag diagnostics, ExpressionSyntax initializer,
BindValueKind
valueKind, CSharpSyntaxNode errorSyntax)
914
out
BindValueKind
valueKind,
921
valueKind =
BindValueKind
.RValue;
931
?
BindValueKind
.ReadonlyRef
932
:
BindValueKind
.RefOrOut;
1007
BindValueKind
valueKind;
1417
var
lhsKind = isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable;
1425
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(op1) :
BindValueKind
.RValue;
1438
private static
BindValueKind
GetRequiredRHSValueKindForRefAssignment(BoundExpression boundLeft)
1440
var
rhsKind =
BindValueKind
.RefersToLocation;
1450
rhsKind |=
BindValueKind
.Assignable;
1838
BindValueKind
valueKind,
2655
var expr = BindValue(node, diagnostics,
BindValueKind
.RValue);
3010
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3593
BindValueKind
requiredValueKind = bodyBinder.GetRequiredReturnValueKind(refKind);
3609
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3623
private
BindValueKind
GetRequiredReturnValueKind(RefKind refKind)
3625
BindValueKind
requiredValueKind =
BindValueKind
.RValue;
3630
BindValueKind
.RefReturn :
3631
BindValueKind
.ReadonlyRef;
Binder\ForEachLoopBinder.cs (9)
343
BindValueKind
requiredCurrentKind;
347
requiredCurrentKind =
BindValueKind
.RValue;
350
requiredCurrentKind =
BindValueKind
.Assignable |
BindValueKind
.RefersToLocation;
353
requiredCurrentKind =
BindValueKind
.RefersToLocation;
622
BoundExpression collectionExpr = this.GetBinder(collectionSyntax).BindValue(collectionSyntax, diagnostics,
BindValueKind
.RValue);
832
if (CheckValueKind(collectionExpr.Syntax, collectionExpr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
840
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),