1 implementation of IBinaryOperation
Microsoft.CodeAnalysis (1)
Generated\Operations.Generated.cs (1)
5267internal sealed partial class BinaryOperation : Operation, IBinaryOperation
144 references to IBinaryOperation
Microsoft.CodeAnalysis (27)
Generated\OperationKind.Generated.cs (2)
83/// <summary>Indicates an <see cref="IBinaryOperation"/>.</summary> 85/// <summary>Indicates an <see cref="IBinaryOperation"/>. Use <see cref="Binary"/> instead.</summary>
Generated\Operations.Generated.cs (3)
10396public override IOperation VisitBinaryOperator(IBinaryOperation operation, object? argument) 10881public virtual void VisitBinaryOperator(IBinaryOperation operation) => DefaultVisit(operation); 11017public virtual TResult? VisitBinaryOperator(IBinaryOperation operation, TArgument argument) => DefaultVisit(operation, argument);
Operations\ControlFlowGraphBuilder.cs (16)
2135private static bool IsConditional(IBinaryOperation operation) 2147public override IOperation VisitBinaryOperator(IBinaryOperation operation, int? captureIdForResult) 2187var stack = ArrayBuilder<(IBinaryOperation, EvalStackFrame)>.GetInstance(); 2195if (leftOperand is not IBinaryOperation binary || IsConditional(binary)) 2252private static bool CalculateAndOrSense(IBinaryOperation binOp, bool sense) 2268private IOperation VisitBinaryConditionalOperator(IBinaryOperation binOp, bool sense, int? captureIdForResult, 2284private IOperation VisitNullableBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2390private IOperation VisitObjectBinaryConditionalOperator(IBinaryOperation binOp) 2445private IOperation VisitDynamicBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2545private IOperation VisitUserDefinedBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2634private IOperation VisitShortCircuitingOperator(IBinaryOperation condition, bool sense, bool stopSense, bool stopValue, 2710var binOp = (IBinaryOperation)condition; 2732private static bool IsBooleanConditionalOperator(IBinaryOperation binOp) 2774if (IsBooleanConditionalOperator((IBinaryOperation)condition)) 2789else if (top.condition is IBinaryOperation binOp && IsBooleanConditionalOperator(binOp))
Operations\Loops\ForToLoopOperationInfo.cs (4)
11public readonly IBinaryOperation Addition; 12public readonly IBinaryOperation Subtraction; 16public ForToLoopOperationUserDefinedInfo(IBinaryOperation addition, IBinaryOperation subtraction, IOperation lessThanOrEqual, IOperation greaterThanOrEqual)
Operations\OperationMapBuilder.cs (2)
34public override object? VisitBinaryOperator([DisallowNull] IBinaryOperation? operation, Dictionary<SyntaxNode, IOperation> argument) 42if (operation.LeftOperand is IBinaryOperation nested)
Microsoft.CodeAnalysis.CodeStyle (10)
AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (2)
35var operation = (IBinaryOperation)context.Operation;
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
319if (operation.Parent is IBinaryOperation)
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
216if (condition is not IBinaryOperation binaryOperator)
HashCodeAnalyzer.OperationDeconstructor.cs (3)
59case IBinaryOperation topBinary: 65topBinary.LeftOperand is IBinaryOperation leftBinary && 104if (conditional.Condition is IBinaryOperation binary &&
ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
Microsoft.CodeAnalysis.CodeStyle.Fixes (3)
SyntaxGeneratorExtensions_Negate.cs (3)
150if (operation is not IBinaryOperation binaryOperation) 354IBinaryOperation binaryOperation, 383IBinaryOperation binaryOperation,
Microsoft.CodeAnalysis.CSharp (3)
Operations\CSharpOperationFactory.cs (3)
1416IBinaryOperation createBoundUserDefinedConditionalLogicalOperator(BoundUserDefinedConditionalLogicalOperator boundBinaryOperator, IOperation left, IOperation right) 1440private IBinaryOperation CreateBoundBinaryOperatorOperation(BoundBinaryOperator boundBinaryOperator, IOperation left, IOperation right) 1486static IBinaryOperation createBoundBinaryOperatorOperation(
Microsoft.CodeAnalysis.CSharp.CodeStyle (15)
CastSimplifier.cs (2)
767if (operation.UnwrapImplicitConversion() is IBinaryOperation binaryOperation) 1235if (operation is IBinaryOperation { OperatorMethod: not null })
CSharpUseIndexOperatorDiagnosticAnalyzer.cs (1)
171!IsSubtraction(argumentValue, out var subtraction))
CSharpUsePatternCombinatorsAnalyzer.cs (9)
44case IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } op: 47case IBinaryOperation { OperatorKind: NotEquals } op: 50case IBinaryOperation { OperatorKind: ConditionalOr, Syntax: BinaryExpressionSyntax syntax } op: 53case IBinaryOperation { OperatorKind: ConditionalAnd, Syntax: BinaryExpressionSyntax syntax } op: 56case IBinaryOperation op when IsRelationalOperator(op.OperatorKind): 75private static AnalyzedPattern? ParseBinaryPattern(IBinaryOperation op, bool isDisjunctive, SyntaxToken token) 88private static ConstantResult DetermineConstant(IBinaryOperation op) 98private static AnalyzedPattern? ParseRelationalPattern(IBinaryOperation op) 113private static AnalyzedPattern? ParseConstantPattern(IBinaryOperation op)
CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
170if (!IsSubtraction(invocation.Arguments[1].Value, out var subtraction) ||
Helpers.cs (2)
51public static bool IsSubtraction(IOperation operation, [NotNullWhen(true)] out IBinaryOperation? subtraction) 53if (operation is IBinaryOperation binaryOperation &&
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (9)
ConvertToRecordHelpers.cs (8)
156if (operand is not IBinaryOperation 658if (operation is IBinaryOperation binOp) 737(true, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalAnd } andOp) 744(false, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalOr } orOp) 749(true, IBinaryOperation 757(false, IBinaryOperation 801(true, IBinaryOperation 813(false, IBinaryOperation
CSharpUseRangeOperatorCodeFixProvider.cs (1)
223if (IsSubtraction(rangeOperation, out var subtraction) &&
Microsoft.CodeAnalysis.CSharp.Features (22)
ConvertToRecordHelpers.cs (8)
156if (operand is not IBinaryOperation 658if (operation is IBinaryOperation binOp) 737(true, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalAnd } andOp) 744(false, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalOr } orOp) 749(true, IBinaryOperation 757(false, IBinaryOperation 801(true, IBinaryOperation 813(false, IBinaryOperation
CSharpUseIndexOperatorDiagnosticAnalyzer.cs (1)
171!IsSubtraction(argumentValue, out var subtraction))
CSharpUsePatternCombinatorsAnalyzer.cs (9)
44case IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } op: 47case IBinaryOperation { OperatorKind: NotEquals } op: 50case IBinaryOperation { OperatorKind: ConditionalOr, Syntax: BinaryExpressionSyntax syntax } op: 53case IBinaryOperation { OperatorKind: ConditionalAnd, Syntax: BinaryExpressionSyntax syntax } op: 56case IBinaryOperation op when IsRelationalOperator(op.OperatorKind): 75private static AnalyzedPattern? ParseBinaryPattern(IBinaryOperation op, bool isDisjunctive, SyntaxToken token) 88private static ConstantResult DetermineConstant(IBinaryOperation op) 98private static AnalyzedPattern? ParseRelationalPattern(IBinaryOperation op) 113private static AnalyzedPattern? ParseConstantPattern(IBinaryOperation op)
CSharpUseRangeOperatorCodeFixProvider.cs (1)
223if (IsSubtraction(rangeOperation, out var subtraction) &&
CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
170if (!IsSubtraction(invocation.Arguments[1].Value, out var subtraction) ||
J\s\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\Helpers.cs\Helpers.cs (2)
51public static bool IsSubtraction(IOperation operation, [NotNullWhen(true)] out IBinaryOperation? subtraction) 53if (operation is IBinaryOperation binaryOperation &&
Microsoft.CodeAnalysis.CSharp.Workspaces (2)
CastSimplifier.cs (2)
767if (operation.UnwrapImplicitConversion() is IBinaryOperation binaryOperation) 1235if (operation is IBinaryOperation { OperatorMethod: not null })
Microsoft.CodeAnalysis.Features (21)
AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (2)
35var operation = (IBinaryOperation)context.Operation;
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
319if (operation.Parent is IBinaryOperation)
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
216if (condition is not IBinaryOperation binaryOperator)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.Analyzer.cs (12)
200if (operation is IBinaryOperation { OperatorKind: ConditionalOr } op) 246private ConstantResult DetermineConstant(IBinaryOperation op) 273case IBinaryOperation { OperatorKind: ConditionalAnd } op 277case IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } op: 287case IBinaryOperation { OperatorKind: NotEquals } op 291case IBinaryOperation op 297case IBinaryOperation { OperatorKind: ConditionalAnd } op 339private AnalyzedPattern? ParseRelationalPattern(IBinaryOperation op) 367private (SyntaxNode Lower, SyntaxNode Higher) GetRangeBounds(IBinaryOperation op) 370{ LeftOperand: IBinaryOperation left, RightOperand: IBinaryOperation right }) 388private static (BoundKind Kind, IOperation Expression, IOperation Value) GetRangeBound(IBinaryOperation op)
HashCodeAnalyzer.OperationDeconstructor.cs (3)
59case IBinaryOperation topBinary: 65topBinary.LeftOperand is IBinaryOperation leftBinary && 104if (conditional.Condition is IBinaryOperation binary &&
InitializeParameter\AbstractAddParameterCheckCodeRefactoringProvider.cs (1)
219if (condition is IBinaryOperation binaryOperator)
ValueTracking\ValueTracker.OperationCollector.cs (1)
246or IBinaryOperation
Microsoft.CodeAnalysis.Test.Utilities (18)
Compilation\ControlFlowGraphVerifier.cs (3)
982if (reference.Parent is IBinaryOperation binOp) 1900var binary = (IBinaryOperation)n;
Compilation\OperationTreeVerifier.cs (2)
1177public override void VisitBinaryOperator(IBinaryOperation operation) 1179LogString(nameof(IBinaryOperation));
Compilation\TestOperationVisitor.cs (1)
742public override void VisitBinaryOperator(IBinaryOperation operation)
Diagnostics\OperationTestAnalyzer.cs (12)
154IBinaryOperation condition = (IBinaryOperation)forCondition; 245IBinaryOperation advanceOperation = (IBinaryOperation)advanceAssignment.Value; 1515IBinaryOperation binary = (IBinaryOperation)operationContext.Operation; 1569var binary = (IBinaryOperation)operationContext.Operation; 1608var binary = (IBinaryOperation)operationContext.Operation; 1788var binary = (IBinaryOperation)operation;
Microsoft.CodeAnalysis.VisualBasic (4)
Operations\VisualBasicOperationFactory.vb (4)
583Private Function CreateBoundUserDefinedBinaryOperatorOperation(boundUserDefinedBinaryOperator As BoundUserDefinedBinaryOperator) As IBinaryOperation 621Private Function CreateBoundUserDefinedShortCircuitingOperatorOperation(boundUserDefinedShortCircuitingOperator As BoundUserDefinedShortCircuitingOperator) As IBinaryOperation 1181userDefinedInfo = New ForToLoopOperationUserDefinedInfo(DirectCast(Operation.SetParentOperation(Create(operatorsOpt.Addition), Nothing), IBinaryOperation), 1182DirectCast(Operation.SetParentOperation(Create(operatorsOpt.Subtraction), Nothing), IBinaryOperation),
Microsoft.CodeAnalysis.Workspaces (6)
ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
SyntaxGeneratorExtensions_Negate.cs (3)
150if (operation is not IBinaryOperation binaryOperation) 354IBinaryOperation binaryOperation, 383IBinaryOperation binaryOperation,
Roslyn.Compilers.VisualBasic.IOperation.UnitTests (4)
IOperation\IOperationTests.vb (4)
66Dim add1 As IBinaryOperation = DirectCast(assignment1.Value, IBinaryOperation) 99Dim add2 As IBinaryOperation = DirectCast(assignment2.Value, IBinaryOperation)