public static BinaryOperatorAnalysisResult Inapplicable(BinaryOperatorSignature signature, Conversion leftConversion, Conversion rightConversion) { return new BinaryOperatorAnalysisResult(OperatorAnalysisResultKind.Inapplicable, signature, leftConversion, rightConversion); }
private BetterResult BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right) { var leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType); var rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType); if (leftBetter == BetterResult.Neither) { return rightBetter; } if (rightBetter == BetterResult.Neither) { return leftBetter; } if (leftBetter == rightBetter) { return leftBetter; } return BetterResult.Neither; }
private BinaryOperatorAnalysisResult(OperatorAnalysisResultKind kind, BinaryOperatorSignature signature, Conversion leftConversion, Conversion rightConversion) : this() { this.Kind = kind; this.Signature = signature; this.LeftConversion = leftConversion; this.RightConversion = rightConversion; }
private bool IsApplicable(BinaryOperatorSignature binaryOperator, BoundExpression left, BoundExpression right) { return Conversions.ClassifyConversion(left, binaryOperator.LeftType).IsImplicit && Conversions.ClassifyConversion(right, binaryOperator.RightType).IsImplicit; }