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:
1222
bool checkArrayAccessValueKind(SyntaxNode node,
BindValueKind
valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
1244
private static void ReportThisLvalueError(SyntaxNode node,
BindValueKind
valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
1299
private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1301
if (valueKind ==
BindValueKind
.AddressOf)
1314
private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1404
private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1406
Debug.Assert(!RequiresAssignableVariable(
BindValueKind
.AddressOf));
1467
static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1471
Debug.Assert(valueKind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
1477
if (valueKind ==
BindValueKind
.RefReturn)
1496
if (valueKind ==
BindValueKind
.RefReturn)
1612
private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1657
Debug.Assert(valueKind ==
BindValueKind
.RefAssignable);
1674
return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt,
BindValueKind
.Assignable, diagnostics);
1760
private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1839
private bool CheckEventValueKind(BoundEventAccess boundEvent,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1850
if (valueKind ==
BindValueKind
.CompoundAssignment)
1876
if (!CheckIsValidReceiverForVariable(eventSyntax, receiver,
BindValueKind
.Assignable, diagnostics))
1883
if (eventSymbol.IsWindowsRuntimeEvent && valueKind !=
BindValueKind
.Assignable)
1887
if (valueKind ==
BindValueKind
.RefOrOut)
1908
private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver,
BindValueKind
kind, BindingDiagnosticBag diagnostics)
1938
BindValueKind
valueKind,
1979
private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
2006
else if (valueKind ==
BindValueKind
.RefOrOut)
2077
var
setValueKind = setMethod.IsEffectivelyReadOnly ?
BindValueKind
.RValue :
BindValueKind
.Assignable;
3450
private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3453
Debug.Assert(kind !=
BindValueKind
.RValue);
3488
private static ErrorCode GetThisLvalueError(
BindValueKind
kind, bool isValueType, bool isPrimaryConstructorParameter)
3492
case
BindValueKind
.CompoundAssignment:
3493
case
BindValueKind
.Assignable:
3496
case
BindValueKind
.RefOrOut:
3499
case
BindValueKind
.AddressOf:
3502
case
BindValueKind
.IncrementDecrement:
3505
case
BindValueKind
.RefReturn:
3506
case
BindValueKind
.ReadonlyRef:
3509
case
BindValueKind
.RefAssignable:
3521
private static ErrorCode GetRangeLvalueError(
BindValueKind
kind)
3525
case
BindValueKind
.Assignable:
3526
case
BindValueKind
.CompoundAssignment:
3527
case
BindValueKind
.IncrementDecrement:
3530
case
BindValueKind
.AddressOf:
3533
case
BindValueKind
.RefReturn:
3534
case
BindValueKind
.ReadonlyRef:
3537
case
BindValueKind
.RefAssignable:
3549
private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(
BindValueKind
valueKind)
3560
private static ErrorCode GetStandardLvalueError(
BindValueKind
kind)
3564
case
BindValueKind
.CompoundAssignment:
3565
case
BindValueKind
.Assignable:
3568
case
BindValueKind
.AddressOf:
3571
case
BindValueKind
.IncrementDecrement:
3574
case
BindValueKind
.FixedReceiver:
3577
case
BindValueKind
.RefReturn:
3578
case
BindValueKind
.ReadonlyRef:
3581
case
BindValueKind
.RefAssignable:
3609
private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3617
Debug.Assert(kind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
3634
int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
3645
private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3652
if (kind ==
BindValueKind
.AddressOf)
3670
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);
5356
ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics,
BindValueKind
.RValue),
5736
BindValueKind
rhsValueKind,
5748
Debug.Assert(rhsValueKind ==
BindValueKind
.RValue);
5836
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) :
BindValueKind
.RValue;
5884
var boundExpression = BindValue(memberInitializer, diagnostics,
BindValueKind
.RValue);
5899
BindValueKind
valueKind = isRhsNestedInitializer ?
BindValueKind
.RValue : (isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable);
5912
leftSyntax, implicitReceiver,
BindValueKind
.Assignable, false, diagnostics);
5919
BindValueKind
valueKind,
6161
BindValueKind
valueKind,
6195
return ToBadExpression(boundMember, (valueKind ==
BindValueKind
.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable);
6450
var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType,
BindValueKind
.RValue, implicitReceiver.Syntax, diagnostics);
6479
exprBuilder.Add(BindValue(childElementInitializer, diagnostics,
BindValueKind
.RValue));
7797
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
7907
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
9065
hasError = !CheckValueKind(node, receiver,
BindValueKind
.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics);
9498
receiver = CheckValue(receiver,
BindValueKind
.RValue, diagnostics);
9628
if (CheckValueKind(node, expr,
BindValueKind
.RefersToLocation |
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
9640
if (!CheckValueKind(node, expr,
BindValueKind
.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
10666
lengthOrCountAccess = CheckValue(lengthOrCountAccess,
BindValueKind
.RValue, diagnostics);
11501
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;
1979
return CheckValue(boundValue,
BindValueKind
.RValue, diagnostics);
2421
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),