254 references to BindValueKind
Microsoft.CodeAnalysis.CSharp (254)
Binder\Binder.ValueChecks.cs (103)
477
private const
BindValueKind
ValueKindSignificantBitsMask = unchecked((
BindValueKind
)~((1 << ValueKindInsignificantBits) - 1));
574
private static bool RequiresRValueOnly(
BindValueKind
kind)
576
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.RValue;
579
private static bool RequiresAssignmentOnly(
BindValueKind
kind)
581
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.Assignable;
584
private static bool RequiresVariable(
BindValueKind
kind)
589
private static bool RequiresReferenceToLocation(
BindValueKind
kind)
591
return (kind &
BindValueKind
.RefersToLocation) != 0;
594
private static bool RequiresAssignableVariable(
BindValueKind
kind)
596
return (kind &
BindValueKind
.Assignable) != 0;
599
private static bool RequiresRefAssignableVariable(
BindValueKind
kind)
601
return (kind &
BindValueKind
.RefAssignable) != 0;
604
private static bool RequiresRefOrOut(
BindValueKind
kind)
606
return (kind &
BindValueKind
.RefOrOut) ==
BindValueKind
.RefOrOut;
611
private static AccessorKind GetIndexerAccessorKind(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind)
621
private static AccessorKind GetAccessorKind(
BindValueKind
valueKind)
623
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
626
BindValueKind
.CompoundAssignment => AccessorKind.Both,
627
BindValueKind
.Assignable => AccessorKind.Set,
632
private BoundIndexerAccess BindIndexerDefaultArgumentsAndParamsCollection(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
634
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
636
var useSetAccessor = coreValueKind ==
BindValueKind
.Assignable && indexerAccess.Indexer.RefKind != RefKind.Ref;
733
private BoundExpression CheckValue(BoundExpression expr,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
748
Debug.Assert(expr.Syntax.Kind() != SyntaxKind.Argument || valueKind ==
BindValueKind
.RefOrOut);
753
Debug.Assert(valueKind ==
BindValueKind
.RefOrOut);
757
Debug.Assert(valueKind is (
BindValueKind
.Assignable or
BindValueKind
.RefOrOut or
BindValueKind
.RefAssignable) || diagnostics.DiagnosticBag is null || diagnostics.HasAnyResolvedErrors());
809
if (valueKind ==
BindValueKind
.RValue)
816
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
824
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
838
if (expr.Kind == BoundKind.MethodGroup && valueKind !=
BindValueKind
.RValueOrMethodGroup)
888
expr.HasAnyErrors && valueKind ==
BindValueKind
.RValueOrMethodGroup)
893
var resultKind = (valueKind ==
BindValueKind
.RValue || valueKind ==
BindValueKind
.RValueOrMethodGroup) ?
925
internal bool CheckValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
983
case BoundKind.MethodGroup when valueKind ==
BindValueKind
.AddressOf:
1205
bool checkArrayAccessValueKind(SyntaxNode node,
BindValueKind
valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
1227
private static void ReportThisLvalueError(SyntaxNode node,
BindValueKind
valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
1255
private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1257
if (valueKind ==
BindValueKind
.AddressOf)
1270
private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1360
private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1362
Debug.Assert(!RequiresAssignableVariable(
BindValueKind
.AddressOf));
1423
static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1427
Debug.Assert(valueKind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
1433
if (valueKind ==
BindValueKind
.RefReturn)
1452
if (valueKind ==
BindValueKind
.RefReturn)
1568
private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1613
Debug.Assert(valueKind ==
BindValueKind
.RefAssignable);
1630
return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt,
BindValueKind
.Assignable, diagnostics);
1716
private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1795
private bool CheckEventValueKind(BoundEventAccess boundEvent,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1806
if (valueKind ==
BindValueKind
.CompoundAssignment)
1832
if (!CheckIsValidReceiverForVariable(eventSyntax, receiver,
BindValueKind
.Assignable, diagnostics))
1839
if (eventSymbol.IsWindowsRuntimeEvent && valueKind !=
BindValueKind
.Assignable)
1843
if (valueKind ==
BindValueKind
.RefOrOut)
1864
private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver,
BindValueKind
kind, BindingDiagnosticBag diagnostics)
1894
BindValueKind
valueKind,
1935
private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1962
else if (valueKind ==
BindValueKind
.RefOrOut)
2033
var
setValueKind = setMethod.IsEffectivelyReadOnly ?
BindValueKind
.RValue :
BindValueKind
.Assignable;
3406
private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3409
Debug.Assert(kind !=
BindValueKind
.RValue);
3444
private static ErrorCode GetThisLvalueError(
BindValueKind
kind, bool isValueType, bool isPrimaryConstructorParameter)
3448
case
BindValueKind
.CompoundAssignment:
3449
case
BindValueKind
.Assignable:
3452
case
BindValueKind
.RefOrOut:
3455
case
BindValueKind
.AddressOf:
3458
case
BindValueKind
.IncrementDecrement:
3461
case
BindValueKind
.RefReturn:
3462
case
BindValueKind
.ReadonlyRef:
3465
case
BindValueKind
.RefAssignable:
3477
private static ErrorCode GetRangeLvalueError(
BindValueKind
kind)
3481
case
BindValueKind
.Assignable:
3482
case
BindValueKind
.CompoundAssignment:
3483
case
BindValueKind
.IncrementDecrement:
3486
case
BindValueKind
.AddressOf:
3489
case
BindValueKind
.RefReturn:
3490
case
BindValueKind
.ReadonlyRef:
3493
case
BindValueKind
.RefAssignable:
3505
private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(
BindValueKind
valueKind)
3516
private static ErrorCode GetStandardLvalueError(
BindValueKind
kind)
3520
case
BindValueKind
.CompoundAssignment:
3521
case
BindValueKind
.Assignable:
3524
case
BindValueKind
.AddressOf:
3527
case
BindValueKind
.IncrementDecrement:
3530
case
BindValueKind
.FixedReceiver:
3533
case
BindValueKind
.RefReturn:
3534
case
BindValueKind
.ReadonlyRef:
3537
case
BindValueKind
.RefAssignable:
3565
private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3573
Debug.Assert(kind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
3590
int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
3601
private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3608
if (kind ==
BindValueKind
.AddressOf)
3626
int index = (checkingReceiver ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
Binder\Binder_Attributes.cs (1)
563
BoundExpression namedArgumentValue = this.BindValue(namedArgument.Expression, diagnostics,
BindValueKind
.RValue);
Binder\Binder_Conversions.cs (3)
461
if (CheckValueKind(syntax, source,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
476
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)
254
internal BoundExpression BindValue(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
262
return BindToNaturalType(BindValue(node, diagnostics,
BindValueKind
.RValue), diagnostics, reportNoTargetType);
279
return CheckValue(valueOrType,
BindValueKind
.RValue, diagnostics);
461
internal BoundExpression BindValueAllowArgList(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
506
BindValueKind
valueKind;
539
valueBeforeConversion = defaultValueBinder.BindValue(defaultValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
557
var initializer = initializerBinder.BindValue(equalsValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
887
node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(BindToTypeForErrorRecovery(BindValue(node.Expression, BindingDiagnosticBag.Discarded,
BindValueKind
.RefersToLocation))),
1039
ImmutableArray.Create(BindValue(arguments[0].Expression, diagnostics,
BindValueKind
.RValue)) :
1069
BoundExpression boundArgument = BindValue(argumentSyntax.Expression, diagnostics,
BindValueKind
.RValue);
1250
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
1273
BoundExpression argument = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RefOrOut);
1298
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2643
BoundExpression operand = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2668
BoundExpression boundOperand = BindValue(node.Operand, diagnostics,
BindValueKind
.RValue);
2776
BoundExpression boundOperand = BindValue(operand, diagnostics,
BindValueKind
.RValue);
3179
var
requiredValueKind = origRefKind == RefKind.In ?
BindValueKind
.ReadonlyRef :
BindValueKind
.RefOrOut;
3460
BindValueKind
valueKind =
3462
BindValueKind
.RValue :
3464
BindValueKind
.ReadonlyRef :
3465
BindValueKind
.RefOrOut;
3994
if (!this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4006
if (this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4159
var size = BindValue(dimension, diagnostics,
BindValueKind
.RValue);
4275
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4292
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4621
count = BindValue(countSyntax, diagnostics,
BindValueKind
.RValue);
5336
ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics,
BindValueKind
.RValue),
5716
BindValueKind
rhsValueKind,
5728
Debug.Assert(rhsValueKind ==
BindValueKind
.RValue);
5816
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) :
BindValueKind
.RValue;
5864
var boundExpression = BindValue(memberInitializer, diagnostics,
BindValueKind
.RValue);
5879
BindValueKind
valueKind = isRhsNestedInitializer ?
BindValueKind
.RValue : (isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable);
5892
leftSyntax, implicitReceiver,
BindValueKind
.Assignable, false, diagnostics);
5899
BindValueKind
valueKind,
6141
BindValueKind
valueKind,
6175
return ToBadExpression(boundMember, (valueKind ==
BindValueKind
.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable);
6430
var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType,
BindValueKind
.RValue, implicitReceiver.Syntax, diagnostics);
6459
exprBuilder.Add(BindValue(childElementInitializer, diagnostics,
BindValueKind
.RValue));
7771
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
7881
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
9039
hasError = !CheckValueKind(node, receiver,
BindValueKind
.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics);
9471
receiver = CheckValue(receiver,
BindValueKind
.RValue, diagnostics);
9601
if (CheckValueKind(node, expr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
9613
if (!CheckValueKind(node, expr,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
10639
lengthOrCountAccess = CheckValue(lengthOrCountAccess,
BindValueKind
.RValue, diagnostics);
11474
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)
126
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
246
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
737
extensionMemberAccess = CheckValue(extensionMemberAccess,
BindValueKind
.RValue, diagnostics);
1275
receiverArgument = CheckValue(receiverArgument,
BindValueKind
.RefOrOut, diagnostics);
1378
receiver = CheckValue(receiver,
BindValueKind
.RefOrOut, diagnostics);
1405
var
valueKind = method.IsEffectivelyReadOnly
1406
?
BindValueKind
.RefersToLocation
1407
:
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable;
1977
return CheckValue(boundValue,
BindValueKind
.RValue, diagnostics);
2418
boundArgument = CheckValue(boundArgument,
BindValueKind
.RValue, diagnostics);
Binder\Binder_Operators.cs (28)
37
BoundExpression right = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
111
if (left.Kind == BoundKind.EventAccess && !CheckEventValueKind((BoundEventAccess)left,
BindValueKind
.Assignable, diagnostics))
357
if (!CheckValueKind(node, left,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
929
BindValueKind
bindValueKind = GetBinaryAssignmentKind(syntaxNode.Kind());
931
BoundExpression right = BindValue(syntaxNode.Right, diagnostics,
BindValueKind
.RValue);
3261
BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics,
BindValueKind
.IncrementDecrement), diagnostics);
3456
!CheckValueKind(node, operand,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4112
BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics,
BindValueKind
.AddressOf), diagnostics);
4199
bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver,
BindValueKind
.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded);
4629
private static
BindValueKind
GetBinaryAssignmentKind(SyntaxKind kind)
4634
return
BindValueKind
.Assignable;
4647
return
BindValueKind
.CompoundAssignment;
4649
return
BindValueKind
.RValue;
4653
private static
BindValueKind
GetUnaryAssignmentKind(SyntaxKind kind)
4661
return
BindValueKind
.IncrementDecrement;
4666
return
BindValueKind
.RValue;
5587
var leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.RValue);
5589
var rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
5776
BoundExpression leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.CompoundAssignment);
5778
BoundExpression rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
5905
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue);
5906
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue);
5946
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
5947
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
Binder\Binder_Patterns.cs (5)
251
indexerAccess = CheckValue(indexerAccess,
BindValueKind
.RValue, diagnostics);
400
indexerAccess = CheckValue(indexerAccess,
BindValueKind
.RValue, diagnostics);
548
expression = CheckValue(expression,
BindValueKind
.RValue, diagnostics);
1600
boundMember = CheckValue(boundMember,
BindValueKind
.RValue, diagnostics);
1613
if (!hasErrors && !CheckValueKind(node: memberName.Parent, expr: boundMember, valueKind:
BindValueKind
.RValue,
Binder\Binder_Query.cs (3)
848
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
858
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
998
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);
871
BindValueKind
valueKind;
878
protected BoundExpression BindInferredVariableInitializer(BindingDiagnosticBag diagnostics, ExpressionSyntax initializer,
BindValueKind
valueKind, CSharpSyntaxNode errorSyntax)
919
out
BindValueKind
valueKind,
926
valueKind =
BindValueKind
.RValue;
936
?
BindValueKind
.ReadonlyRef
937
:
BindValueKind
.RefOrOut;
1012
BindValueKind
valueKind;
1422
var
lhsKind = isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable;
1430
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(op1) :
BindValueKind
.RValue;
1443
private static
BindValueKind
GetRequiredRHSValueKindForRefAssignment(BoundExpression boundLeft)
1445
var
rhsKind =
BindValueKind
.RefersToLocation;
1455
rhsKind |=
BindValueKind
.Assignable;
1867
BindValueKind
valueKind,
2684
var expr = BindValue(node, diagnostics,
BindValueKind
.RValue);
3040
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3623
BindValueKind
requiredValueKind = bodyBinder.GetRequiredReturnValueKind(refKind);
3639
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3653
private
BindValueKind
GetRequiredReturnValueKind(RefKind refKind)
3655
BindValueKind
requiredValueKind =
BindValueKind
.RValue;
3660
BindValueKind
.RefReturn :
3661
BindValueKind
.ReadonlyRef;
Binder\ForEachLoopBinder.cs (9)
343
BindValueKind
requiredCurrentKind;
347
requiredCurrentKind =
BindValueKind
.RValue;
350
requiredCurrentKind =
BindValueKind
.Assignable |
BindValueKind
.RefersToLocation;
353
requiredCurrentKind =
BindValueKind
.RefersToLocation;
629
BoundExpression collectionExpr = this.GetBinder(collectionSyntax).BindValue(collectionSyntax, diagnostics,
BindValueKind
.RValue);
839
if (CheckValueKind(collectionExpr.Syntax, collectionExpr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
847
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)
93
binder.BindValue(sizeExpression, diagnostics, Binder.
BindValueKind
.RValue),