254 references to BindValueKind
Microsoft.CodeAnalysis.CSharp (254)
Binder\Binder.ValueChecks.cs (103)
478
private const
BindValueKind
ValueKindSignificantBitsMask = unchecked((
BindValueKind
)~((1 << ValueKindInsignificantBits) - 1));
575
private static bool RequiresRValueOnly(
BindValueKind
kind)
577
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.RValue;
580
private static bool RequiresAssignmentOnly(
BindValueKind
kind)
582
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.Assignable;
585
private static bool RequiresVariable(
BindValueKind
kind)
590
private static bool RequiresReferenceToLocation(
BindValueKind
kind)
592
return (kind &
BindValueKind
.RefersToLocation) != 0;
595
private static bool RequiresAssignableVariable(
BindValueKind
kind)
597
return (kind &
BindValueKind
.Assignable) != 0;
600
private static bool RequiresRefAssignableVariable(
BindValueKind
kind)
602
return (kind &
BindValueKind
.RefAssignable) != 0;
605
private static bool RequiresRefOrOut(
BindValueKind
kind)
607
return (kind &
BindValueKind
.RefOrOut) ==
BindValueKind
.RefOrOut;
612
private static AccessorKind GetIndexerAccessorKind(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind)
622
private static AccessorKind GetAccessorKind(
BindValueKind
valueKind)
624
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
627
BindValueKind
.CompoundAssignment => AccessorKind.Both,
628
BindValueKind
.Assignable => AccessorKind.Set,
633
private BoundIndexerAccess BindIndexerDefaultArgumentsAndParamsCollection(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
635
var
coreValueKind = valueKind & ValueKindSignificantBitsMask;
637
var useSetAccessor = coreValueKind ==
BindValueKind
.Assignable && indexerAccess.Indexer.RefKind != RefKind.Ref;
734
private BoundExpression CheckValue(BoundExpression expr,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
749
Debug.Assert(expr.Syntax.Kind() != SyntaxKind.Argument || valueKind ==
BindValueKind
.RefOrOut);
754
Debug.Assert(valueKind ==
BindValueKind
.RefOrOut);
758
Debug.Assert(valueKind is (
BindValueKind
.Assignable or
BindValueKind
.RefOrOut or
BindValueKind
.RefAssignable) || diagnostics.DiagnosticBag is null || diagnostics.HasAnyResolvedErrors());
810
if (valueKind ==
BindValueKind
.RValue)
817
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
825
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
839
if (expr.Kind == BoundKind.MethodGroup && valueKind !=
BindValueKind
.RValueOrMethodGroup)
889
expr.HasAnyErrors && valueKind ==
BindValueKind
.RValueOrMethodGroup)
894
var resultKind = (valueKind ==
BindValueKind
.RValue || valueKind ==
BindValueKind
.RValueOrMethodGroup) ?
926
internal bool CheckValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
984
case BoundKind.MethodGroup when valueKind ==
BindValueKind
.AddressOf:
1206
bool checkArrayAccessValueKind(SyntaxNode node,
BindValueKind
valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
1228
private static void ReportThisLvalueError(SyntaxNode node,
BindValueKind
valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
1283
private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1285
if (valueKind ==
BindValueKind
.AddressOf)
1298
private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1388
private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1390
Debug.Assert(!RequiresAssignableVariable(
BindValueKind
.AddressOf));
1451
static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1455
Debug.Assert(valueKind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
1461
if (valueKind ==
BindValueKind
.RefReturn)
1480
if (valueKind ==
BindValueKind
.RefReturn)
1596
private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1641
Debug.Assert(valueKind ==
BindValueKind
.RefAssignable);
1658
return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt,
BindValueKind
.Assignable, diagnostics);
1744
private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1823
private bool CheckEventValueKind(BoundEventAccess boundEvent,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1834
if (valueKind ==
BindValueKind
.CompoundAssignment)
1860
if (!CheckIsValidReceiverForVariable(eventSyntax, receiver,
BindValueKind
.Assignable, diagnostics))
1867
if (eventSymbol.IsWindowsRuntimeEvent && valueKind !=
BindValueKind
.Assignable)
1871
if (valueKind ==
BindValueKind
.RefOrOut)
1892
private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver,
BindValueKind
kind, BindingDiagnosticBag diagnostics)
1922
BindValueKind
valueKind,
1963
private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1990
else if (valueKind ==
BindValueKind
.RefOrOut)
2061
var
setValueKind = setMethod.IsEffectivelyReadOnly ?
BindValueKind
.RValue :
BindValueKind
.Assignable;
3434
private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3437
Debug.Assert(kind !=
BindValueKind
.RValue);
3472
private static ErrorCode GetThisLvalueError(
BindValueKind
kind, bool isValueType, bool isPrimaryConstructorParameter)
3476
case
BindValueKind
.CompoundAssignment:
3477
case
BindValueKind
.Assignable:
3480
case
BindValueKind
.RefOrOut:
3483
case
BindValueKind
.AddressOf:
3486
case
BindValueKind
.IncrementDecrement:
3489
case
BindValueKind
.RefReturn:
3490
case
BindValueKind
.ReadonlyRef:
3493
case
BindValueKind
.RefAssignable:
3505
private static ErrorCode GetRangeLvalueError(
BindValueKind
kind)
3509
case
BindValueKind
.Assignable:
3510
case
BindValueKind
.CompoundAssignment:
3511
case
BindValueKind
.IncrementDecrement:
3514
case
BindValueKind
.AddressOf:
3517
case
BindValueKind
.RefReturn:
3518
case
BindValueKind
.ReadonlyRef:
3521
case
BindValueKind
.RefAssignable:
3533
private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(
BindValueKind
valueKind)
3544
private static ErrorCode GetStandardLvalueError(
BindValueKind
kind)
3548
case
BindValueKind
.CompoundAssignment:
3549
case
BindValueKind
.Assignable:
3552
case
BindValueKind
.AddressOf:
3555
case
BindValueKind
.IncrementDecrement:
3558
case
BindValueKind
.FixedReceiver:
3561
case
BindValueKind
.RefReturn:
3562
case
BindValueKind
.ReadonlyRef:
3565
case
BindValueKind
.RefAssignable:
3593
private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3601
Debug.Assert(kind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
3618
int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
3629
private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3636
if (kind ==
BindValueKind
.AddressOf)
3654
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)
260
internal BoundExpression BindValue(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
268
return BindToNaturalType(BindValue(node, diagnostics,
BindValueKind
.RValue), diagnostics, reportNoTargetType);
285
return CheckValue(valueOrType,
BindValueKind
.RValue, diagnostics);
467
internal BoundExpression BindValueAllowArgList(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
512
BindValueKind
valueKind;
545
valueBeforeConversion = defaultValueBinder.BindValue(defaultValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
563
var initializer = initializerBinder.BindValue(equalsValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
893
node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(BindToTypeForErrorRecovery(BindValue(node.Expression, BindingDiagnosticBag.Discarded,
BindValueKind
.RefersToLocation))),
1045
ImmutableArray.Create(BindValue(arguments[0].Expression, diagnostics,
BindValueKind
.RValue)) :
1075
BoundExpression boundArgument = BindValue(argumentSyntax.Expression, diagnostics,
BindValueKind
.RValue);
1256
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
1279
BoundExpression argument = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RefOrOut);
1304
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2659
BoundExpression operand = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2684
BoundExpression boundOperand = BindValue(node.Operand, diagnostics,
BindValueKind
.RValue);
2792
BoundExpression boundOperand = BindValue(operand, diagnostics,
BindValueKind
.RValue);
3195
var
requiredValueKind = origRefKind == RefKind.In ?
BindValueKind
.ReadonlyRef :
BindValueKind
.RefOrOut;
3476
BindValueKind
valueKind =
3478
BindValueKind
.RValue :
3480
BindValueKind
.ReadonlyRef :
3481
BindValueKind
.RefOrOut;
4010
if (!this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4022
if (this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4175
var size = BindValue(dimension, diagnostics,
BindValueKind
.RValue);
4291
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4308
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4637
count = BindValue(countSyntax, diagnostics,
BindValueKind
.RValue);
5352
ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics,
BindValueKind
.RValue),
5732
BindValueKind
rhsValueKind,
5744
Debug.Assert(rhsValueKind ==
BindValueKind
.RValue);
5832
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) :
BindValueKind
.RValue;
5880
var boundExpression = BindValue(memberInitializer, diagnostics,
BindValueKind
.RValue);
5895
BindValueKind
valueKind = isRhsNestedInitializer ?
BindValueKind
.RValue : (isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable);
5908
leftSyntax, implicitReceiver,
BindValueKind
.Assignable, false, diagnostics);
5915
BindValueKind
valueKind,
6157
BindValueKind
valueKind,
6191
return ToBadExpression(boundMember, (valueKind ==
BindValueKind
.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable);
6446
var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType,
BindValueKind
.RValue, implicitReceiver.Syntax, diagnostics);
6475
exprBuilder.Add(BindValue(childElementInitializer, diagnostics,
BindValueKind
.RValue));
7793
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
7903
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
9061
hasError = !CheckValueKind(node, receiver,
BindValueKind
.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics);
9493
receiver = CheckValue(receiver,
BindValueKind
.RValue, diagnostics);
9623
if (CheckValueKind(node, expr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
9635
if (!CheckValueKind(node, expr,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
10661
lengthOrCountAccess = CheckValue(lengthOrCountAccess,
BindValueKind
.RValue, diagnostics);
11496
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);
2419
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))
927
BindValueKind
bindValueKind = GetBinaryAssignmentKind(syntaxNode.Kind());
929
BoundExpression right = BindValue(syntaxNode.Right, diagnostics,
BindValueKind
.RValue);
3259
BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics,
BindValueKind
.IncrementDecrement), diagnostics);
3454
!CheckValueKind(node, operand,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4110
BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics,
BindValueKind
.AddressOf), diagnostics);
4197
bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver,
BindValueKind
.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded);
4627
private static
BindValueKind
GetBinaryAssignmentKind(SyntaxKind kind)
4632
return
BindValueKind
.Assignable;
4645
return
BindValueKind
.CompoundAssignment;
4647
return
BindValueKind
.RValue;
4651
private static
BindValueKind
GetUnaryAssignmentKind(SyntaxKind kind)
4659
return
BindValueKind
.IncrementDecrement;
4664
return
BindValueKind
.RValue;
5585
var leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.RValue);
5587
var rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
5774
BoundExpression leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.CompoundAssignment);
5776
BoundExpression rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
5901
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue);
5902
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue);
5942
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
5943
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),