BoundTree\BoundTreeRewriter.cs (2)
252return node.Update(node.OperatorKind, VisitBinaryOperatorData(node), node.ResultKind, (BoundExpression)this.Visit(node.Left), (BoundExpression)this.Visit(node.Right), this.VisitType(node.Type));
282left = binary.Update(binary.OperatorKind, VisitBinaryOperatorData(binary), binary.ResultKind, left, right, type);
CodeGen\Optimizer.cs (8)
1519var isLogical = (binary.OperatorKind & BinaryOperatorKind.Logical) != 0;
1536Debug.Assert(!binary.OperatorKind.IsDynamic());
1537left = binary.Update(binary.OperatorKind, binary.ConstantValueOpt, binary.BinaryOperatorMethod, binary.ConstrainedToType, binary.ResultKind, left, right, type);
1558var isLogical = (node.OperatorKind & BinaryOperatorKind.Logical) != 0;
1571Debug.Assert(!node.OperatorKind.IsDynamic());
1572return node.Update(node.OperatorKind, node.ConstantValueOpt, node.BinaryOperatorMethod, node.ConstrainedToType, node.ResultKind, left, right, node.Type);
2113Debug.Assert(!binary.OperatorKind.IsDynamic());
2114left = binary.Update(binary.OperatorKind, binary.ConstantValueOpt, binary.BinaryOperatorMethod, binary.ConstrainedToType, binary.ResultKind, left, right, type);
FlowAnalysis\NullableWalker.cs (8)
5167&& binary.OperatorKind.Operator() is BinaryOperatorKind.Equal or BinaryOperatorKind.NotEqual)
5238=> binary.OperatorKind.Operator() == BinaryOperatorKind.Equal;
5270if (binary.OperatorKind.Operator() is not (BinaryOperatorKind.Equal or BinaryOperatorKind.NotEqual))
5294if (binary.OperatorKind.IsUserDefined())
5342var inferredResult = ReinferAndVisitBinaryOperator(binary, binary.OperatorKind, binary.BinaryOperatorMethod, binary.Type, binary.Left, leftOperand, leftConversion, leftType, binary.Right, rightOperand, rightConversion, rightType);
5552BinaryOperatorKind op = binary.OperatorKind.Operator();
12288getBinaryConditionalOperatorInfo(node.OperatorKind, out bool isAnd, out bool isBool);
12296SetResultType(node, InferResultNullability(node.OperatorKind, node.BinaryOperatorMethod, node.Type, leftType, rightType));
Generated\BoundNodes.xml.Generated.cs (3)
1681if (operatorKind != this.OperatorKind || data != this.Data || resultKind != this.ResultKind || left != this.Left || right != this.Right || !TypeSymbol.Equals(type, this.Type, TypeCompareKind.ConsiderEverything))
11109return node.Update(node.OperatorKind, node.Data, node.ResultKind, left, right, type);
15492new TreeDumperNode("operatorKind", node.OperatorKind, null),
Lowering\DiagnosticsPass_Warnings.cs (16)
272CheckForBitwiseOrSignExtend(node, node.OperatorKind, node.Left, node.Right);
278if (_inExpressionLambda && node.OperatorKind.Operator() == BinaryOperatorKind.UnsignedRightShift)
308if (!node.OperatorKind.IsComparison())
327if (node.OperatorKind == BinaryOperatorKind.ObjectEqual || node.OperatorKind == BinaryOperatorKind.ObjectNotEqual)
330if (node.Left.Type.SpecialType == SpecialType.System_Object && !IsExplicitCast(node.Left) && !(node.Left.ConstantValueOpt != null && node.Left.ConstantValueOpt.IsNull) && ConvertedHasEqual(node.OperatorKind, node.Right, out t))
335else if (node.Right.Type.SpecialType == SpecialType.System_Object && !IsExplicitCast(node.Right) && !(node.Right.ConstantValueOpt != null && node.Right.ConstantValueOpt.IsNull) && ConvertedHasEqual(node.OperatorKind, node.Left, out t))
384Debug.Assert(node.OperatorKind.IsComparison());
751if (node.OperatorKind.OperandTypes() != BinaryOperatorKind.NullableNull)
756switch (node.OperatorKind.Operator())
765string always = node.OperatorKind.Operator() == BinaryOperatorKind.NotEqual ? "true" : "false";
784if (!node.OperatorKind.IsLifted())
789switch (node.OperatorKind.Operator())
814string always = node.OperatorKind.Operator() == BinaryOperatorKind.NotEqual ? "true" : "false";
818Error(node.OperatorKind.IsUserDefined() ? ErrorCode.WRN_NubExprIsConstBool2 : ErrorCode.WRN_NubExprIsConstBool, node, always, node.Left.Type.GetNullableUnderlyingType(), GetTypeForLiftedComparisonWarning(node.Right));
822Error(node.OperatorKind.IsUserDefined() ? ErrorCode.WRN_NubExprIsConstBool2 : ErrorCode.WRN_NubExprIsConstBool, node, always, node.Right.Type.GetNullableUnderlyingType(), GetTypeForLiftedComparisonWarning(node.Left));