25 instantiations of BoundBinaryOperator
Microsoft.CodeAnalysis.CSharp (25)
Binder\Binder_InterpolatedString.cs (1)
541=> new BoundBinaryOperator(
Binder\Binder_Operators.cs (8)
845return new BoundBinaryOperator( 951return new BoundBinaryOperator(node, kind, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Empty, left, right, GetBinaryOperatorErrorType(kind, diagnostics, node), true); 992return new BoundBinaryOperator(node, BinaryOperatorKind.StringConcatenation, BoundBinaryOperator.UncommonData.UnconvertedInterpolatedStringAddition(stringConstant), LookupResultKind.Empty, left, right, right.Type); 1122return new BoundBinaryOperator( 1453return new BoundBinaryOperator(node, kind | BinaryOperatorKind.Bool, constantValue, methodOpt: null, constrainedToTypeOpt: null, 1463return new BoundBinaryOperator(node, kind, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, 1578return new BoundBinaryOperator( 1594return new BoundBinaryOperator(node, kind, left, right, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, lookupResult, originalUserDefinedOperators, CreateErrorType(), true);
Compiler\MethodBodySynthesizer.cs (1)
499BoundExpression loopExitCondition = new BoundBinaryOperator(syntax,
Generated\BoundNodes.xml.Generated.cs (1)
1683var result = new BoundBinaryOperator(this.Syntax, operatorKind, data, resultKind, left, right, type, this.HasErrors);
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (6)
542new BoundBinaryOperator(syntax, operatorKind, constantValueOpt: null, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Viable, loweredLeft, loweredRight, type); 2039return new BoundBinaryOperator(syntax, operatorKind, constantValueOpt: null, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Empty, loweredLeft, loweredRight, type); 2049? new BoundBinaryOperator(syntax, operatorKind, null, method, constrainedToTypeOpt: null, default(LookupResultKind), loweredLeft, loweredRight, method.ReturnType) 2173loweredRight = new BoundBinaryOperator( 2186? new BoundBinaryOperator( 2298return new BoundBinaryOperator(
Lowering\LocalRewriter\LocalRewriter_Call.cs (1)
478rewrittenBoundCall = new BoundBinaryOperator(
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (5)
455rewrittenCondition: new BoundBinaryOperator(forEachSyntax, 657BoundExpression exitCondition = new BoundBinaryOperator( 953BoundExpression exitCondition = new BoundBinaryOperator( 1157BoundExpression exitCondition = new BoundBinaryOperator( 1252right: new BoundBinaryOperator(syntax,
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (1)
610currentResult = new BoundBinaryOperator(current.Syntax, current.OperatorKind, constantValueOpt: null, method, constrainedToTypeOpt: null, default(LookupResultKind), currentResult, right, current.Type);
Lowering\SyntheticBoundNodeFactory.cs (1)
645return new BoundBinaryOperator(this.Syntax, kind, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Viable, left, right, type) { WasCompilerGenerated = true };
248 references to BoundBinaryOperator
Microsoft.CodeAnalysis.CSharp (248)
Binder\Binder.ValueChecks.cs (9)
220public static MethodInvocationInfo FromBinaryOperator(BoundBinaryOperator binaryOperator) 3944Debug.Assert(expr is BoundBinaryOperator binaryOperator && 4282Debug.Assert(expr is BoundBinaryOperator binaryOperator && 4682var binary = (BoundBinaryOperator)expr; 5430var binary = (BoundBinaryOperator)expr; 5842case BoundBinaryOperator binary: 5881case BoundBinaryOperator binary:
Binder\Binder_Expressions.cs (4)
424case BoundBinaryOperator unconvertedBinaryOperator: 3573Debug.Assert(argument is BoundUnconvertedInterpolatedString or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true }); 3749Debug.Assert(unconvertedString is BoundUnconvertedInterpolatedString or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true }); 6543({ Type: null } or BoundLiteral or BoundUnconvertedInterpolatedString or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true }) &&
Binder\Binder_InterpolatedString.cs (14)
438private bool TryBindUnconvertedBinaryOperatorToDefaultInterpolatedStringHandler(BoundBinaryOperator binaryOperator, BindingDiagnosticBag diagnostics, [NotNullWhen(true)] out BoundBinaryOperator? convertedBinaryOperator) 515private BoundBinaryOperator UpdateBinaryOperatorWithInterpolatedContents(BoundBinaryOperator originalOperator, ImmutableArray<ImmutableArray<BoundExpression>> appendCalls, InterpolatedStringHandlerData data, SyntaxNode rootSyntax, BindingDiagnosticBag diagnostics) 521Func<BoundBinaryOperator, BoundExpression, BoundExpression, (ImmutableArray<ImmutableArray<BoundExpression>>, TypeSymbol), BoundExpression> binaryOperatorFactory = 524var rewritten = (BoundBinaryOperator)originalOperator.RewriteInterpolatedStringAddition((appendCalls, @string), interpolationFactory, binaryOperatorFactory); 526return rewritten.Update(BoundBinaryOperator.UncommonData.InterpolatedStringHandlerAddition(data)); 540static BoundBinaryOperator createBinaryOperator(BoundBinaryOperator original, BoundExpression left, BoundExpression right, (ImmutableArray<ImmutableArray<BoundExpression>> _, TypeSymbol @string) arg) 570BoundBinaryOperator binary => BindUnconvertedBinaryOperatorToInterpolatedStringHandlerType(binary, interpolatedStringHandlerType, diagnostics, additionalConstructorArguments, additionalConstructorRefKinds), 601private BoundBinaryOperator BindUnconvertedBinaryOperatorToInterpolatedStringHandlerType( 602BoundBinaryOperator binaryOperator, 628var result = UpdateBinaryOperatorWithInterpolatedContents(binaryOperator, appendCalls, data, binaryOperator.Syntax, diagnostics);
Binder\Binder_Operators.cs (9)
987&& left is BoundUnconvertedInterpolatedString or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true } 988&& right is BoundUnconvertedInterpolatedString or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true }) 992return new BoundBinaryOperator(node, BinaryOperatorKind.StringConcatenation, BoundBinaryOperator.UncommonData.UnconvertedInterpolatedStringAddition(stringConstant), LookupResultKind.Empty, left, right, right.Type); 1246private BoundExpression RebindSimpleBinaryOperatorAsConverted(BoundBinaryOperator unconvertedBinaryOperator, BindingDiagnosticBag diagnostics) 1248if (TryBindUnconvertedBinaryOperatorToDefaultInterpolatedStringHandler(unconvertedBinaryOperator, diagnostics, out var convertedBinaryOperator)) 1256BoundExpression doRebind(BindingDiagnosticBag diagnostics, BoundBinaryOperator? current) 1258var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 1263current = current.Left as BoundBinaryOperator; 1274BoundBinaryOperator b => doRebind(diagnostics, b),
Binder\Binder_TupleOperators.cs (1)
105case BoundBinaryOperator binary:
Binder\RefSafetyAnalysis.cs (2)
325protected override void BeforeVisitingSkippedBoundBinaryOperatorChildren(BoundBinaryOperator node) 747if (arg is BoundConversion { ConversionKind: ConversionKind.InterpolatedStringHandler, Operand: BoundInterpolatedString or BoundBinaryOperator } conversion)
Binder\Semantics\Conversions\Conversions.cs (1)
145if (source is BoundBinaryOperator)
Binder\Semantics\Conversions\ConversionsBase.cs (1)
1106case BoundKind.BinaryOperator when ((BoundBinaryOperator)sourceExpression).IsUnconvertedInterpolatedStringAddition:
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (1)
787return value is BoundUtf8String or BoundBinaryOperator { OperatorKind: BinaryOperatorKind.Utf8Addition };
Binder\Semantics\OverloadResolution\OverloadResolution.cs (3)
2637Debug.Assert(!isInterpolatedStringHandlerConversion || arguments[i] is BoundUnconvertedInterpolatedString or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true }); 2974node is BoundUnconvertedInterpolatedString { ConstantValueOpt: null } or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true, ConstantValueOpt: null }) 4599&& argument is BoundUnconvertedInterpolatedString or BoundBinaryOperator { IsUnconvertedInterpolatedStringAddition: true }
BoundTree\BoundExpression.cs (1)
90return ((BoundBinaryOperator)this).IsUnconvertedInterpolatedStringAddition;
BoundTree\BoundNode_Source.cs (1)
340case BoundBinaryOperator binary:
BoundTree\BoundNodeExtensions.cs (26)
108this BoundBinaryOperator binary, 111Action<BoundBinaryOperator, TArg>? binaryOperatorCallback = null) 114var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 118while (stack.TryPop(out BoundBinaryOperator? current)) 122case BoundBinaryOperator: 136case BoundBinaryOperator rightOperator: 154static void pushLeftNodes(BoundBinaryOperator binary, ArrayBuilder<BoundBinaryOperator> stack, TArg arg, Action<BoundBinaryOperator, TArg>? binaryOperatorCallback) 157BoundBinaryOperator? current = binary; 162current = current.Left as BoundBinaryOperator; 183this BoundBinaryOperator binary, 186Func<BoundBinaryOperator, TResult, TResult, TArg, TResult> binaryOperatorFactory) 196BoundBinaryOperator binary, 199Func<BoundBinaryOperator, TResult, TResult, TArg, TResult> binaryOperatorFactory, 203var originalStack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 207while (originalStack.TryPop(out var currentBinary)) 213BoundBinaryOperator => result!, 224BoundBinaryOperator binaryOperator => doRewrite(binaryOperator, arg, interpolatedStringFactory, binaryOperatorFactory, ref i), 237static void pushLeftNodes(BoundBinaryOperator binary, ArrayBuilder<BoundBinaryOperator> stack) 239BoundBinaryOperator? current = binary; 244current = current.Left as BoundBinaryOperator; 252BoundBinaryOperator { InterpolatedStringHandlerData: { } d } => d, 254BoundBinaryOperator or BoundInterpolatedString when !throwOnMissing => default, 255BoundBinaryOperator or BoundInterpolatedString => throw ExceptionUtilities.Unreachable(),
BoundTree\BoundTreeRewriter.cs (7)
246public sealed override BoundNode? VisitBinaryOperator(BoundBinaryOperator node) 255var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 258BoundBinaryOperator binary = (BoundBinaryOperator)child; 270binary = (BoundBinaryOperator)child; 292protected virtual BoundBinaryOperator.UncommonData? VisitBinaryOperatorData(BoundBinaryOperator node)
BoundTree\BoundTreeVisitors.cs (1)
42return VisitBinaryOperator(node as BoundBinaryOperator, arg);
BoundTree\BoundTreeWalker.cs (4)
105public sealed override BoundNode? VisitBinaryOperator(BoundBinaryOperator node) 107if (node.Left is not BoundBinaryOperator binary) 123binary = (BoundBinaryOperator)current; 141protected virtual void BeforeVisitingSkippedBoundBinaryOperatorChildren(BoundBinaryOperator node)
BoundTree\Constructors.cs (2)
450public BoundBinaryOperator Update(BinaryOperatorKind operatorKind, 463public BoundBinaryOperator Update(UncommonData uncommonData)
BoundTree\NullabilityRewriter.cs (2)
20public override BoundNode? VisitBinaryOperator(BoundBinaryOperator node) 100BoundBinaryOperator binary => binary.Update(
CodeGen\EmitConversion.cs (1)
162(fromPredefTypeKind == Cci.PrimitiveTypeCode.IntPtr && conversion.Operand is BoundBinaryOperator { OperatorKind: BinaryOperatorKind.Division })); // pointer subtraction: see LocalRewriter.RewritePointerSubtraction()
CodeGen\EmitExpression.cs (3)
202EmitBinaryOperatorExpression((BoundBinaryOperator)expression, used); 2180BoundBinaryOperator b = (BoundBinaryOperator)current;
CodeGen\EmitOperators.cs (16)
58private void EmitBinaryOperatorExpression(BoundBinaryOperator expression, bool used) 90private void EmitBinaryOperator(BoundBinaryOperator expression) 100BoundBinaryOperator binary = (BoundBinaryOperator)child; 110var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 123binary = (BoundBinaryOperator)child; 157private void EmitBinaryOperatorSimple(BoundBinaryOperator expression) 175private void EmitBinaryOperatorInstruction(BoundBinaryOperator expression) 249private void EmitShortCircuitingOperator(BoundBinaryOperator condition, bool sense, bool stopSense, bool stopValue) 297private void EmitBinaryCondOperator(BoundBinaryOperator binOp, bool sense) 509var binOp = (BoundBinaryOperator)condition; 540if (condition is BoundBinaryOperator binOp) 620private void EmitConversionToEnumUnderlyingType(BoundBinaryOperator expression, bool @checked) 696private void EmitBinaryCheckedOperatorInstruction(BoundBinaryOperator expression) 776private static bool IsUnsignedBinaryOperator(BoundBinaryOperator op)
CodeGen\EmitStatement.cs (5)
228private static BoundExpression TryReduce(BoundBinaryOperator condition, ref bool sense) 299private static ILOpCode CodeForJump(BoundBinaryOperator op, bool sense, out ILOpCode revOpCode) 420var binOp = (BoundBinaryOperator)condition; 444top.condition is BoundBinaryOperator binary &&
CodeGen\Optimizer.cs (11)
1482public override BoundNode VisitBinaryOperator(BoundBinaryOperator node) 1492var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 1495BoundBinaryOperator binary = (BoundBinaryOperator)child; 1507binary = (BoundBinaryOperator)child; 1556private BoundNode VisitBinaryOperatorSimple(BoundBinaryOperator node) 2078public override BoundNode VisitBinaryOperator(BoundBinaryOperator node) 2088var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 2091BoundBinaryOperator binary = (BoundBinaryOperator)child; 2103binary = (BoundBinaryOperator)child;
Compilation\CSharpSemanticModel.cs (2)
3547GetSymbolsAndResultKind((BoundBinaryOperator)boundNode, out isDynamic, ref resultKind, ref symbols); 3845private static void GetSymbolsAndResultKind(BoundBinaryOperator binaryOperator, out bool isDynamic, ref LookupResultKind resultKind, ref OneOrMany<Symbol> symbols)
Compilation\MemberSemanticModel.NodeMapBuilder.cs (4)
194if (current is BoundBinaryOperator binOp) 200binOp = current as BoundBinaryOperator; 211binOp = current as BoundBinaryOperator; 309public override BoundNode VisitBinaryOperator(BoundBinaryOperator node)
FlowAnalysis\AbstractFlowPass.cs (18)
2390public override BoundNode VisitBinaryOperator(BoundBinaryOperator node) 2429var binOp = (BoundBinaryOperator)child; 2468var binOp = (BoundBinaryOperator)binary; 2488var binOp = (BoundBinaryOperator)binary; 2558private void VisitBinaryOperatorChildren(BoundBinaryOperator node) 2565var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 2567BoundBinaryOperator binary = node; 2572binary = binary.Left as BoundBinaryOperator; 2582protected virtual void VisitBinaryOperatorChildren(ArrayBuilder<BoundBinaryOperator> stack) 2584var binary = stack.Pop(); 2652static bool canLearnFromOperator(BoundBinaryOperator binary) 2666static bool isEquals(BoundBinaryOperator binary) 2670bool learnFromOperator(BoundBinaryOperator binary) 2711protected void VisitBinaryInterpolatedStringAddition(BoundBinaryOperator node) 2748protected virtual void VisitInterpolatedStringBinaryOperatorNode(BoundBinaryOperator node) { }
FlowAnalysis\NullableWalker.cs (9)
5181protected override void VisitBinaryOperatorChildren(ArrayBuilder<BoundBinaryOperator> stack) 5183var binary = stack.Pop(); 5262static bool isEquals(BoundBinaryOperator binary) 5365BoundBinaryOperator binary) 5566BoundBinaryOperator binary) 5655protected override void VisitInterpolatedStringBinaryOperatorNode(BoundBinaryOperator node) 12270case BoundBinaryOperator binOp: 12285case BoundBinaryOperator binOp: 12317void afterLeftChildOfBoundBinaryOperatorHasBeenVisited(BoundBinaryOperator node)
FlowAnalysis\NullableWalker.DebugVerifier.cs (1)
300public override BoundNode? VisitBinaryOperator(BoundBinaryOperator node)
Generated\BoundNodes.xml.Generated.cs (11)
1655public BoundBinaryOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundBinaryOperator.UncommonData? data, LookupResultKind resultKind, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false) 1673public BoundBinaryOperator.UncommonData? Data { get; } 1679public BoundBinaryOperator Update(BinaryOperatorKind operatorKind, BoundBinaryOperator.UncommonData? data, LookupResultKind resultKind, BoundExpression left, BoundExpression right, TypeSymbol type) 1683var result = new BoundBinaryOperator(this.Syntax, operatorKind, data, resultKind, left, right, type, this.HasErrors); 8978return VisitBinaryOperator((BoundBinaryOperator)node, arg); 9411public virtual R VisitBinaryOperator(BoundBinaryOperator node, A arg) => this.DefaultVisit(node, arg); 9647public virtual BoundNode? VisitBinaryOperator(BoundBinaryOperator node) => this.DefaultVisit(node); 9975public override BoundNode? VisitBinaryOperator(BoundBinaryOperator node) 11106public override BoundNode? VisitBinaryOperator(BoundBinaryOperator node) 15492public override TreeDumperNode VisitBinaryOperator(BoundBinaryOperator node, object? arg) => new TreeDumperNode("binaryOperator", null, new TreeDumperNode[]
Lowering\AsyncRewriter\AsyncIteratorMethodToStateMachineRewriter.cs (1)
223protected override BoundBinaryOperator ShouldEnterFinallyBlock()
Lowering\BoundTreeToDifferentEnclosingContextRewriter.cs (3)
160protected override BoundBinaryOperator.UncommonData? VisitBinaryOperatorData(BoundBinaryOperator node) 166return BoundBinaryOperator.UncommonData.CreateIfNeeded(node.ConstantValueOpt, VisitMethodSymbol(node.BinaryOperatorMethod), VisitType(node.ConstrainedToType), node.OriginalUserDefinedOperatorsOpt);
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (2)
198var binOp = (BoundBinaryOperator)node;
Lowering\DiagnosticsPass_ExpressionTrees.cs (4)
693public override BoundNode VisitBinaryOperator(BoundBinaryOperator node) 703BoundBinaryOperator current = node; 711current = (BoundBinaryOperator)current.Left; 787private void CheckDynamic(BoundBinaryOperator node)
Lowering\DiagnosticsPass_Warnings.cs (6)
250private void CheckBinaryOperator(BoundBinaryOperator node) 303private void CheckRelationals(BoundBinaryOperator node) 380private void CheckSelfComparisons(BoundBinaryOperator node) 391private void CheckVacuousComparisons(BoundBinaryOperator tree, ConstantValue constantValue, BoundNode operand) 748private void CheckNullableNullBinOp(BoundBinaryOperator node) 779private void CheckLiftedBinOp(BoundBinaryOperator node)
Lowering\ExtensionMethodBodyRewriter.cs (2)
196protected override BoundBinaryOperator.UncommonData? VisitBinaryOperatorData(BoundBinaryOperator node)
Lowering\ExtensionMethodReferenceRewriter.cs (5)
241protected override BoundBinaryOperator.UncommonData? VisitBinaryOperatorData(BoundBinaryOperator node) 246public static BoundBinaryOperator.UncommonData? VisitBinaryOperatorData(BoundTreeRewriter rewriter, BoundBinaryOperator node) 261return BoundBinaryOperator.UncommonData.CreateIfNeeded(
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (13)
16public override BoundNode VisitBinaryOperator(BoundBinaryOperator node) 114public BoundExpression VisitBinaryOperator(BoundBinaryOperator node, BoundUnaryOperator? applyParentUnaryOperator) 140var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 142for (BoundBinaryOperator? current = node; current != null && current.ConstantValueOpt == null; current = current.Left as BoundBinaryOperator) 157BoundBinaryOperator original = stack.Pop(); 167private static ImmutableArray<BoundExpression> CollectBinaryOperatorInterpolatedStringParts(BoundBinaryOperator node) 197BoundBinaryOperator? oldNode, 2014private BoundExpression RewriteStringEquality(BoundBinaryOperator? oldNode, SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, SpecialMember member) 2146BoundBinaryOperator? oldNode, 2208BoundBinaryOperator? oldNode, 2259var result = oldNode == null 2459var multiplication = _factory.Binary(multiplicationKind, multiplicationResultType, numericOperand, sizeOfExpression);
Lowering\LocalRewriter\LocalRewriter_Call.cs (2)
853if (argument is BoundConversion { ConversionKind: ConversionKind.InterpolatedStringHandler, Operand: BoundInterpolatedString or BoundBinaryOperator } conversion) 927if (argument is BoundConversion { ConversionKind: ConversionKind.InterpolatedStringHandler, Operand: BoundInterpolatedString or BoundBinaryOperator } conversion)
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (3)
30BoundBinaryOperator { InterpolatedStringHandlerData: { } d } binary => (d, CollectBinaryOperatorInterpolatedStringParts(binary)), 164private BoundExpression VisitUtf8Addition(BoundBinaryOperator node) 193case BoundBinaryOperator utf8Addition:
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (14)
17private static bool IsBinaryStringConcatenation([NotNullWhen(true)] BoundBinaryOperator? binaryOperator) 29if (unvisitedRight is BoundBinaryOperator { InterpolatedStringHandlerData: null } rightBinary && IsBinaryStringConcatenation(rightBinary)) 46private BoundExpression VisitStringConcatenation(BoundBinaryOperator originalOperator) 208private void CollectAndVisitConcatArguments(BoundBinaryOperator originalOperator, BoundExpression? visitedCompoundAssignmentLeftRead, out ArrayBuilder<BoundExpression> destinationArguments) 234static void pushArguments(LocalRewriter self, BoundBinaryOperator binaryOperator, ArrayBuilder<BoundExpression> arguments, ref WellKnownConcatRelatedMethods concatMethods) 238if (shouldRecurse(binaryOperator.Right, out var right)) 247if (shouldRecurse(binaryOperator.Left, out var left)) 258static bool shouldRecurse(BoundExpression expr, [NotNullWhen(true)] out BoundBinaryOperator? binaryOperator) 260binaryOperator = expr as BoundBinaryOperator; 357Debug.Assert(argument is not BoundBinaryOperator { InterpolatedStringHandlerData: null } op || !IsBinaryStringConcatenation(op)); 576private BoundExpression RewriteStringConcatInExpressionLambda(BoundBinaryOperator original) 578BoundBinaryOperator? current = original; 580var stack = ArrayBuilder<BoundBinaryOperator>.GetInstance(); 586if (current.Left is BoundBinaryOperator left && IsBinaryStringConcatenation(left))
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (2)
51var binaryOperator = (BoundBinaryOperator)node.Operand;
Lowering\SpillSequenceSpiller.cs (1)
991public override BoundNode VisitBinaryOperator(BoundBinaryOperator node)
Lowering\StateMachineRewriter\MethodToStateMachineRewriter.cs (1)
780protected virtual BoundBinaryOperator ShouldEnterFinallyBlock()
Lowering\SyntheticBoundNodeFactory.cs (11)
643public BoundBinaryOperator Binary(BinaryOperatorKind kind, TypeSymbol type, BoundExpression left, BoundExpression right) 662public BoundBinaryOperator LogicalAnd(BoundExpression left, BoundExpression right) 669public BoundBinaryOperator LogicalOr(BoundExpression left, BoundExpression right) 676public BoundBinaryOperator IntEqual(BoundExpression left, BoundExpression right) 681public BoundBinaryOperator ObjectEqual(BoundExpression left, BoundExpression right) 707public BoundBinaryOperator ObjectNotEqual(BoundExpression left, BoundExpression right) 712public BoundBinaryOperator IntNotEqual(BoundExpression left, BoundExpression right) 717public BoundBinaryOperator IntLessThan(BoundExpression left, BoundExpression right) 722public BoundBinaryOperator IntGreaterThanOrEqual(BoundExpression left, BoundExpression right) 727public BoundBinaryOperator IntSubtract(BoundExpression left, BoundExpression right) 732public BoundBinaryOperator IntMultiply(BoundExpression left, BoundExpression right)
Operations\CSharpOperationFactory.cs (8)
1448if (boundBinaryOperatorBase is BoundBinaryOperator { InterpolatedStringHandlerData: not null } binary) 1462} while (currentBinary is not null and not BoundBinaryOperator { InterpolatedStringHandlerData: not null }); 1473BoundBinaryOperator binaryOp => CreateBoundBinaryOperatorOperation(binaryOp, left, right), 1507private IBinaryOperation CreateBoundBinaryOperatorOperation(BoundBinaryOperator boundBinaryOperator, IOperation left, IOperation right) 1527private IOperation CreateBoundInterpolatedStringBinaryOperator(BoundBinaryOperator boundBinaryOperator) 1533Func<BoundBinaryOperator, IOperation, IOperation, (CSharpOperationFactory, InterpolatedStringHandlerData), IOperation> createBinaryOperator 1545BoundBinaryOperator boundBinaryOperator, 2430case BoundBinaryOperator binaryOperator: