1 implementation of IBinaryOperation
Microsoft.CodeAnalysis (1)
Generated\Operations.Generated.cs (1)
5680internal sealed partial class BinaryOperation : Operation, IBinaryOperation
286 references to IBinaryOperation
GenerateDocumentationAndConfigFiles (7)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
244public static bool IsComparisonOperator(this IBinaryOperation binaryOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (3)
147if (operation is IBinaryOperation binaryOperation) 378IBinaryOperation binaryOperation, 407IBinaryOperation binaryOperation,
ILLink.RoslynAnalyzer (2)
DataFlow\FeatureChecksVisitor.cs (1)
97public override FeatureChecksValue VisitBinaryOperator(IBinaryOperation operation, StateValue state)
TrimAnalysis\TrimAnalysisVisitor.cs (1)
197public override MultiValue VisitBinaryOperator(IBinaryOperation operation, StateValue argument)
Microsoft.AspNetCore.Mvc.Api.Analyzers (2)
ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs (2)
138var binaryOperation = (IBinaryOperation)condition;
Microsoft.CodeAnalysis (27)
Generated\OperationKind.Generated.cs (2)
84/// <summary>Indicates an <see cref="IBinaryOperation"/>.</summary> 86/// <summary>Indicates an <see cref="IBinaryOperation"/>. Use <see cref="Binary"/> instead.</summary>
Generated\Operations.Generated.cs (3)
11018public override IOperation VisitBinaryOperator(IBinaryOperation operation, object? argument) 11523public virtual void VisitBinaryOperator(IBinaryOperation operation) => DefaultVisit(operation); 11664public virtual TResult? VisitBinaryOperator(IBinaryOperation operation, TArgument argument) => DefaultVisit(operation, argument);
Operations\ControlFlowGraphBuilder.cs (16)
2162private static bool IsConditional(IBinaryOperation operation) 2174public override IOperation VisitBinaryOperator(IBinaryOperation operation, int? captureIdForResult) 2214var stack = ArrayBuilder<(IBinaryOperation, EvalStackFrame)>.GetInstance(); 2222if (leftOperand is not IBinaryOperation binary || IsConditional(binary)) 2279private static bool CalculateAndOrSense(IBinaryOperation binOp, bool sense) 2295private IOperation VisitBinaryConditionalOperator(IBinaryOperation binOp, bool sense, int? captureIdForResult, 2311private IOperation VisitNullableBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2417private IOperation VisitObjectBinaryConditionalOperator(IBinaryOperation binOp) 2472private IOperation VisitDynamicBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2572private IOperation VisitUserDefinedBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2661private IOperation VisitShortCircuitingOperator(IBinaryOperation condition, bool sense, bool stopSense, bool stopValue, 2737var binOp = (IBinaryOperation)condition; 2759private static bool IsBooleanConditionalOperator(IBinaryOperation binOp) 2801if (IsBooleanConditionalOperator((IBinaryOperation)condition)) 2816else 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)
35public override object? VisitBinaryOperator([DisallowNull] IBinaryOperation? operation, Dictionary<SyntaxNode, IOperation> argument) 43if (operation.LeftOperand is IBinaryOperation nested)
Microsoft.CodeAnalysis.Analyzers (17)
MetaAnalyzers\CompareSymbolsCorrectlyAnalyzer.cs (2)
127var binary = (IBinaryOperation)context.Operation;
MetaAnalyzers\Fixers\CompareSymbolsCorrectlyFix.cs (2)
74IBinaryOperation binaryOperation => await ConvertToEqualsAsync(document, semanticModel, binaryOperation, cancellationToken).ConfigureAwait(false), 257private static async Task<Document> ConvertToEqualsAsync(Document document, SemanticModel semanticModel, IBinaryOperation binaryOperation, CancellationToken cancellationToken)
MetaAnalyzers\PreferIsKindAnalyzer.cs (2)
72var operation = (IBinaryOperation)context.Operation;
src\roslyn\src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\Core\SymbolIsBannedAnalyzerBase.cs (1)
132case IBinaryOperation binary:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (1)
208countBinaryOperator(operation, ((IBinaryOperation)operation).OperatorKind);
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (2)
336var binaryOperation = (IBinaryOperation)operation;
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
244public static bool IsComparisonOperator(this IBinaryOperation binaryOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (3)
147if (operation is IBinaryOperation binaryOperation) 378IBinaryOperation binaryOperation, 407IBinaryOperation binaryOperation,
Microsoft.CodeAnalysis.AnalyzerUtilities (15)
src\1e7e9f16bf7f1945\ValueContentAnalysis.ValueContentDataFlowOperationVisitor.cs (1)
224public override ValueContentAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\66dd3055a1c91c38\PointsToAnalysis.PointsToDataFlowOperationVisitor.cs (1)
903public override PointsToAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\683181b2796de991\ParameterValidationAnalysis.ParameterValidationDataFlowOperationVisitor.cs (1)
381public override ParameterValidationAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\a172c07bebba4cd8\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (1)
436public override DisposeAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (1)
208countBinaryOperator(operation, ((IBinaryOperation)operation).OperatorKind);
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (2)
336var binaryOperation = (IBinaryOperation)operation;
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
244public static bool IsComparisonOperator(this IBinaryOperation binaryOperation)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (4)
1648case IBinaryOperation binaryOperation: 1850protected virtual PredicateValueKind SetValueForComparisonOperator(IBinaryOperation operation, TAnalysisData targetAnalysisData) 3721public virtual TAbstractAnalysisValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument) 3726public sealed override TAbstractAnalysisValue VisitBinaryOperator(IBinaryOperation operation, object? argument)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
Microsoft.CodeAnalysis.CodeStyle (15)
src\9547feb31df4cc5d\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
369if (operation.Parent is IBinaryOperation)
src\roslyn\src\Analyzers\Core\Analyzers\Helpers\HashCodeAnalyzer\HashCodeAnalyzer.OperationDeconstructor.cs (3)
50case IBinaryOperation topBinary: 56topBinary.LeftOperand is IBinaryOperation leftBinary && 95if (conditional.Condition is IBinaryOperation binary &&
src\roslyn\src\Analyzers\Core\Analyzers\RemoveRedundantEquality\AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (2)
61var operation = (IBinaryOperation)context.Operation;
src\roslyn\src\Analyzers\Core\Analyzers\UseCompoundAssignment\AbstractUseCompoundAssignmentDiagnosticAnalyzer.cs (4)
151var operation = (IBinaryOperation)semanticModel.GetRequiredOperation(binaryExpression, cancellationToken); 171var operation = (IBinaryOperation)semanticModel.GetRequiredOperation(binaryExpression, cancellationToken);
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForAssignment\UseConditionalExpressionForAssignmentHelpers.cs (1)
163if (current is IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals } binaryOperation)
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
214if (condition is not IBinaryOperation binaryOperator)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\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)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (3)
147if (operation is IBinaryOperation binaryOperation) 378IBinaryOperation binaryOperation, 407IBinaryOperation binaryOperation,
Microsoft.CodeAnalysis.CSharp (3)
Operations\CSharpOperationFactory.cs (3)
1558IBinaryOperation createBoundUserDefinedConditionalLogicalOperator(BoundUserDefinedConditionalLogicalOperator boundBinaryOperator, IOperation left, IOperation right) 1582private IBinaryOperation CreateBoundBinaryOperatorOperation(BoundBinaryOperator boundBinaryOperator, IOperation left, IOperation right) 1619static IBinaryOperation createBoundBinaryOperatorOperation(
Microsoft.CodeAnalysis.CSharp.CodeStyle (16)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseIndexOperatorDiagnosticAnalyzer.cs (1)
170!IsSubtraction(argumentValue, out var subtraction))
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseRangeOperatorDiagnosticAnalyzer.cs (2)
185if (IsSubtraction(startOperation, out var subtraction)) 232if (!IsSubtraction(invocation.Arguments[1].Value, out var subtraction) ||
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\Helpers.cs (2)
53public static bool IsSubtraction(IOperation operation, [NotNullWhen(true)] out IBinaryOperation? subtraction) 55if (operation is IBinaryOperation { OperatorKind: BinaryOperatorKind.Subtract } binaryOperation)
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePatternCombinators\CSharpUsePatternCombinatorsAnalyzer.cs (9)
43case IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } op: 46case IBinaryOperation { OperatorKind: NotEquals } op: 49case IBinaryOperation { OperatorKind: ConditionalOr, Syntax: BinaryExpressionSyntax syntax } op: 52case IBinaryOperation { OperatorKind: ConditionalAnd, Syntax: BinaryExpressionSyntax syntax } op: 55case IBinaryOperation op when IsRelationalOperator(op.OperatorKind): 74private static AnalyzedPattern? ParseBinaryPattern(IBinaryOperation op, bool isDisjunctive, SyntaxToken token) 87private static ConstantResult DetermineConstant(IBinaryOperation op) 97private static AnalyzedPattern? ParseRelationalPattern(IBinaryOperation op) 112private static AnalyzedPattern? ParseConstantPattern(IBinaryOperation op)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (2)
1066if (operation.UnwrapImplicitConversion() is IBinaryOperation binaryOperation) 1582if (operation is IBinaryOperation { OperatorMethod: not null })
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (11)
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertToRecord\ConvertToRecordHelpers.cs (8)
156if (operand is not IBinaryOperation 659if (operation is IBinaryOperation binOp) 738(true, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalAnd } andOp) 745(false, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalOr } orOp) 750(true, IBinaryOperation 758(false, IBinaryOperation 802(true, IBinaryOperation 814(false, IBinaryOperation
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseIndexOrRangeOperator\CSharpUseRangeOperatorCodeFixProvider.cs (3)
161if (IsSubtraction(result.InvocationOperation.Arguments[0].Value, out var subtraction) && 175if (IsSubtraction(result.InvocationOperation.Arguments[1].Value, out var subtraction) && 279if (IsSubtraction(rangeOperation, out var subtraction) &&
Microsoft.CodeAnalysis.CSharp.Features (25)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseIndexOperatorDiagnosticAnalyzer.cs (1)
170!IsSubtraction(argumentValue, out var subtraction))
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseRangeOperatorDiagnosticAnalyzer.cs (2)
185if (IsSubtraction(startOperation, out var subtraction)) 232if (!IsSubtraction(invocation.Arguments[1].Value, out var subtraction) ||
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\Helpers.cs (2)
53public static bool IsSubtraction(IOperation operation, [NotNullWhen(true)] out IBinaryOperation? subtraction) 55if (operation is IBinaryOperation { OperatorKind: BinaryOperatorKind.Subtract } binaryOperation)
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePatternCombinators\CSharpUsePatternCombinatorsAnalyzer.cs (9)
43case IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } op: 46case IBinaryOperation { OperatorKind: NotEquals } op: 49case IBinaryOperation { OperatorKind: ConditionalOr, Syntax: BinaryExpressionSyntax syntax } op: 52case IBinaryOperation { OperatorKind: ConditionalAnd, Syntax: BinaryExpressionSyntax syntax } op: 55case IBinaryOperation op when IsRelationalOperator(op.OperatorKind): 74private static AnalyzedPattern? ParseBinaryPattern(IBinaryOperation op, bool isDisjunctive, SyntaxToken token) 87private static ConstantResult DetermineConstant(IBinaryOperation op) 97private static AnalyzedPattern? ParseRelationalPattern(IBinaryOperation op) 112private static AnalyzedPattern? ParseConstantPattern(IBinaryOperation op)
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertToRecord\ConvertToRecordHelpers.cs (8)
156if (operand is not IBinaryOperation 659if (operation is IBinaryOperation binOp) 738(true, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalAnd } andOp) 745(false, IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalOr } orOp) 750(true, IBinaryOperation 758(false, IBinaryOperation 802(true, IBinaryOperation 814(false, IBinaryOperation
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseIndexOrRangeOperator\CSharpUseRangeOperatorCodeFixProvider.cs (3)
161if (IsSubtraction(result.InvocationOperation.Arguments[0].Value, out var subtraction) && 175if (IsSubtraction(result.InvocationOperation.Arguments[1].Value, out var subtraction) && 279if (IsSubtraction(rangeOperation, out var subtraction) &&
Microsoft.CodeAnalysis.CSharp.NetAnalyzers (3)
Microsoft.NetCore.Analyzers\Runtime\CSharpUseSpanBasedStringConcat.cs (3)
14private protected override bool IsTopMostConcatOperation(IBinaryOperation binaryOperation) 17(binaryOperation.Parent is not IBinaryOperation parentBinary || !IsConcatOperation(parentBinary)); 19static bool IsConcatOperation(IBinaryOperation operation)
Microsoft.CodeAnalysis.CSharp.Workspaces (2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (2)
1066if (operation.UnwrapImplicitConversion() is IBinaryOperation binaryOperation) 1582if (operation is IBinaryOperation { OperatorMethod: not null })
Microsoft.CodeAnalysis.Features (27)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.Analyzer.cs (12)
209if (operation is IBinaryOperation { OperatorKind: ConditionalOr } op) 255private ConstantResult DetermineConstant(IBinaryOperation op) 282case IBinaryOperation { OperatorKind: ConditionalAnd } op 286case IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } op: 296case IBinaryOperation { OperatorKind: NotEquals } op 300case IBinaryOperation op 306case IBinaryOperation { OperatorKind: ConditionalAnd } op 348private AnalyzedPattern? ParseRelationalPattern(IBinaryOperation op) 376private (SyntaxNode Lower, SyntaxNode Higher) GetRangeBounds(IBinaryOperation op) 379{ LeftOperand: IBinaryOperation left, RightOperand: IBinaryOperation right }) 397private static (BoundKind Kind, IOperation Expression, IOperation Value) GetRangeBound(IBinaryOperation op)
InitializeParameter\AbstractAddParameterCheckCodeRefactoringProvider.cs (2)
267if (condition is IBinaryOperation binaryOperator) 307if (condition is IBinaryOperation { OperatorKind: BinaryOperatorKind.LessThan or BinaryOperatorKind.LessThanOrEqual or BinaryOperatorKind.GreaterThan or BinaryOperatorKind.GreaterThanOrEqual } binaryOperator &&
src\9547feb31df4cc5d\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
369if (operation.Parent is IBinaryOperation)
src\roslyn\src\Analyzers\Core\Analyzers\Helpers\HashCodeAnalyzer\HashCodeAnalyzer.OperationDeconstructor.cs (3)
50case IBinaryOperation topBinary: 56topBinary.LeftOperand is IBinaryOperation leftBinary && 95if (conditional.Condition is IBinaryOperation binary &&
src\roslyn\src\Analyzers\Core\Analyzers\RemoveRedundantEquality\AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (2)
61var operation = (IBinaryOperation)context.Operation;
src\roslyn\src\Analyzers\Core\Analyzers\UseCompoundAssignment\AbstractUseCompoundAssignmentDiagnosticAnalyzer.cs (4)
151var operation = (IBinaryOperation)semanticModel.GetRequiredOperation(binaryExpression, cancellationToken); 171var operation = (IBinaryOperation)semanticModel.GetRequiredOperation(binaryExpression, cancellationToken);
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForAssignment\UseConditionalExpressionForAssignmentHelpers.cs (1)
163if (current is IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals } binaryOperation)
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
214if (condition is not IBinaryOperation binaryOperator)
ValueTracking\ValueTracker.OperationCollector.cs (1)
240or IBinaryOperation
Microsoft.CodeAnalysis.NetAnalyzers (82)
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\EnumShouldNotHaveDuplicatedValues.cs (1)
123case IBinaryOperation { OperatorKind: not BinaryOperatorKind.Or }:
Microsoft.CodeQuality.Analyzers\Maintainability\AvoidDeadConditionalCode.cs (6)
83((op as IBinaryOperation)?.IsComparisonOperator() == true || 129var binaryOperation = (IBinaryOperation)operation; 132(binaryOperation.LeftOperand is not IBinaryOperation leftBinary || GetPredicateKind(leftBinary) == PredicateValueKind.Unknown) && 133(binaryOperation.RightOperand is not IBinaryOperation rightBinary || GetPredicateKind(rightBinary) == PredicateValueKind.Unknown)) 206if (operation is IBinaryOperation binaryOperation &&
Microsoft.CodeQuality.Analyzers\Maintainability\AvoidLengthCalculationWhenSlicingToEnd.cs (2)
96IBinaryOperation { OperatorKind: BinaryOperatorKind.Add or BinaryOperatorKind.Subtract } binaryOperation 136if (operation is IBinaryOperation binaryOperation)
Microsoft.NetCore.Analyzers\InteropServices\PlatformCompatibilityAnalyzer.cs (1)
1774pOperation.Parent is IBinaryOperation bo &&
Microsoft.NetCore.Analyzers\Performance\AvoidPotentiallyExpensiveCallWhenLogging.cs (1)
165if (operation is IBinaryOperation binaryOperation)
Microsoft.NetCore.Analyzers\Performance\PreferDictionaryTryMethodsOverContainsKeyGuardAnalyzer.cs (2)
293case IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalAnd } bAnd when guardsTruePath: 303case IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalOr } bOr when !guardsTruePath:
Microsoft.NetCore.Analyzers\Performance\PreferReadOnlySpanOverSpan.cs (1)
232case IBinaryOperation:
Microsoft.NetCore.Analyzers\Performance\RecommendCaseInsensitiveStringComparison.Analyzer.cs (3)
233IBinaryOperation binaryOperation = (IBinaryOperation)context.Operation; 298private static void AnalyzeBinaryOperation(OperationAnalysisContext context, IBinaryOperation binaryOperation, INamedTypeSymbol stringType)
Microsoft.NetCore.Analyzers\Performance\RecommendCaseInsensitiveStringComparison.Fixer.cs (2)
125else if (operation is IBinaryOperation binaryOperation && 185private Task<Document> FixBinaryAsync(SyntaxGenerator generator, Document doc, SyntaxNode root, IBinaryOperation binaryOperation,
Microsoft.NetCore.Analyzers\Performance\UseCountProperly.cs (4)
265if (parentOperation is IBinaryOperation parentBinaryOperation) 293private static bool AnalyzeParentBinaryOperation(IBinaryOperation parent, out bool useRightSide, out bool shouldNegate) 561private static bool IsLeftCountComparison(IBinaryOperation binaryOperation, out bool shouldNegate) 609private static bool IsRightCountComparison(IBinaryOperation binaryOperation, out bool shouldNegate)
Microsoft.NetCore.Analyzers\Performance\UseStartsWithInsteadOfIndexOfComparisonWithZero.cs (2)
98var binaryOperation = (IBinaryOperation)context.Operation;
Microsoft.NetCore.Analyzers\Runtime\AvoidRedundantRegexIsMatchBeforeMatch.cs (1)
417if (expression is IBinaryOperation binary)
Microsoft.NetCore.Analyzers\Runtime\DetectPreviewFeatureAnalyzer.cs (1)
824IBinaryOperation bOperation => bOperation.OperatorMethod,
Microsoft.NetCore.Analyzers\Runtime\LoggerMessageDefineAnalyzer.cs (1)
258case IBinaryOperation { OperatorKind: BinaryOperatorKind.Add } binary:
Microsoft.NetCore.Analyzers\Runtime\PreferStringContainsOverIndexOf.Fixer.cs (2)
39if (operation is not IBinaryOperation binaryOperation) 76async Task<Document> ReplaceBinaryOperationWithContains(Document document, SyntaxNode syntaxNode, ImmutableArray<IArgumentOperation> indexOfMethodArguments, IBinaryOperation binaryOperation, CancellationToken cancellationToken)
Microsoft.NetCore.Analyzers\Runtime\PreferStringContainsOverIndexOfAnalyzer.cs (3)
131if (parent is IBinaryOperation binaryOperation) 153if (parent is IBinaryOperation binaryOperation) 174static bool CheckOperatorKindAndOperand(IBinaryOperation binaryOperation, IOperation otherOperand)
Microsoft.NetCore.Analyzers\Runtime\PreventNumericIntPtrUIntPtrBehavioralChanges.cs (1)
79if (context.Operation is IBinaryOperation binaryOperation &&
Microsoft.NetCore.Analyzers\Runtime\TestForEmptyStringsUsingStringLength.cs (2)
63(IBinaryOperation)operationAnalysisContext.Operation, linqExpressionType, 99private static void AnalyzeBinaryExpression<TContext>(IBinaryOperation binaryOperation,
Microsoft.NetCore.Analyzers\Runtime\TestForNaNCorrectly.cs (2)
54var binaryOperatorExpression = (IBinaryOperation)operationAnalysisContext.Operation;
Microsoft.NetCore.Analyzers\Runtime\UseExceptionThrowHelpers.cs (5)
376else if (condition is IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } equalsOp) 407else if (condition is IBinaryOperation { OperatorKind: BinaryOperatorKind.ConditionalOr } orOp && 409orOp.RightOperand is IBinaryOperation { OperatorKind: BinaryOperatorKind.Equals } lengthCheckOperation) 471if (condition is IBinaryOperation binaryOperation) 537if (condition is IBinaryOperation binaryOperation)
Microsoft.NetCore.Analyzers\Runtime\UseSpanBasedStringConcat.cs (6)
37private protected abstract bool IsTopMostConcatOperation(IBinaryOperation binaryOperation); 66var binary = (IBinaryOperation)context.Operation; 74bool ShouldBeReported(IBinaryOperation topMostConcatOperation) 111internal static ImmutableArray<IOperation> FlattenBinaryOperation(IBinaryOperation root) 132public override void VisitBinaryOperator(IBinaryOperation operation)
Microsoft.NetCore.Analyzers\Runtime\UseSpanBasedStringConcat.Fixer.cs (1)
51if (model.GetOperation(concatExpressionSyntax, cancellationToken) is not IBinaryOperation concatOperation
Microsoft.NetCore.Analyzers\Runtime\UseStringEqualsOverStringCompare.cs (11)
19/// Reports a diagnostic on any <see cref="IBinaryOperation"/> that: 170/// If the specified <see cref="IBinaryOperation"/>: 181internal static IInvocationOperation? GetInvocationFromEqualityCheckWithLiteralZero(IBinaryOperation? binaryOperation) 217/// Returns true if the specified <see cref="IBinaryOperation"/>: 237var invocation = GetInvocationFromEqualityCheckWithLiteralZero(operation as IBinaryOperation) 245/// Returns true if the specified <see cref="IBinaryOperation"/>: 266var invocation = GetInvocationFromEqualityCheckWithLiteralZero(operation as IBinaryOperation) 277/// Returns true if the specified <see cref="IBinaryOperation"/>: 297var invocation = GetInvocationFromEqualityCheckWithLiteralZero(operation as IBinaryOperation) 305/// Returns <c>true</c> if the specified <paramref name="operation"/> is an <see cref="IBinaryOperation"/> or <see cref="IInvocationOperation"/>: 325var invocation = GetInvocationFromEqualityCheckWithLiteralZero(operation as IBinaryOperation)
Microsoft.NetCore.Analyzers\Runtime\UseStringEqualsOverStringCompare.Fixer.cs (5)
40if (violation is not (IBinaryOperation or IInvocationOperation)) 91/// <param name="violation">The <see cref="IBinaryOperation"/> or <see cref="IInvocationOperation"/> at the location reported by the analyzer.</param> 99/// <param name="violation">The <see cref="IBinaryOperation"/> or <see cref="IInvocationOperation"/> obtained at the location reported by the analyzer. 115IBinaryOperation b => UseStringEqualsOverStringCompare.GetInvocationFromEqualityCheckWithLiteralZero(b), 127if (equalsOrNotEqualsOperation is IBinaryOperation b)
Microsoft.NetCore.Analyzers\Usage\DoNotCompareSpanToNull.cs (2)
60var binaryOperation = (IBinaryOperation)context.Operation;
Microsoft.NetCore.Analyzers\Usage\ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly.cs (1)
98return operation.Value is IFieldReferenceOperation or ILiteralOperation or IBinaryOperation;
src\440320f3f10733a8\ValueContentAnalysis.ValueContentDataFlowOperationVisitor.cs (1)
223public override ValueContentAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\47c588c5b8785708\ParameterValidationAnalysis.ParameterValidationDataFlowOperationVisitor.cs (1)
379public override ParameterValidationAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\afc74d572e54ec72\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (1)
433public override DisposeAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\ffd9070534249528\PointsToAnalysis.PointsToDataFlowOperationVisitor.cs (1)
900public override PointsToAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (1)
210countBinaryOperator(operation, ((IBinaryOperation)operation).OperatorKind);
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (2)
338var binaryOperation = (IBinaryOperation)operation;
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
397public static bool IsComparisonOperator(this IBinaryOperation binaryOperation) 416public static bool IsAdditionOrSubstractionOperation(this IBinaryOperation binaryOperation, out char binaryOperator)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (4)
1645case IBinaryOperation binaryOperation: 1847protected virtual PredicateValueKind SetValueForComparisonOperator(IBinaryOperation operation, TAnalysisData targetAnalysisData) 3718public virtual TAbstractAnalysisValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument) 3723public sealed override TAbstractAnalysisValue VisitBinaryOperator(IBinaryOperation operation, object? argument)
Microsoft.CodeAnalysis.ResxSourceGenerator (7)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (1)
208countBinaryOperator(operation, ((IBinaryOperation)operation).OperatorKind);
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (2)
336var binaryOperation = (IBinaryOperation)operation;
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
244public static bool IsComparisonOperator(this IBinaryOperation binaryOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers (3)
Microsoft.NetCore.Analyzers\Runtime\BasicUseSpanBasedStringConcat.vb (3)
13Private Protected Overrides Function IsTopMostConcatOperation(binaryOperation As IBinaryOperation) As Boolean 18Dim parentBinaryOperation = TryCast(WalkUpImplicitConversionToObject(binaryOperation.Parent), IBinaryOperation) 27Private Shared Function IsStringConcatOperation(operation As IBinaryOperation) As Boolean
Microsoft.CodeAnalysis.Workspaces (6)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (3)
147if (operation is IBinaryOperation binaryOperation) 378IBinaryOperation binaryOperation, 407IBinaryOperation binaryOperation,
Roslyn.Diagnostics.Analyzers (11)
AbstractDoNotCopyValue.cs (1)
436public override void VisitBinaryOperator(IBinaryOperation operation)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (1)
208countBinaryOperator(operation, ((IBinaryOperation)operation).OperatorKind);
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (2)
336var binaryOperation = (IBinaryOperation)operation;
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
244public static bool IsComparisonOperator(this IBinaryOperation binaryOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFactsExtensions.cs (3)
70if (semanticModel.GetOperation(parentBinary) is IBinaryOperation parentBinaryOp && 71semanticModel.GetOperation(innerBinary) is IBinaryOperation innerBinaryOp) 84static bool IsArithmetic(IBinaryOperation op)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (3)
147if (operation is IBinaryOperation binaryOperation) 378IBinaryOperation binaryOperation, 407IBinaryOperation binaryOperation,
Roslyn.Diagnostics.CSharp.Analyzers (2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (2)
1066if (operation.UnwrapImplicitConversion() is IBinaryOperation binaryOperation) 1582if (operation is IBinaryOperation { OperatorMethod: not null })