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