245 references to BindValueKind
Microsoft.CodeAnalysis.CSharp (245)
Binder\Binder.ValueChecks.cs (103)
250private const BindValueKind ValueKindSignificantBitsMask = unchecked((BindValueKind)~((1 << ValueKindInsignificantBits) - 1)); 347private static bool RequiresRValueOnly(BindValueKind kind) 349return (kind & ValueKindSignificantBitsMask) == BindValueKind.RValue; 352private static bool RequiresAssignmentOnly(BindValueKind kind) 354return (kind & ValueKindSignificantBitsMask) == BindValueKind.Assignable; 357private static bool RequiresVariable(BindValueKind kind) 362private static bool RequiresReferenceToLocation(BindValueKind kind) 364return (kind & BindValueKind.RefersToLocation) != 0; 367private static bool RequiresAssignableVariable(BindValueKind kind) 369return (kind & BindValueKind.Assignable) != 0; 372private static bool RequiresRefAssignableVariable(BindValueKind kind) 374return (kind & BindValueKind.RefAssignable) != 0; 377private static bool RequiresRefOrOut(BindValueKind kind) 379return (kind & BindValueKind.RefOrOut) == BindValueKind.RefOrOut; 384private static AccessorKind GetIndexerAccessorKind(BoundIndexerAccess indexerAccess, BindValueKind valueKind) 391var coreValueKind = valueKind & ValueKindSignificantBitsMask; 394BindValueKind.CompoundAssignment => AccessorKind.Both, 395BindValueKind.Assignable => AccessorKind.Set, 400private BoundIndexerAccess BindIndexerDefaultArgumentsAndParamsCollection(BoundIndexerAccess indexerAccess, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 402var coreValueKind = valueKind & ValueKindSignificantBitsMask; 404var useSetAccessor = coreValueKind == BindValueKind.Assignable && indexerAccess.Indexer.RefKind != RefKind.Ref; 499private BoundExpression CheckValue(BoundExpression expr, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 514Debug.Assert(expr.Syntax.Kind() != SyntaxKind.Argument || valueKind == BindValueKind.RefOrOut); 519Debug.Assert(valueKind == BindValueKind.RefOrOut); 523Debug.Assert(valueKind is (BindValueKind.Assignable or BindValueKind.RefOrOut or BindValueKind.RefAssignable) || diagnostics.DiagnosticBag is null || diagnostics.HasAnyResolvedErrors()); 549if (valueKind == BindValueKind.RValue) 556if (valueKind == BindValueKind.RValue) 563if ((valueKind & BindValueKind.RefersToLocation) == BindValueKind.RefersToLocation) 571if ((valueKind & BindValueKind.RefersToLocation) == BindValueKind.RefersToLocation) 585if (expr.Kind == BoundKind.MethodGroup && valueKind != BindValueKind.RValueOrMethodGroup) 633expr.HasAnyErrors && valueKind == BindValueKind.RValueOrMethodGroup) 638var resultKind = (valueKind == BindValueKind.RValue || valueKind == BindValueKind.RValueOrMethodGroup) ? 670internal bool CheckValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 728case BoundKind.MethodGroup when valueKind == BindValueKind.AddressOf: 950bool checkArrayAccessValueKind(SyntaxNode node, BindValueKind valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics) 972private static void ReportThisLvalueError(SyntaxNode node, BindValueKind valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics) 1000private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 1002if (valueKind == BindValueKind.AddressOf) 1015private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1105private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1107Debug.Assert(!RequiresAssignableVariable(BindValueKind.AddressOf)); 1168static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1172Debug.Assert(valueKind != BindValueKind.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp 1178if (valueKind == BindValueKind.RefReturn) 1197if (valueKind == BindValueKind.RefReturn) 1313private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1359Debug.Assert(valueKind == BindValueKind.RefAssignable); 1368return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt, BindValueKind.Assignable, diagnostics); 1438private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 1517private bool CheckEventValueKind(BoundEventAccess boundEvent, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 1528if (valueKind == BindValueKind.CompoundAssignment) 1554if (!CheckIsValidReceiverForVariable(eventSyntax, receiver, BindValueKind.Assignable, diagnostics)) 1561if (eventSymbol.IsWindowsRuntimeEvent && valueKind != BindValueKind.Assignable) 1565if (valueKind == BindValueKind.RefOrOut) 1586private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver, BindValueKind kind, BindingDiagnosticBag diagnostics) 1616BindValueKind valueKind, 1657private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1684else if (valueKind == BindValueKind.RefOrOut) 1755var setValueKind = setMethod.IsEffectivelyReadOnly ? BindValueKind.RValue : BindValueKind.Assignable; 3050private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 3053Debug.Assert(kind != BindValueKind.RValue); 3088private static ErrorCode GetThisLvalueError(BindValueKind kind, bool isValueType, bool isPrimaryConstructorParameter) 3092case BindValueKind.CompoundAssignment: 3093case BindValueKind.Assignable: 3096case BindValueKind.RefOrOut: 3099case BindValueKind.AddressOf: 3102case BindValueKind.IncrementDecrement: 3105case BindValueKind.RefReturn: 3106case BindValueKind.ReadonlyRef: 3109case BindValueKind.RefAssignable: 3121private static ErrorCode GetRangeLvalueError(BindValueKind kind) 3125case BindValueKind.Assignable: 3126case BindValueKind.CompoundAssignment: 3127case BindValueKind.IncrementDecrement: 3130case BindValueKind.AddressOf: 3133case BindValueKind.RefReturn: 3134case BindValueKind.ReadonlyRef: 3137case BindValueKind.RefAssignable: 3149private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(BindValueKind valueKind) 3160private static ErrorCode GetStandardLvalueError(BindValueKind kind) 3164case BindValueKind.CompoundAssignment: 3165case BindValueKind.Assignable: 3168case BindValueKind.AddressOf: 3171case BindValueKind.IncrementDecrement: 3174case BindValueKind.FixedReceiver: 3177case BindValueKind.RefReturn: 3178case BindValueKind.ReadonlyRef: 3181case BindValueKind.RefAssignable: 3209private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 3217Debug.Assert(kind != BindValueKind.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp 3234int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind == BindValueKind.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2)); 3245private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 3252if (kind == BindValueKind.AddressOf) 3270int index = (checkingReceiver ? 3 : 0) + (kind == BindValueKind.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
Binder\Binder_Attributes.cs (1)
561BoundExpression namedArgumentValue = this.BindValue(namedArgument.Expression, diagnostics, BindValueKind.RValue);
Binder\Binder_Conversions.cs (3)
459if (CheckValueKind(syntax, source, BindValueKind.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 474if (CheckValueKind(syntax, source, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
Binder\Binder_Deconstruct.cs (3)
99BoundExpression boundRight = rightPlaceholder ?? BindValue(right, deconstructionDiagnostics, BindValueKind.RValue); 658memberAccess = CheckValue(memberAccess, BindValueKind.RValueOrMethodGroup, diagnostics); 791var checkedVariable = CheckValue(boundVariable, BindValueKind.Assignable, diagnostics);
Binder\Binder_Expressions.cs (52)
236internal BoundExpression BindValue(ExpressionSyntax node, BindingDiagnosticBag diagnostics, BindValueKind valueKind) 244return BindToNaturalType(BindValue(node, diagnostics, BindValueKind.RValue), diagnostics, reportNoTargetType); 261return CheckValue(valueOrType, BindValueKind.RValue, diagnostics); 430internal BoundExpression BindValueAllowArgList(ExpressionSyntax node, BindingDiagnosticBag diagnostics, BindValueKind valueKind) 475BindValueKind valueKind; 506valueBeforeConversion = defaultValueBinder.BindValue(defaultValueSyntax.Value, diagnostics, BindValueKind.RValue); 524var initializer = initializerBinder.BindValue(equalsValueSyntax.Value, diagnostics, BindValueKind.RValue); 852node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(BindToTypeForErrorRecovery(BindValue(node.Expression, BindingDiagnosticBag.Discarded, BindValueKind.RefersToLocation))), 1004ImmutableArray.Create(BindValue(arguments[0].Expression, diagnostics, BindValueKind.RValue)) : 1034BoundExpression boundArgument = BindValue(argumentSyntax.Expression, diagnostics, BindValueKind.RValue); 1215BoundExpression argument = BindValue(node.Expression, diagnostics, BindValueKind.RValue); 1238BoundExpression argument = this.BindValue(node.Expression, diagnostics, BindValueKind.RefOrOut); 1263BoundExpression argument = BindValue(node.Expression, diagnostics, BindValueKind.RValue); 2498BoundExpression operand = this.BindValue(node.Expression, diagnostics, BindValueKind.RValue); 2523BoundExpression boundOperand = BindValue(node.Operand, diagnostics, BindValueKind.RValue); 2631BoundExpression boundOperand = BindValue(operand, diagnostics, BindValueKind.RValue); 3034var requiredValueKind = origRefKind == RefKind.In ? BindValueKind.ReadonlyRef : BindValueKind.RefOrOut; 3313BindValueKind valueKind = 3315BindValueKind.RValue : 3317BindValueKind.ReadonlyRef : 3318BindValueKind.RefOrOut; 3400if (!this.CheckValueKind(argument.Syntax, argument, BindValueKind.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 3412if (this.CheckValueKind(argument.Syntax, argument, BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 3999var size = BindValue(dimension, diagnostics, BindValueKind.RValue); 4115var boundExpression = BindValue(expression, diagnostics, BindValueKind.RValue); 4132var boundExpression = BindValue(expression, diagnostics, BindValueKind.RValue); 4461count = BindValue(countSyntax, diagnostics, BindValueKind.RValue); 5176ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics, BindValueKind.RValue), 5550BindValueKind rhsValueKind, 5562Debug.Assert(rhsValueKind == BindValueKind.RValue); 5648var rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) : BindValueKind.RValue; 5663var boundExpression = BindValue(memberInitializer, diagnostics, BindValueKind.RValue); 5683BindValueKind valueKind = isRhsNestedInitializer ? BindValueKind.RValue : (isRef ? BindValueKind.RefAssignable : BindValueKind.Assignable); 5917BindValueKind valueKind, 5951return ToBadExpression(boundMember, (valueKind == BindValueKind.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable); 6206var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType, BindValueKind.RValue, implicitReceiver.Syntax, diagnostics); 6235exprBuilder.Add(BindValue(childElementInitializer, diagnostics, BindValueKind.RValue)); 7525boundLeft = CheckValue(boundLeft, BindValueKind.RValue, diagnostics); 7635boundLeft = CheckValue(boundLeft, BindValueKind.RValue, diagnostics); 8477hasError = !CheckValueKind(node, receiver, BindValueKind.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics); 8890receiver = CheckValue(receiver, BindValueKind.RValue, diagnostics); 9020if (CheckValueKind(node, expr, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 9032if (!CheckValueKind(node, expr, BindValueKind.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 10055lengthOrCountAccess = CheckValue(lengthOrCountAccess, BindValueKind.RValue, diagnostics); 10755var access = conditionalAccessBinder.BindValue(node.WhenNotNull, diagnostics, BindValueKind.RValue);
Binder\Binder_InterpolatedString.cs (2)
90var value = BindValue(interpolation.Expression, diagnostics, BindValueKind.RValue); 101alignment = GenerateConversionForAssignment(intType, BindValue(interpolation.AlignmentClause.Value, diagnostics, Binder.BindValueKind.RValue), diagnostics);
Binder\Binder_Invocation.cs (8)
125boundExpression = CheckValue(boundExpression, BindValueKind.RValueOrMethodGroup, diagnostics); 245boundExpression = CheckValue(boundExpression, BindValueKind.RValueOrMethodGroup, diagnostics); 1230receiverArgument = CheckValue(receiverArgument, BindValueKind.RefOrOut, diagnostics); 1341var valueKind = method.IsEffectivelyReadOnly 1342? BindValueKind.RefersToLocation 1343: BindValueKind.RefersToLocation | BindValueKind.Assignable; 1912return CheckValue(typeOrValue.Data.ValueExpression, BindValueKind.RValue, diagnostics);
Binder\Binder_Operators.cs (24)
27BoundExpression right = BindValue(node.Right, diagnostics, BindValueKind.RValue); 99if (left.Kind == BoundKind.EventAccess && !CheckEventValueKind((BoundEventAccess)left, BindValueKind.Assignable, diagnostics)) 494BindValueKind bindValueKind = GetBinaryAssignmentKind(syntaxNode.Kind()); 496BoundExpression right = BindValue(syntaxNode.Right, diagnostics, BindValueKind.RValue); 2264BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics, BindValueKind.IncrementDecrement), diagnostics); 2512BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics, BindValueKind.AddressOf), diagnostics); 2599bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver, BindValueKind.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded); 3024private static BindValueKind GetBinaryAssignmentKind(SyntaxKind kind) 3029return BindValueKind.Assignable; 3042return BindValueKind.CompoundAssignment; 3044return BindValueKind.RValue; 3048private static BindValueKind GetUnaryAssignmentKind(SyntaxKind kind) 3056return BindValueKind.IncrementDecrement; 3061return BindValueKind.RValue; 3980var leftOperand = BindValue(node.Left, diagnostics, BindValueKind.RValue); 3982var rightOperand = BindValue(node.Right, diagnostics, BindValueKind.RValue); 4169BoundExpression leftOperand = BindValue(node.Left, diagnostics, BindValueKind.CompoundAssignment); 4171BoundExpression rightOperand = BindValue(node.Right, diagnostics, BindValueKind.RValue); 4298BoundExpression trueExpr = BindValue(whenTrue, diagnostics, BindValueKind.RValue); 4299BoundExpression falseExpr = BindValue(whenFalse, diagnostics, BindValueKind.RValue); 4339BoundExpression trueExpr = BindValue(whenTrue, diagnostics, BindValueKind.RValue | BindValueKind.RefersToLocation); 4340BoundExpression falseExpr = BindValue(whenFalse, diagnostics, BindValueKind.RValue | BindValueKind.RefersToLocation);
Binder\Binder_Patterns.cs (5)
239indexerAccess = CheckValue(indexerAccess, BindValueKind.RValue, diagnostics); 388indexerAccess = CheckValue(indexerAccess, BindValueKind.RValue, diagnostics); 536expression = CheckValue(expression, BindValueKind.RValue, diagnostics); 1588boundMember = CheckValue(boundMember, BindValueKind.RValue, diagnostics); 1601if (!hasErrors && !CheckValueKind(node: memberName.Parent, expr: boundMember, valueKind: BindValueKind.RValue,
Binder\Binder_Query.cs (3)
837BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); 847BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); 1001var checkedUltimateReceiver = CheckValue(ultimateReceiver, BindValueKind.RValue, diagnostics);
Binder\Binder_Statements.cs (28)
239: BindValue(node.Expression, diagnostics, BindValueKind.RValue); 394var boundExpr = BindValue(exprSyntax, diagnostics, BindValueKind.RValue); 863BindValueKind valueKind; 870protected BoundExpression BindInferredVariableInitializer(BindingDiagnosticBag diagnostics, ExpressionSyntax initializer, BindValueKind valueKind, CSharpSyntaxNode errorSyntax) 911out BindValueKind valueKind, 918valueKind = BindValueKind.RValue; 928? BindValueKind.ReadonlyRef 929: BindValueKind.RefOrOut; 1004BindValueKind valueKind; 1416var lhsKind = isRef ? BindValueKind.RefAssignable : BindValueKind.Assignable; 1424var rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(op1) : BindValueKind.RValue; 1437private static BindValueKind GetRequiredRHSValueKindForRefAssignment(BoundExpression boundLeft) 1439var rhsKind = BindValueKind.RefersToLocation; 1449rhsKind |= BindValueKind.Assignable; 1804BindValueKind valueKind, 2543var expr = BindValue(node, diagnostics, BindValueKind.RValue); 2898BindValueKind requiredValueKind = GetRequiredReturnValueKind(refKind); 3479BindValueKind requiredValueKind = bodyBinder.GetRequiredReturnValueKind(refKind); 3495BindValueKind requiredValueKind = GetRequiredReturnValueKind(refKind); 3509private BindValueKind GetRequiredReturnValueKind(RefKind refKind) 3511BindValueKind requiredValueKind = BindValueKind.RValue; 3516BindValueKind.RefReturn : 3517BindValueKind.ReadonlyRef;
Binder\ForEachLoopBinder.cs (9)
333BindValueKind requiredCurrentKind; 337requiredCurrentKind = BindValueKind.RValue; 340requiredCurrentKind = BindValueKind.Assignable | BindValueKind.RefersToLocation; 343requiredCurrentKind = BindValueKind.RefersToLocation; 611BoundExpression collectionExpr = this.GetBinder(collectionSyntax).BindValue(collectionSyntax, diagnostics, BindValueKind.RValue); 821if (CheckValueKind(collectionExpr.Syntax, collectionExpr, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 829if (!CheckValueKind(collectionExpr.Syntax, collectionExpr, BindValueKind.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded))
Binder\LockOrUsingBinder.cs (1)
84BoundExpression boundExpression = originalBinder.BindValue(TargetExpressionSyntax, expressionDiagnostics, Binder.BindValueKind.RValueOrMethodGroup);
Binder\SwitchBinder.cs (1)
497gotoCaseExpressionOpt = gotoBinder.BindValue(node.Expression, diagnostics, BindValueKind.RValue);
Binder\SwitchExpressionArmBinder.cs (1)
46BoundExpression armResult = armBinder.BindValue(node.Expression, diagnostics, BindValueKind.RValue);
Symbols\Source\SourceFixedFieldSymbol.cs (1)
92binder.BindValue(sizeExpression, diagnostics, Binder.BindValueKind.RValue),