252 references to BindValueKind
Microsoft.CodeAnalysis.CSharp (252)
Binder\Binder_Attributes.cs (1)
569BoundExpression namedArgumentValue = this.BindValue(namedArgument.Expression, diagnostics, BindValueKind.RValue);
Binder\Binder_Await.cs (1)
656qualified = CheckValue(qualified, BindValueKind.RValue, diagnostics);
Binder\Binder_Conversions.cs (3)
532if (CheckValueKind(syntax, source, BindValueKind.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 547if (CheckValueKind(syntax, source, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded))
Binder\Binder_Deconstruct.cs (3)
99BoundExpression boundRight = rightPlaceholder ?? BindValue(right, deconstructionDiagnostics, BindValueKind.RValue); 660memberAccess = CheckValue(memberAccess, BindValueKind.RValueOrMethodGroup, diagnostics); 794var checkedVariable = CheckValue(boundVariable, BindValueKind.Assignable, diagnostics);
Binder\Binder_Expressions.cs (55)
260internal BoundExpression BindValue(ExpressionSyntax node, BindingDiagnosticBag diagnostics, BindValueKind valueKind) 268return BindToNaturalType(BindValue(node, diagnostics, BindValueKind.RValue), diagnostics, reportNoTargetType); 285return CheckValue(valueOrType, BindValueKind.RValue, diagnostics); 467internal BoundExpression BindValueAllowArgList(ExpressionSyntax node, BindingDiagnosticBag diagnostics, BindValueKind valueKind) 512BindValueKind valueKind; 545valueBeforeConversion = defaultValueBinder.BindValue(defaultValueSyntax.Value, diagnostics, BindValueKind.RValue); 563var initializer = initializerBinder.BindValue(equalsValueSyntax.Value, diagnostics, BindValueKind.RValue); 896node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(BindToTypeForErrorRecovery(BindValue(node.Expression, BindingDiagnosticBag.Discarded, BindValueKind.RefersToLocation))), 1048ImmutableArray.Create(BindValue(arguments[0].Expression, diagnostics, BindValueKind.RValue)) : 1078BoundExpression boundArgument = BindValue(argumentSyntax.Expression, diagnostics, BindValueKind.RValue); 1259BoundExpression argument = BindValue(node.Expression, diagnostics, BindValueKind.RValue); 1282BoundExpression argument = this.BindValue(node.Expression, diagnostics, BindValueKind.RefOrOut); 1307BoundExpression argument = BindValue(node.Expression, diagnostics, BindValueKind.RValue); 2663BoundExpression operand = this.BindValue(node.Expression, diagnostics, BindValueKind.RValue); 2688BoundExpression boundOperand = BindValue(node.Operand, diagnostics, BindValueKind.RValue); 2796BoundExpression boundOperand = BindValue(operand, diagnostics, BindValueKind.RValue); 3199var requiredValueKind = origRefKind == RefKind.In ? BindValueKind.ReadonlyRef : BindValueKind.RefOrOut; 3480BindValueKind valueKind = 3482BindValueKind.RValue : 3484BindValueKind.ReadonlyRef : 3485BindValueKind.RefOrOut; 4018if (!this.CheckValueKind(argument.Syntax, argument, BindValueKind.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 4030if (this.CheckValueKind(argument.Syntax, argument, BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 4183var size = BindValue(dimension, diagnostics, BindValueKind.RValue); 4299var boundExpression = BindValue(expression, diagnostics, BindValueKind.RValue); 4316var boundExpression = BindValue(expression, diagnostics, BindValueKind.RValue); 4645count = BindValue(countSyntax, diagnostics, BindValueKind.RValue); 5388ExpressionElementSyntax expressionElementSyntax => @this.BindValue(expressionElementSyntax.Expression, diagnostics, BindValueKind.RValue), 5829BindValueKind rhsValueKind, 5841Debug.Assert(rhsValueKind == BindValueKind.RValue); 5910var rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(boundLeft) : BindValueKind.RValue; 5956var boundExpression = BindValue(memberInitializer, diagnostics, BindValueKind.RValue); 5971BindValueKind valueKind = isRhsNestedInitializer ? BindValueKind.RValue : (isRef ? BindValueKind.RefAssignable : BindValueKind.Assignable); 5984leftSyntax, implicitReceiver, BindValueKind.Assignable, false, diagnostics); 5991BindValueKind valueKind, 6232BindValueKind valueKind, 6266return ToBadExpression(boundMember, (valueKind == BindValueKind.RValue) ? LookupResultKind.NotAValue : LookupResultKind.NotAVariable); 6520var boundElementInitializer = BindInitializerExpressionOrValue(elementInitializer, initializerType, BindValueKind.RValue, implicitReceiver.Syntax, diagnostics); 6549exprBuilder.Add(BindValue(childElementInitializer, diagnostics, BindValueKind.RValue)); 7927boundLeft = CheckValue(boundLeft, BindValueKind.RValue, diagnostics); 8037boundLeft = CheckValue(boundLeft, BindValueKind.RValue, diagnostics); 9408lengthOrCountAccess = binder.CheckValue(lengthOrCountAccess, BindValueKind.RValue, diagnostics); 9864hasError = !CheckValueKind(node, receiver, BindValueKind.FixedReceiver, checkingReceiver: false, diagnostics: diagnostics); 10320receiver = CheckValue(receiver, BindValueKind.RValue, diagnostics); 10450if (CheckValueKind(node, expr, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 10462if (!CheckValueKind(node, expr, BindValueKind.RefersToLocation, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 11504lengthOrCountAccess = CheckValue(lengthOrCountAccess, BindValueKind.RValue, diagnostics); 12344var 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 (11)
126boundExpression = CheckValue(boundExpression, BindValueKind.RValueOrMethodGroup, diagnostics); 246boundExpression = CheckValue(boundExpression, BindValueKind.RValueOrMethodGroup, diagnostics); 761extensionMemberAccess = CheckValue(extensionMemberAccess, BindValueKind.RValue, diagnostics); 1300receiverArgument = CheckValue(receiverArgument, BindValueKind.RefOrOut, diagnostics); 1404receiver = CheckValue(receiver, BindValueKind.RefOrOut, diagnostics); 1443var valueKind = method.IsEffectivelyReadOnly 1444? BindValueKind.RefersToLocation 1445: BindValueKind.RefersToLocation | BindValueKind.Assignable; 2024return CheckValue(boundValue, BindValueKind.RValue, diagnostics); 2466boundArgument = CheckValue(boundArgument, BindValueKind.RValue, diagnostics);
Binder\Binder_Operators.cs (25)
35BoundExpression left = BindValue(node.Left, diagnostics, BindValueKind.CompoundAssignment); 37BoundExpression right = BindValue(node.Right, diagnostics, BindValueKind.RValue); 111if (left.Kind == BoundKind.EventAccess && !CheckEventValueKind((BoundEventAccess)left, BindValueKind.Assignable, diagnostics)) 353if (!CheckValueKind(node, left, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 926BoundExpression left = CheckValue(result, BindValueKind.RValue, diagnostics); 927BoundExpression right = BindValue(syntaxNode.Right, diagnostics, BindValueKind.RValue); 3274BoundExpression operand = BindToNaturalType(BindValue(operandSyntax, diagnostics, BindValueKind.IncrementDecrement), diagnostics); 3469!CheckValueKind(node, operand, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 4135BoundExpression operand = BindToNaturalType(BindValue(node.Operand, diagnostics, BindValueKind.AddressOf), diagnostics); 4225bool receiverIsLValue = CheckValueKind(receiver.Syntax, receiver, BindValueKind.AddressOf, checkingReceiver: false, diagnostics: BindingDiagnosticBag.Discarded); 4655private static BindValueKind GetUnaryAssignmentKind(SyntaxKind kind) 4663return BindValueKind.IncrementDecrement; 4668return BindValueKind.RValue; 5662var leftOperand = BindValue(node.Left, diagnostics, BindValueKind.RValue); 5664var rightOperand = BindValue(node.Right, diagnostics, BindValueKind.RValue); 5851BoundExpression leftOperand = BindValue(node.Left, diagnostics, BindValueKind.NullCoalescingAssignment); 5853BoundExpression rightOperand = BindValue(node.Right, diagnostics, BindValueKind.RValue); 5978BoundExpression trueExpr = BindValue(whenTrue, diagnostics, BindValueKind.RValue); 5979BoundExpression falseExpr = BindValue(whenFalse, diagnostics, BindValueKind.RValue); 6019BoundExpression trueExpr = BindValue(whenTrue, diagnostics, BindValueKind.RValue | BindValueKind.RefersToLocation); 6020BoundExpression falseExpr = BindValue(whenFalse, diagnostics, BindValueKind.RValue | BindValueKind.RefersToLocation);
Binder\Binder_Patterns.cs (5)
302indexerAccess = CheckValue(indexerAccess, BindValueKind.RValue, diagnostics); 459indexerAccess = CheckValue(indexerAccess, BindValueKind.RValue, diagnostics); 627originalExpression = CheckValue(originalExpression, BindValueKind.RValue, diagnostics); 1874boundMember = CheckValue(boundMember, BindValueKind.RValue, diagnostics); 1887if (!hasErrors && !CheckValueKind(node: memberName.Parent, expr: boundMember, valueKind: BindValueKind.RValue,
Binder\Binder_Query.cs (3)
842BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); 852BoundExpression boundExpression = lambdaBodyBinder.BindValue(expression, diagnostics, BindValueKind.RValue); 990var checkedUltimateReceiver = CheckValue(ultimateReceiver, BindValueKind.RValue, diagnostics);
Binder\Binder_Statements.cs (28)
240: BindValue(node.Expression, diagnostics, BindValueKind.RValue); 395var boundExpr = BindValue(exprSyntax, diagnostics, BindValueKind.RValue); 871BindValueKind valueKind; 878protected BoundExpression BindInferredVariableInitializer(BindingDiagnosticBag diagnostics, ExpressionSyntax initializer, BindValueKind valueKind, CSharpSyntaxNode errorSyntax) 919out BindValueKind valueKind, 926valueKind = BindValueKind.RValue; 936? BindValueKind.ReadonlyRef 937: BindValueKind.RefOrOut; 1012BindValueKind valueKind; 1423var lhsKind = isRef ? BindValueKind.RefAssignable : BindValueKind.Assignable; 1431var rhsKind = isRef ? GetRequiredRHSValueKindForRefAssignment(op1) : BindValueKind.RValue; 1444private static BindValueKind GetRequiredRHSValueKindForRefAssignment(BoundExpression boundLeft) 1446var rhsKind = BindValueKind.RefersToLocation; 1456rhsKind |= BindValueKind.Assignable; 1869BindValueKind valueKind, 2686var expr = BindValue(node, diagnostics, BindValueKind.RValue); 3068BindValueKind requiredValueKind = GetRequiredReturnValueKind(refKind); 3667BindValueKind requiredValueKind = bodyBinder.GetRequiredReturnValueKind(refKind); 3683BindValueKind requiredValueKind = GetRequiredReturnValueKind(refKind); 3697private BindValueKind GetRequiredReturnValueKind(RefKind refKind) 3699BindValueKind requiredValueKind = BindValueKind.RValue; 3704BindValueKind.RefReturn : 3705BindValueKind.ReadonlyRef;
Binder\Binder.ValueChecks.cs (102)
465private const BindValueKind ValueKindSignificantBitsMask = unchecked((BindValueKind)~((1 << ValueKindInsignificantBits) - 1)); 570private static bool RequiresRValueOnly(BindValueKind kind) 572return (kind & ValueKindSignificantBitsMask) == BindValueKind.RValue; 575private static bool RequiresAssignmentOnly(BindValueKind kind) 577return (kind & ValueKindSignificantBitsMask) == BindValueKind.Assignable; 580private static bool RequiresVariable(BindValueKind kind) 585private static bool RequiresReferenceToLocation(BindValueKind kind) 587return (kind & BindValueKind.RefersToLocation) != 0; 590private static bool RequiresAssignableVariable(BindValueKind kind) 592return (kind & BindValueKind.Assignable) != 0; 595private static bool RequiresRefAssignableVariable(BindValueKind kind) 597return (kind & BindValueKind.RefAssignable) != 0; 600private static bool RequiresRefOrOut(BindValueKind kind) 602return (kind & BindValueKind.RefOrOut) == BindValueKind.RefOrOut; 607private static AccessorKind GetIndexerAccessorKind(BoundIndexerAccess indexerAccess, BindValueKind valueKind) 617private static AccessorKind GetAccessorKind(BindValueKind valueKind) 619var coreValueKind = valueKind & ValueKindSignificantBitsMask; 622BindValueKind.CompoundAssignment => AccessorKind.Both, 623BindValueKind.Assignable => AccessorKind.Set, 628private BoundIndexerAccess BindIndexerDefaultArgumentsAndParamsCollection(BoundIndexerAccess indexerAccess, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 630var coreValueKind = valueKind & ValueKindSignificantBitsMask; 633var useSetAccessor = coreValueKind == BindValueKind.Assignable && indexer.RefKind != RefKind.Ref; 729private BoundExpression CheckValue(BoundExpression expr, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 744Debug.Assert(expr.Syntax.Kind() != SyntaxKind.Argument || valueKind == BindValueKind.RefOrOut); 749Debug.Assert(valueKind == BindValueKind.RefOrOut); 753Debug.Assert(valueKind is (BindValueKind.Assignable or BindValueKind.RefOrOut or BindValueKind.RefAssignable) || diagnostics.DiagnosticBag is null || diagnostics.HasAnyResolvedErrors()); 821if (valueKind == BindValueKind.RValue) 834if (expr.Kind == BoundKind.MethodGroup && valueKind != BindValueKind.RValueOrMethodGroup) 884expr.HasAnyErrors && valueKind == BindValueKind.RValueOrMethodGroup) 889var resultKind = (valueKind == BindValueKind.RValue || valueKind == BindValueKind.RValueOrMethodGroup) ? 921internal bool CheckValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 979case BoundKind.MethodGroup when valueKind == BindValueKind.AddressOf: 1205bool checkArrayAccessValueKind(SyntaxNode node, BindValueKind valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics) 1227private static void ReportThisLvalueError(SyntaxNode node, BindValueKind valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics) 1282private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 1284if (valueKind == BindValueKind.AddressOf) 1297private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1387private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1389Debug.Assert(!RequiresAssignableVariable(BindValueKind.AddressOf)); 1450static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1454Debug.Assert(valueKind != BindValueKind.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp 1460if (valueKind == BindValueKind.RefReturn) 1479if (valueKind == BindValueKind.RefReturn) 1595private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1640Debug.Assert(valueKind == BindValueKind.RefAssignable); 1657return CheckIsValidReceiverForVariable(node, fieldAccess.ReceiverOpt, BindValueKind.Assignable, diagnostics); 1743private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 1822private bool CheckEventValueKind(BoundEventAccess boundEvent, BindValueKind valueKind, BindingDiagnosticBag diagnostics) 1834if (valueKind == BindValueKind.CompoundAssignment) 1863if (!CheckIsValidReceiverForVariable(eventSyntax, receiver, BindValueKind.Assignable, diagnostics)) 1870if (eventSymbol.IsWindowsRuntimeEvent && valueKind != BindValueKind.Assignable) 1874if (valueKind == BindValueKind.RefOrOut) 1895private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver, BindValueKind kind, BindingDiagnosticBag diagnostics) 1930BindValueKind valueKind, 1971private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 1998else if (valueKind == BindValueKind.RefOrOut) 2070var setValueKind = setMethod.IsEffectivelyReadOnly ? BindValueKind.RValue : BindValueKind.Assignable; 3419private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 3422Debug.Assert(kind != BindValueKind.RValue); 3457private static ErrorCode GetThisLvalueError(BindValueKind kind, bool isValueType, bool isPrimaryConstructorParameter) 3461case BindValueKind.CompoundAssignment: 3462case BindValueKind.NullCoalescingAssignment: 3463case BindValueKind.Assignable: 3466case BindValueKind.RefOrOut: 3469case BindValueKind.AddressOf: 3472case BindValueKind.IncrementDecrement: 3475case BindValueKind.RefReturn: 3476case BindValueKind.ReadonlyRef: 3479case BindValueKind.RefAssignable: 3491private static ErrorCode GetRangeLvalueError(BindValueKind kind) 3495case BindValueKind.Assignable: 3496case BindValueKind.CompoundAssignment: 3497case BindValueKind.IncrementDecrement: 3498case BindValueKind.NullCoalescingAssignment: 3501case BindValueKind.AddressOf: 3504case BindValueKind.RefReturn: 3505case BindValueKind.ReadonlyRef: 3508case BindValueKind.RefAssignable: 3520private static ErrorCode GetMethodGroupOrFunctionPointerLvalueError(BindValueKind valueKind) 3531private static ErrorCode GetStandardLvalueError(BindValueKind kind) 3535case BindValueKind.CompoundAssignment: 3536case BindValueKind.NullCoalescingAssignment: 3537case BindValueKind.Assignable: 3540case BindValueKind.AddressOf: 3543case BindValueKind.IncrementDecrement: 3546case BindValueKind.FixedReceiver: 3549case BindValueKind.RefReturn: 3550case BindValueKind.ReadonlyRef: 3553case BindValueKind.RefAssignable: 3581private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 3589Debug.Assert(kind != BindValueKind.AddressOf); // If this assert fails, we probably should report ErrorCode.ERR_InvalidAddrOp 3606int index = (checkingReceiver ? 6 : 0) + (field.IsStatic ? 3 : 0) + (kind == BindValueKind.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2)); 3617private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics) 3624if (kind == BindValueKind.AddressOf) 3642int index = (checkingReceiver ? 3 : 0) + (kind == BindValueKind.RefReturn ? 0 : (RequiresRefOrOut(kind) ? 1 : 2));
Binder\ForEachLoopBinder.cs (9)
343BindValueKind requiredCurrentKind; 347requiredCurrentKind = BindValueKind.RValue; 350requiredCurrentKind = BindValueKind.Assignable | BindValueKind.RefersToLocation; 353requiredCurrentKind = BindValueKind.RefersToLocation; 631BoundExpression collectionExpr = this.GetBinder(collectionSyntax).BindValue(collectionSyntax, diagnostics, BindValueKind.RValue); 849if (CheckValueKind(collectionExpr.Syntax, collectionExpr, BindValueKind.RefersToLocation | BindValueKind.Assignable, checkingReceiver: false, BindingDiagnosticBag.Discarded)) 857if (!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)
519gotoCaseExpressionOpt = gotoBinder.BindValue(node.Expression, diagnostics, BindValueKind.RValue);
Binder\SwitchExpressionArmBinder.cs (1)
47BoundExpression armResult = armBinder.BindValue(node.Expression, diagnostics, BindValueKind.RValue);
Symbols\Source\SourceFixedFieldSymbol.cs (1)
93binder.BindValue(sizeExpression, diagnostics, Binder.BindValueKind.RValue),