218 references to BetterResult
Microsoft.CodeAnalysis.CSharp (218)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (16)
735return BetterResult.Equal; 742return BetterResult.Neither; 744return leftWins ? BetterResult.Left : BetterResult.Right; 774return BetterResult.Equal; 781return BetterResult.Neither; 783return leftWins ? BetterResult.Left : BetterResult.Right; 804private static int? UniqueBestValidIndex<T>(ImmutableArray<T> items, Func<T, bool> valid, Func<T, T, BetterResult> better) 829BetterResult result = better(candidateItem, currentItem); 831if (result == BetterResult.Equal) 836else if (result == BetterResult.Neither) 844else if (result == BetterResult.Right) 871BetterResult result = better(candidateItem, currentItem); 872if (result != BetterResult.Left && result != BetterResult.Equal)
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (42)
1156var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo); 1157if (better == BetterResult.Left) 1161else if (better == BetterResult.Right) 1190var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1191if (better == BetterResult.Right) 1196else if (better != BetterResult.Left) 1212var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1213if (better != BetterResult.Left) 1223private BetterResult BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1229return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ? BetterResult.Left : BetterResult.Right; 1232BetterResult leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo); 1233BetterResult rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo); 1254if (leftBetter == BetterResult.Left && rightBetter != BetterResult.Right || 1255leftBetter != BetterResult.Right && rightBetter == BetterResult.Left) 1257return BetterResult.Left; 1260if (leftBetter == BetterResult.Right && rightBetter != BetterResult.Left || 1261leftBetter != BetterResult.Left && rightBetter == BetterResult.Right) 1263return BetterResult.Right; 1280return BetterResult.Left; 1285return BetterResult.Right; 1308BetterResult result = MoreSpecificOperator(op1, op2, ref useSiteInfo); 1309if (result == BetterResult.Left || result == BetterResult.Right) 1322return BetterResult.Right; 1326return BetterResult.Left; 1331BetterResult valOverInPreference; 1335valOverInPreference = BetterResult.Left; 1339valOverInPreference = BetterResult.Right; 1343valOverInPreference = BetterResult.Neither; 1348if (valOverInPreference == BetterResult.Right) 1350return BetterResult.Neither; 1354valOverInPreference = BetterResult.Left; 1359if (valOverInPreference == BetterResult.Left) 1361return BetterResult.Neither; 1365valOverInPreference = BetterResult.Right; 1372private BetterResult MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1418BetterResult result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (19)
361var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo); 362if (better == BetterResult.Left) 366else if (better == BetterResult.Right) 394var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 395if (better == BetterResult.Right) 400else if (better != BetterResult.Left) 416var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 417if (better != BetterResult.Left) 427private BetterResult BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 432BetterResult better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo); 434if (better == BetterResult.Left || better == BetterResult.Right) 452return BetterResult.Left; 457return BetterResult.Right; 477return BetterResult.Right; 481return BetterResult.Left; 488return BetterResult.Left; 492return BetterResult.Right; 495return BetterResult.Neither;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (141)
1817var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1818if (better == BetterResult.Right) 1823else if (better != BetterResult.Left) 1844var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1845if (better != BetterResult.Left) 2019var better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo); 2020if (better == BetterResult.Left) 2024else if (better == BetterResult.Right) 2059results[i] = BetterResult.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo) 2094private BetterResult BetterFunctionMember<TMember>( 2110return BetterResult.Left; 2112return BetterResult.Right; 2125return hasAnyRefOmittedArgument1 ? BetterResult.Right : BetterResult.Left; 2133private BetterResult BetterFunctionMember<TMember>( 2153BetterResult result = BetterResult.Neither; 2188BetterResult r; 2213if (r == BetterResult.Neither) 2230if (result == BetterResult.Neither) 2253result = BetterResult.Neither; 2274result = BetterResult.Neither; 2280Debug.Assert(result == BetterResult.Left || result == BetterResult.Right); 2287if (result != BetterResult.Neither) 2368return BetterResult.Right; 2374return BetterResult.Left; 2383return BetterResult.Left; 2387return BetterResult.Right; 2399return BetterResult.Left; 2404return BetterResult.Right; 2412return BetterResult.Left; 2417return BetterResult.Right; 2435return BetterResult.Left; 2440return BetterResult.Right; 2452return BetterResult.Left; 2457return BetterResult.Right; 2492if (result != BetterResult.Neither) 2512return BetterResult.Left; 2517return BetterResult.Right; 2526return (m1ModifierCount < m2ModifierCount) ? BetterResult.Left : BetterResult.Right; 2532if (result != BetterResult.Neither) 2562var betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo); 2563if (betterResult != BetterResult.Neither) 2571return BetterResult.Neither; 2613static BetterResult preferValOverInOrRefInterpolatedHandlerParameters( 2620BetterResult valOverInOrRefInterpolatedHandlerPreference = BetterResult.Neither; 2645if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Right) 2647return BetterResult.Neither; 2651valOverInOrRefInterpolatedHandlerPreference = BetterResult.Left; 2656if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Left) 2658return BetterResult.Neither; 2662valOverInOrRefInterpolatedHandlerPreference = BetterResult.Right; 2749private static BetterResult MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2756var result = BetterResult.Neither; 2759var r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo); 2760if (r == BetterResult.Neither) 2764else if (result == BetterResult.Neither) 2774return BetterResult.Neither; 2781private static BetterResult MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2791return BetterResult.Right; 2796return BetterResult.Left; 2801return BetterResult.Neither; 2835return BetterResult.Neither; 2850return BetterResult.Neither; 2863var result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo); 2869private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2883private BetterResult BetterConversionFromExpression( 2922return conv1.Kind == ConversionKind.Identity ? BetterResult.Left : BetterResult.Neither; 2926return conv2.Kind == ConversionKind.Identity ? BetterResult.Right : BetterResult.Neither; 2931return BetterResult.Neither; 2939private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither) 2946return BetterResult.Neither; 2958return BetterResult.Neither; 2979return BetterResult.Neither; 2981return BetterResult.Left; 2983return BetterResult.Right; 2992return BetterResult.Left; 2994return BetterResult.Right; 3008okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, t1, t2, ref useSiteInfo, false); 3009return BetterResult.Left; 3014okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, t1, t2, ref useSiteInfo, false); 3015return BetterResult.Right; 3020return BetterResult.Left; 3022return BetterResult.Right; 3036return BetterResult.Right; 3038return BetterResult.Left; 3046private BetterResult BetterCollectionExpressionConversion( 3059return BetterResult.Left; 3063return BetterResult.Right; 3066return BetterResult.Neither; 3080private BetterResult BetterCollectionExpressionConversion( 3107return BetterResult.Left; 3109return BetterResult.Right; 3126var betterResult = BetterResult.Neither; 3137BetterResult elementBetterResult; 3147if (elementBetterResult == BetterResult.Neither) 3152if (betterResult != BetterResult.Neither) 3156return BetterResult.Neither; 3177return BetterResult.Left; 3181return BetterResult.Right; 3185return BetterResult.Neither; 3224private BetterResult BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 3450private BetterResult BetterConversionTargetCore( 3458return BetterResult.Neither; 3465private BetterResult BetterConversionTarget( 3477private BetterResult BetterConversionTargetCore( 3492return BetterResult.Neither; 3500return BetterResult.Left; 3504return BetterResult.Right; 3512return BetterResult.Neither; 3527return BetterResult.Neither; 3531okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, type1, type2, ref useSiteInfo, true); 3532return BetterResult.Left; 3537okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, type1, type2, ref useSiteInfo, true); 3538return BetterResult.Right; 3555return BetterResult.Neither; 3560return BetterResult.Neither; 3581BetterResult delegateResult = BetterResult.Neither; 3588delegateResult = BetterResult.Left; 3594delegateResult = BetterResult.Right; 3597if (delegateResult == BetterResult.Neither) 3610if (delegateResult == BetterResult.Left) 3614return BetterResult.Neither; 3617else if (delegateResult == BetterResult.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2)) 3619return BetterResult.Neither; 3628return BetterResult.Neither; 3633return BetterResult.Neither; 3645return BetterResult.Left; 3650return BetterResult.Right; 3653return BetterResult.Neither; 3683private bool CanDowngradeConversionFromLambdaToNeither(BetterResult currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis) 3735Debug.Assert(currentResult == BetterResult.Right); 3740Debug.Assert(currentResult == BetterResult.Left);