224 references to BindValueKind
Microsoft.CodeAnalysis.CSharp (222)
Binder\Binder.ValueChecks.cs (97)
182
private const
BindValueKind
ValueKindSignificantBitsMask = unchecked((
BindValueKind
)~((1 << ValueKindInsignificantBits) - 1));
279
private static bool RequiresRValueOnly(
BindValueKind
kind)
281
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.RValue;
284
private static bool RequiresAssignmentOnly(
BindValueKind
kind)
286
return (kind & ValueKindSignificantBitsMask) ==
BindValueKind
.Assignable;
289
private static bool RequiresVariable(
BindValueKind
kind)
294
private static bool RequiresReferenceToLocation(
BindValueKind
kind)
296
return (kind &
BindValueKind
.RefersToLocation) != 0;
299
private static bool RequiresAssignableVariable(
BindValueKind
kind)
301
return (kind &
BindValueKind
.Assignable) != 0;
304
private static bool RequiresRefAssignableVariable(
BindValueKind
kind)
306
return (kind &
BindValueKind
.RefAssignable) != 0;
309
private static bool RequiresRefOrOut(
BindValueKind
kind)
311
return (kind &
BindValueKind
.RefOrOut) ==
BindValueKind
.RefOrOut;
316
private BoundIndexerAccess BindIndexerDefaultArguments(BoundIndexerAccess indexerAccess,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
318
var useSetAccessor = valueKind ==
BindValueKind
.Assignable && !indexerAccess.Indexer.ReturnsByRef;
383
private BoundExpression CheckValue(BoundExpression expr,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
396
Debug.Assert(expr.Syntax.Kind() != SyntaxKind.Argument || valueKind ==
BindValueKind
.RefOrOut);
401
Debug.Assert(valueKind ==
BindValueKind
.RefOrOut);
405
Debug.Assert(valueKind is (
BindValueKind
.Assignable or
BindValueKind
.RefOrOut or
BindValueKind
.RefAssignable) || diagnostics.DiagnosticBag is null || diagnostics.HasAnyResolvedErrors());
413
if (valueKind ==
BindValueKind
.RValue)
420
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
428
if ((valueKind &
BindValueKind
.RefersToLocation) ==
BindValueKind
.RefersToLocation)
442
if (expr.Kind == BoundKind.MethodGroup && valueKind !=
BindValueKind
.RValueOrMethodGroup)
490
expr.HasAnyErrors && valueKind ==
BindValueKind
.RValueOrMethodGroup)
495
var resultKind = (valueKind ==
BindValueKind
.RValue || valueKind ==
BindValueKind
.RValueOrMethodGroup) ?
527
internal bool CheckValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
585
case BoundKind.MethodGroup when valueKind ==
BindValueKind
.AddressOf:
768
bool checkArrayAccessValueKind(SyntaxNode node,
BindValueKind
valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
790
private static void ReportThisLvalueError(SyntaxNode node,
BindValueKind
valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
818
private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
820
if (valueKind ==
BindValueKind
.AddressOf && this.IsInAsyncMethod())
911
private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
913
Debug.Assert(!RequiresAssignableVariable(
BindValueKind
.AddressOf));
914
if (valueKind ==
BindValueKind
.AddressOf && this.IsInAsyncMethod())
976
static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
980
Debug.Assert(valueKind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
986
if (valueKind ==
BindValueKind
.RefReturn)
1005
if (valueKind ==
BindValueKind
.RefReturn)
1122
private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1168
Debug.Assert(valueKind ==
BindValueKind
.RefAssignable);
1177
return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt,
BindValueKind
.Assignable, diagnostics);
1247
private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1326
private bool CheckEventValueKind(BoundEventAccess boundEvent,
BindValueKind
valueKind, BindingDiagnosticBag diagnostics)
1337
if (valueKind ==
BindValueKind
.CompoundAssignment)
1363
if (!CheckIsValidReceiverForVariable(eventSyntax, receiver,
BindValueKind
.Assignable, diagnostics))
1370
if (eventSymbol.IsWindowsRuntimeEvent && valueKind !=
BindValueKind
.Assignable)
1374
if (valueKind ==
BindValueKind
.RefOrOut)
1395
private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver,
BindValueKind
kind, BindingDiagnosticBag diagnostics)
1425
BindValueKind
valueKind,
1466
private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr,
BindValueKind
valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1493
else if (valueKind ==
BindValueKind
.RefOrOut)
1564
var
setValueKind = setMethod.IsEffectivelyReadOnly ?
BindValueKind
.RValue :
BindValueKind
.Assignable;
2659
private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
2662
Debug.Assert(kind !=
BindValueKind
.RValue);
2697
private static ErrorCode GetThisLvalueError(
BindValueKind
kind, bool isValueType, bool isPrimaryConstructorParameter)
2701
case
BindValueKind
.CompoundAssignment:
2702
case
BindValueKind
.Assignable:
2705
case
BindValueKind
.RefOrOut:
2708
case
BindValueKind
.AddressOf:
2711
case
BindValueKind
.IncrementDecrement:
2714
case
BindValueKind
.RefReturn:
2715
case
BindValueKind
.ReadonlyRef:
2718
case
BindValueKind
.RefAssignable:
2730
private static ErrorCode GetRangeLvalueError(
BindValueKind
kind)
2734
case
BindValueKind
.Assignable:
2735
case
BindValueKind
.CompoundAssignment:
2736
case
BindValueKind
.IncrementDecrement:
2739
case
BindValueKind
.AddressOf:
2742
case
BindValueKind
.RefReturn:
2743
case
BindValueKind
.ReadonlyRef:
2746
case
BindValueKind
.RefAssignable:
2758
private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(
BindValueKind
valueKind)
2769
private static ErrorCode GetStandardLvalueError(
BindValueKind
kind)
2773
case
BindValueKind
.CompoundAssignment:
2774
case
BindValueKind
.Assignable:
2777
case
BindValueKind
.AddressOf:
2780
case
BindValueKind
.IncrementDecrement:
2783
case
BindValueKind
.FixedReceiver:
2786
case
BindValueKind
.RefReturn:
2787
case
BindValueKind
.ReadonlyRef:
2790
case
BindValueKind
.RefAssignable:
2818
private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
2826
Debug.Assert(kind !=
BindValueKind
.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp
2843
int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
2854
private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node,
BindValueKind
kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
2861
if (kind ==
BindValueKind
.AddressOf)
2879
int index = (checkingReceiver ? 3 : 0) + (kind ==
BindValueKind
.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
Binder\Binder_Attributes.cs (1)
541
BoundExpression namedArgumentValue = this.BindValue(namedArgument.Expression, diagnostics,
BindValueKind
.RValue);
Binder\Binder_Deconstruct.cs (3)
99
BoundExpression boundRight = rightPlaceholder ?? BindValue(right, deconstructionDiagnostics,
BindValueKind
.RValue);
658
memberAccess = CheckValue(memberAccess,
BindValueKind
.RValueOrMethodGroup, diagnostics);
791
var checkedVariable = CheckValue(boundVariable,
BindValueKind
.Assignable, diagnostics);
Binder\Binder_Expressions.cs (45)
233
internal BoundExpression BindValue(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
241
return BindToNaturalType(BindValue(node, diagnostics,
BindValueKind
.RValue), diagnostics, reportNoTargetType);
258
return CheckValue(valueOrType,
BindValueKind
.RValue, diagnostics);
418
internal BoundExpression BindValueAllowArgList(ExpressionSyntax node, BindingDiagnosticBag diagnostics,
BindValueKind
valueKind)
456
BindValueKind
valueKind;
487
valueBeforeConversion = defaultValueBinder.BindValue(defaultValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
505
var initializer = initializerBinder.BindValue(equalsValueSyntax.Value, diagnostics,
BindValueKind
.RValue);
970
ImmutableArray.Create(BindValue(arguments[0].Expression, diagnostics,
BindValueKind
.RValue)) :
1000
BoundExpression boundArgument = BindValue(argumentSyntax.Expression, diagnostics,
BindValueKind
.RValue);
1181
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
1204
BoundExpression argument = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RefOrOut);
1229
BoundExpression argument = BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2326
BoundExpression operand = this.BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
2351
BoundExpression boundOperand = BindValue(node.Operand, diagnostics,
BindValueKind
.RValue);
2459
BoundExpression boundOperand = BindValue(operand, diagnostics,
BindValueKind
.RValue);
2856
var
requiredValueKind = origRefKind == RefKind.In ?
BindValueKind
.ReadonlyRef :
BindValueKind
.RefOrOut;
3135
BindValueKind
valueKind =
3137
BindValueKind
.RValue :
3139
BindValueKind
.ReadonlyRef :
3140
BindValueKind
.RefOrOut;
3383
var size = BindValue(dimension, diagnostics,
BindValueKind
.RValue);
3499
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
3516
var boundExpression = BindValue(expression, diagnostics,
BindValueKind
.RValue);
3845
count = BindValue(countSyntax, diagnostics,
BindValueKind
.RValue);
4791
BindValueKind
rhsValueKind,
4803
Debug.Assert(rhsValueKind ==
BindValueKind
.RValue);
4889
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) :
BindValueKind
.RValue;
4904
var boundExpression = BindValue(memberInitializer, diagnostics,
BindValueKind
.RValue);
4924
BindValueKind
valueKind = isRhsNestedInitializer ?
BindValueKind
.RValue : (isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable);
5145
BindValueKind
valueKind,
5178
return ToBadExpression(boundMember, (valueKind ==
BindValueKind
.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable);
5420
var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType,
BindValueKind
.RValue, implicitReceiver.Syntax, diagnostics);
5449
exprBuilder.Add(BindValue(childElementInitializer, diagnostics,
BindValueKind
.RValue));
6555
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
6665
boundLeft = CheckValue(boundLeft,
BindValueKind
.RValue, diagnostics);
7491
hasError = !CheckValueKind(node, receiver,
BindValueKind
.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics);
7887
receiver = CheckValue(receiver,
BindValueKind
.RValue, diagnostics);
8785
lengthOrCountAccess = CheckValue(lengthOrCountAccess,
BindValueKind
.RValue, diagnostics);
9341
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 (4)
123
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
181
boundExpression = CheckValue(boundExpression,
BindValueKind
.RValueOrMethodGroup, diagnostics);
1058
receiverArgument = CheckValue(receiverArgument,
BindValueKind
.RefOrOut, diagnostics);
1538
return CheckValue(typeOrValue.Data.ValueExpression,
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);
2233
BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics,
BindValueKind
.IncrementDecrement), diagnostics);
2481
BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics,
BindValueKind
.AddressOf), diagnostics);
2568
bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver,
BindValueKind
.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded);
2981
private static
BindValueKind
GetBinaryAssignmentKind(SyntaxKind kind)
2986
return
BindValueKind
.Assignable;
2999
return
BindValueKind
.CompoundAssignment;
3001
return
BindValueKind
.RValue;
3005
private static
BindValueKind
GetUnaryAssignmentKind(SyntaxKind kind)
3013
return
BindValueKind
.IncrementDecrement;
3018
return
BindValueKind
.RValue;
3905
var leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.RValue);
3907
var rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
4094
BoundExpression leftOperand = BindValue(node.Left, diagnostics,
BindValueKind
.CompoundAssignment);
4096
BoundExpression rightOperand = BindValue(node.Right, diagnostics,
BindValueKind
.RValue);
4223
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue);
4224
BoundExpression falseExpr = BindValue(whenFalse, diagnostics,
BindValueKind
.RValue);
4269
BoundExpression trueExpr = BindValue(whenTrue, diagnostics,
BindValueKind
.RValue |
BindValueKind
.RefersToLocation);
4270
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);
1579
boundMember = CheckValue(boundMember,
BindValueKind
.RValue, diagnostics);
1592
if (!hasErrors && !CheckValueKind(node: memberName.Parent, expr: boundMember, valueKind:
BindValueKind
.RValue,
Binder\Binder_Query.cs (3)
836
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
846
BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics,
BindValueKind
.RValue);
1000
var checkedUltimateReceiver = CheckValue(ultimateReceiver,
BindValueKind
.RValue, diagnostics);
Binder\Binder_Statements.cs (28)
241
: BindValue(node.Expression, diagnostics,
BindValueKind
.RValue);
392
var boundExpr = BindValue(exprSyntax, diagnostics,
BindValueKind
.RValue);
867
BindValueKind
valueKind;
874
protected BoundExpression BindInferredVariableInitializer(BindingDiagnosticBag diagnostics, ExpressionSyntax initializer,
BindValueKind
valueKind, CSharpSyntaxNode errorSyntax)
915
out
BindValueKind
valueKind,
922
valueKind =
BindValueKind
.RValue;
932
?
BindValueKind
.ReadonlyRef
933
:
BindValueKind
.RefOrOut;
1008
BindValueKind
valueKind;
1426
var
lhsKind = isRef ?
BindValueKind
.RefAssignable :
BindValueKind
.Assignable;
1434
var
rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(op1) :
BindValueKind
.RValue;
1447
private static
BindValueKind
GetRequiredRHSValueKindForRefAssignment(BoundExpression boundLeft)
1449
var
rhsKind =
BindValueKind
.RefersToLocation;
1459
rhsKind |=
BindValueKind
.Assignable;
1814
BindValueKind
valueKind,
2538
var expr = BindValue(node, diagnostics,
BindValueKind
.RValue);
2893
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3474
BindValueKind
requiredValueKind = bodyBinder.GetRequiredReturnValueKind(refKind);
3490
BindValueKind
requiredValueKind = GetRequiredReturnValueKind(refKind);
3504
private
BindValueKind
GetRequiredReturnValueKind(RefKind refKind)
3506
BindValueKind
requiredValueKind =
BindValueKind
.RValue;
3511
BindValueKind
.RefReturn :
3512
BindValueKind
.ReadonlyRef;
Binder\ForEachLoopBinder.cs (6)
318
BindValueKind
requiredCurrentKind;
322
requiredCurrentKind =
BindValueKind
.RValue;
325
requiredCurrentKind =
BindValueKind
.Assignable |
BindValueKind
.RefersToLocation;
328
requiredCurrentKind =
BindValueKind
.RefersToLocation;
609
BoundExpression collectionExpr = this.GetBinder(collectionSyntax).BindValue(collectionSyntax, diagnostics,
BindValueKind
.RValue);
Binder\LockOrUsingBinder.cs (1)
84
BoundExpression boundExpression = originalBinder.BindValue(TargetExpressionSyntax, expressionDiagnostics, Binder.
BindValueKind
.RValueOrMethodGroup);
Binder\SwitchBinder.cs (1)
493
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),
Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.ExpressionCompiler (2)
CompilationContext.cs (2)
764
var result = binder.CheckValueKind(expression.Syntax, expression, Binder.
BindValueKind
.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded);
770
var expression = binder.BindValue(syntax, new BindingDiagnosticBag(diagnostics), Binder.
BindValueKind
.RValue);