218 references to BetterResult
Microsoft.CodeAnalysis.CSharp (218)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (16)
737return BetterResult.Equal; 744return BetterResult.Neither; 746return leftWins ? BetterResult.Left : BetterResult.Right; 776return BetterResult.Equal; 783return BetterResult.Neither; 785return leftWins ? BetterResult.Left : BetterResult.Right; 806private static int? UniqueBestValidIndex<T>(ImmutableArray<T> items, Func<T, bool> valid, Func<T, T, BetterResult> better) 831BetterResult result = better(candidateItem, currentItem); 833if (result == BetterResult.Equal) 838else if (result == BetterResult.Neither) 846else if (result == BetterResult.Right) 873BetterResult result = better(candidateItem, currentItem); 874if (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)
1820var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1821if (better == BetterResult.Right) 1826else if (better != BetterResult.Left) 1847var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1848if (better != BetterResult.Left) 2022var better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo); 2023if (better == BetterResult.Left) 2027else if (better == BetterResult.Right) 2062results[i] = BetterResult.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo) 2097private BetterResult BetterFunctionMember<TMember>( 2113return BetterResult.Left; 2115return BetterResult.Right; 2128return hasAnyRefOmittedArgument1 ? BetterResult.Right : BetterResult.Left; 2136private BetterResult BetterFunctionMember<TMember>( 2156BetterResult result = BetterResult.Neither; 2191BetterResult r; 2216if (r == BetterResult.Neither) 2233if (result == BetterResult.Neither) 2256result = BetterResult.Neither; 2277result = BetterResult.Neither; 2283Debug.Assert(result == BetterResult.Left || result == BetterResult.Right); 2290if (result != BetterResult.Neither) 2371return BetterResult.Right; 2377return BetterResult.Left; 2386return BetterResult.Left; 2390return BetterResult.Right; 2402return BetterResult.Left; 2407return BetterResult.Right; 2415return BetterResult.Left; 2420return BetterResult.Right; 2438return BetterResult.Left; 2443return BetterResult.Right; 2455return BetterResult.Left; 2460return BetterResult.Right; 2495if (result != BetterResult.Neither) 2515return BetterResult.Left; 2520return BetterResult.Right; 2529return (m1ModifierCount < m2ModifierCount) ? BetterResult.Left : BetterResult.Right; 2535if (result != BetterResult.Neither) 2565var betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo); 2566if (betterResult != BetterResult.Neither) 2574return BetterResult.Neither; 2616static BetterResult preferValOverInOrRefInterpolatedHandlerParameters( 2623BetterResult valOverInOrRefInterpolatedHandlerPreference = BetterResult.Neither; 2648if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Right) 2650return BetterResult.Neither; 2654valOverInOrRefInterpolatedHandlerPreference = BetterResult.Left; 2659if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Left) 2661return BetterResult.Neither; 2665valOverInOrRefInterpolatedHandlerPreference = BetterResult.Right; 2752private static BetterResult MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2759var result = BetterResult.Neither; 2762var r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo); 2763if (r == BetterResult.Neither) 2767else if (result == BetterResult.Neither) 2777return BetterResult.Neither; 2784private static BetterResult MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2794return BetterResult.Right; 2799return BetterResult.Left; 2804return BetterResult.Neither; 2838return BetterResult.Neither; 2853return BetterResult.Neither; 2866var result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo); 2872private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2886private BetterResult BetterConversionFromExpression( 2925return conv1.Kind == ConversionKind.Identity ? BetterResult.Left : BetterResult.Neither; 2929return conv2.Kind == ConversionKind.Identity ? BetterResult.Right : BetterResult.Neither; 2934return BetterResult.Neither; 2942private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither) 2949return BetterResult.Neither; 2961return BetterResult.Neither; 2982return BetterResult.Neither; 2984return BetterResult.Left; 2986return BetterResult.Right; 2995return BetterResult.Left; 2997return BetterResult.Right; 3011okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, t1, t2, ref useSiteInfo, false); 3012return BetterResult.Left; 3017okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, t1, t2, ref useSiteInfo, false); 3018return BetterResult.Right; 3023return BetterResult.Left; 3025return BetterResult.Right; 3039return BetterResult.Right; 3041return BetterResult.Left; 3049private BetterResult BetterCollectionExpressionConversion( 3062return BetterResult.Left; 3066return BetterResult.Right; 3069return BetterResult.Neither; 3083private BetterResult BetterCollectionExpressionConversion( 3110return BetterResult.Left; 3112return BetterResult.Right; 3129var betterResult = BetterResult.Neither; 3140BetterResult elementBetterResult; 3150if (elementBetterResult == BetterResult.Neither) 3155if (betterResult != BetterResult.Neither) 3159return BetterResult.Neither; 3180return BetterResult.Left; 3184return BetterResult.Right; 3188return BetterResult.Neither; 3227private BetterResult BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 3453private BetterResult BetterConversionTargetCore( 3461return BetterResult.Neither; 3468private BetterResult BetterConversionTarget( 3480private BetterResult BetterConversionTargetCore( 3495return BetterResult.Neither; 3503return BetterResult.Left; 3507return BetterResult.Right; 3515return BetterResult.Neither; 3530return BetterResult.Neither; 3534okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, type1, type2, ref useSiteInfo, true); 3535return BetterResult.Left; 3540okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, type1, type2, ref useSiteInfo, true); 3541return BetterResult.Right; 3558return BetterResult.Neither; 3563return BetterResult.Neither; 3584BetterResult delegateResult = BetterResult.Neither; 3591delegateResult = BetterResult.Left; 3597delegateResult = BetterResult.Right; 3600if (delegateResult == BetterResult.Neither) 3613if (delegateResult == BetterResult.Left) 3617return BetterResult.Neither; 3620else if (delegateResult == BetterResult.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2)) 3622return BetterResult.Neither; 3631return BetterResult.Neither; 3636return BetterResult.Neither; 3648return BetterResult.Left; 3653return BetterResult.Right; 3656return BetterResult.Neither; 3686private bool CanDowngradeConversionFromLambdaToNeither(BetterResult currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis) 3738Debug.Assert(currentResult == BetterResult.Right); 3743Debug.Assert(currentResult == BetterResult.Left);