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());
826
if (valueKind ==
BindValueKind
.RValue)
833
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
841
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
855
if (expr.Kind == BoundKind.MethodGroup && valueKind !=
BindValueKind
.RValueOrMethodGroup)
905
expr.HasAnyErrors && valueKind ==
BindValueKind
.RValueOrMethodGroup)
910
var resultKind = (valueKind ==
BindValueKind
.RValue || valueKind ==
BindValueKind
.RValueOrMethodGroup) ?
942
internal bool CheckValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1000
case BoundKind.MethodGroup when valueKind ==
BindValueKind
.AddressOf:
1223
bool checkArrayAccessValueKind(SyntaxNode node,
BindValueKind
valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
1245
private static void ReportThisLvalueError(SyntaxNode node,
BindValueKind
valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
1300
private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1302
if (valueKind ==
BindValueKind
.AddressOf)
1315
private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1405
private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1407
Debug.Assert(!RequiresAssignableVariable(
BindValueKind
.AddressOf));
1468
static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1472
Debug.Assert(valueKind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
1478
if (valueKind ==
BindValueKind
.RefReturn)
1497
if (valueKind ==
BindValueKind
.RefReturn)
1613
private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1658
Debug.Assert(valueKind ==
BindValueKind
.RefAssignable);
1675
return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt,
BindValueKind
.Assignable, diagnostics);
1761
private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1840
private bool CheckEventValueKind(BoundEventAccess boundEvent,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1851
if (valueKind ==
BindValueKind
.CompoundAssignment)
1877
if (!CheckIsValidReceiverForVariable(eventSyntax, receiver,
BindValueKind
.Assignable, diagnostics))
1884
if (eventSymbol.IsWindowsRuntimeEvent && valueKind !=
BindValueKind
.Assignable)
1888
if (valueKind ==
BindValueKind
.RefOrOut)
1909
private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver,
BindValueKind
kind, BindingDiagnosticBag diagnostics)
1939
BindValueKind
valueKind,
1980
private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
2007
else if (valueKind ==
BindValueKind
.RefOrOut)
2078
var
setValueKind = setMethod.IsEffectivelyReadOnly ?
BindValueKind
.RValue :
BindValueKind
.Assignable;
3451
private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3454
Debug.Assert(kind !=
BindValueKind
.RValue);
3489
private static ErrorCode GetThisLvalueError(
BindValueKind
kind, bool isValueType, bool isPrimaryConstructorParameter)
3493
case
BindValueKind
.CompoundAssignment:
3494
case
BindValueKind
.Assignable:
3497
case
BindValueKind
.RefOrOut:
3500
case
BindValueKind
.AddressOf:
3503
case
BindValueKind
.IncrementDecrement:
3506
case
BindValueKind
.RefReturn:
3507
case
BindValueKind
.ReadonlyRef:
3510
case
BindValueKind
.RefAssignable:
3522
private static ErrorCode GetRangeLvalueError(
BindValueKind
kind)
3526
case
BindValueKind
.Assignable:
3527
case
BindValueKind
.CompoundAssignment:
3528
case
BindValueKind
.IncrementDecrement:
3531
case
BindValueKind
.AddressOf:
3534
case
BindValueKind
.RefReturn:
3535
case
BindValueKind
.ReadonlyRef:
3538
case
BindValueKind
.RefAssignable:
3550
private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(
BindValueKind
valueKind)
3561
private static ErrorCode GetStandardLvalueError(
BindValueKind
kind)
3565
case
BindValueKind
.CompoundAssignment:
3566
case
BindValueKind
.Assignable:
3569
case
BindValueKind
.AddressOf:
3572
case
BindValueKind
.IncrementDecrement:
3575
case
BindValueKind
.FixedReceiver:
3578
case
BindValueKind
.RefReturn:
3579
case
BindValueKind
.ReadonlyRef:
3582
case
BindValueKind
.RefAssignable:
3610
private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3618
Debug.Assert(kind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
3635
int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
3646
private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3653
if (kind ==
BindValueKind
.AddressOf)
3671
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)
474
if (CheckValueKind(syntax, source,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
489
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);
660
memberAccess = CheckValue(memberAccess,
BindValueKind
.RValueOrMethodGroup, diagnostics);
794
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;
4014
if (!this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4026
if (this.CheckValueKind(argument.Syntax, argument,
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4179
var size = BindValue(dimension, diagnostics,
BindValueKind
.RValue);
4295
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4312
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
4641
count = BindValue(countSyntax, diagnostics,
BindValueKind
.RValue);
5371
ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics,
BindValueKind
.RValue),
5810
BindValueKind
rhsValueKind,
5822
Debug.Assert(rhsValueKind ==
BindValueKind
.RValue);
5910
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) :
BindValueKind
.RValue;
5958
var boundExpression = BindValue(memberInitializer, diagnostics,
BindValueKind
.RValue);
5973
BindValueKind
valueKind = isRhsNestedInitializer ?
BindValueKind
.RValue : (isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable);
5986
leftSyntax, implicitReceiver,
BindValueKind
.Assignable, false, diagnostics);
5993
BindValueKind
valueKind,
6235
BindValueKind
valueKind,
6269
return ToBadExpression(boundMember, (valueKind ==
BindValueKind
.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable);
6524
var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType,
BindValueKind
.RValue, implicitReceiver.Syntax, diagnostics);
6553
exprBuilder.Add(BindValue(childElementInitializer, diagnostics,
BindValueKind
.RValue));
7905
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
8015
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
9177
hasError = !CheckValueKind(node, receiver,
BindValueKind
.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics);
9610
receiver = CheckValue(receiver,
BindValueKind
.RValue, diagnostics);
9740
if (CheckValueKind(node, expr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
9752
if (!CheckValueKind(node, expr,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
10778
lengthOrCountAccess = CheckValue(lengthOrCountAccess,
BindValueKind
.RValue, diagnostics);
11613
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;
1986
return CheckValue(boundValue,
BindValueKind
.RValue, diagnostics);
2428
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);
3260
BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics,
BindValueKind
.IncrementDecrement), diagnostics);
3455
!CheckValueKind(node, operand,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
4111
BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics,
BindValueKind
.AddressOf), diagnostics);
4198
bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver,
BindValueKind
.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded);
4628
private static
BindValueKind
GetBinaryAssignmentKind(SyntaxKind kind)
4633
return
BindValueKind
.Assignable;
4646
return
BindValueKind
.CompoundAssignment;
4648
return
BindValueKind
.RValue;
4652
private static
BindValueKind
GetUnaryAssignmentKind(SyntaxKind kind)
4660
return
BindValueKind
.IncrementDecrement;
4665
return
BindValueKind
.RValue;
5586
var leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.RValue);
5588
var rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
5775
BoundExpression leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.CompoundAssignment);
5777
BoundExpression rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
5902
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue);
5903
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue);
5943
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
5944
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)
842
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
852
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
990
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;
1423
var
lhsKind = isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable;
1431
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(op1) :
BindValueKind
.RValue;
1444
private static
BindValueKind
GetRequiredRHSValueKindForRefAssignment(BoundExpression boundLeft)
1446
var
rhsKind =
BindValueKind
.RefersToLocation;
1456
rhsKind |=
BindValueKind
.Assignable;
1868
BindValueKind
valueKind,
2685
var expr = BindValue(node, diagnostics,
BindValueKind
.RValue);
3043
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3626
BindValueKind
requiredValueKind = bodyBinder.GetRequiredReturnValueKind(refKind);
3642
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3656
private
BindValueKind
GetRequiredReturnValueKind(RefKind refKind)
3658
BindValueKind
requiredValueKind =
BindValueKind
.RValue;
3663
BindValueKind
.RefReturn :
3664
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);
841
if (CheckValueKind(collectionExpr.Syntax, collectionExpr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
849
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)
512
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),