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)
1148var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo); 1149if (better == BetterResult.Left) 1153else if (better == BetterResult.Right) 1182var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1183if (better == BetterResult.Right) 1188else if (better != BetterResult.Left) 1204var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1205if (better != BetterResult.Left) 1215private BetterResult BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1221return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ? BetterResult.Left : BetterResult.Right; 1224BetterResult leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo); 1225BetterResult rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo); 1246if (leftBetter == BetterResult.Left && rightBetter != BetterResult.Right || 1247leftBetter != BetterResult.Right && rightBetter == BetterResult.Left) 1249return BetterResult.Left; 1252if (leftBetter == BetterResult.Right && rightBetter != BetterResult.Left || 1253leftBetter != BetterResult.Left && rightBetter == BetterResult.Right) 1255return BetterResult.Right; 1272return BetterResult.Left; 1277return BetterResult.Right; 1300BetterResult result = MoreSpecificOperator(op1, op2, ref useSiteInfo); 1301if (result == BetterResult.Left || result == BetterResult.Right) 1314return BetterResult.Right; 1318return BetterResult.Left; 1323BetterResult valOverInPreference; 1327valOverInPreference = BetterResult.Left; 1331valOverInPreference = BetterResult.Right; 1335valOverInPreference = BetterResult.Neither; 1340if (valOverInPreference == BetterResult.Right) 1342return BetterResult.Neither; 1346valOverInPreference = BetterResult.Left; 1351if (valOverInPreference == BetterResult.Left) 1353return BetterResult.Neither; 1357valOverInPreference = BetterResult.Right; 1364private BetterResult MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1410BetterResult result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (19)
352var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo); 353if (better == BetterResult.Left) 357else if (better == BetterResult.Right) 385var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 386if (better == BetterResult.Right) 391else if (better != BetterResult.Left) 407var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 408if (better != BetterResult.Left) 418private BetterResult BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 423BetterResult better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo); 425if (better == BetterResult.Left || better == BetterResult.Right) 443return BetterResult.Left; 448return BetterResult.Right; 468return BetterResult.Right; 472return BetterResult.Left; 479return BetterResult.Left; 483return BetterResult.Right; 486return BetterResult.Neither;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (141)
1811var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1812if (better == BetterResult.Right) 1817else if (better != BetterResult.Left) 1838var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1839if (better != BetterResult.Left) 2013var better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo); 2014if (better == BetterResult.Left) 2018else if (better == BetterResult.Right) 2053results[i] = BetterResult.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo) 2110private BetterResult BetterFunctionMember<TMember>( 2126return BetterResult.Left; 2128return BetterResult.Right; 2141return hasAnyRefOmittedArgument1 ? BetterResult.Right : BetterResult.Left; 2149private BetterResult BetterFunctionMember<TMember>( 2169BetterResult result = BetterResult.Neither; 2204BetterResult r; 2229if (r == BetterResult.Neither) 2246if (result == BetterResult.Neither) 2269result = BetterResult.Neither; 2290result = BetterResult.Neither; 2296Debug.Assert(result == BetterResult.Left || result == BetterResult.Right); 2303if (result != BetterResult.Neither) 2384return BetterResult.Right; 2390return BetterResult.Left; 2399return BetterResult.Left; 2403return BetterResult.Right; 2415return BetterResult.Left; 2420return BetterResult.Right; 2428return BetterResult.Left; 2433return BetterResult.Right; 2451return BetterResult.Left; 2456return BetterResult.Right; 2468return BetterResult.Left; 2473return BetterResult.Right; 2508if (result != BetterResult.Neither) 2528return BetterResult.Left; 2533return BetterResult.Right; 2542return (m1ModifierCount < m2ModifierCount) ? BetterResult.Left : BetterResult.Right; 2548if (result != BetterResult.Neither) 2578var betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo); 2579if (betterResult != BetterResult.Neither) 2587return BetterResult.Neither; 2635private static BetterResult PreferValOverInOrRefInterpolatedHandlerParameters<TMember>( 2643BetterResult valOverInOrRefInterpolatedHandlerPreference = BetterResult.Neither; 2665if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Right) 2667return BetterResult.Neither; 2671valOverInOrRefInterpolatedHandlerPreference = BetterResult.Left; 2676if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Left) 2678return BetterResult.Neither; 2682valOverInOrRefInterpolatedHandlerPreference = BetterResult.Right; 2733private static BetterResult MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2740var result = BetterResult.Neither; 2743var r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo); 2744if (r == BetterResult.Neither) 2748else if (result == BetterResult.Neither) 2758return BetterResult.Neither; 2765private static BetterResult MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2775return BetterResult.Right; 2780return BetterResult.Left; 2785return BetterResult.Neither; 2819return BetterResult.Neither; 2834return BetterResult.Neither; 2847var result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo); 2853private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2867private BetterResult BetterConversionFromExpression( 2906return conv1.Kind == ConversionKind.Identity ? BetterResult.Left : BetterResult.Neither; 2910return conv2.Kind == ConversionKind.Identity ? BetterResult.Right : BetterResult.Neither; 2915return BetterResult.Neither; 2923private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither) 2930return BetterResult.Neither; 2942return BetterResult.Neither; 2963return BetterResult.Neither; 2965return BetterResult.Left; 2967return BetterResult.Right; 2976return BetterResult.Left; 2978return BetterResult.Right; 2992okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, t1, t2, ref useSiteInfo, false); 2993return BetterResult.Left; 2998okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, t1, t2, ref useSiteInfo, false); 2999return BetterResult.Right; 3004return BetterResult.Left; 3006return BetterResult.Right; 3020return BetterResult.Right; 3022return BetterResult.Left; 3030private BetterResult BetterCollectionExpressionConversion( 3043return BetterResult.Left; 3047return BetterResult.Right; 3050return BetterResult.Neither; 3064private BetterResult BetterCollectionExpressionConversion( 3091return BetterResult.Left; 3093return BetterResult.Right; 3110var betterResult = BetterResult.Neither; 3121BetterResult elementBetterResult; 3131if (elementBetterResult == BetterResult.Neither) 3136if (betterResult != BetterResult.Neither) 3140return BetterResult.Neither; 3161return BetterResult.Left; 3165return BetterResult.Right; 3169return BetterResult.Neither; 3208private BetterResult BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 3434private BetterResult BetterConversionTargetCore( 3442return BetterResult.Neither; 3449private BetterResult BetterConversionTarget( 3461private BetterResult BetterConversionTargetCore( 3476return BetterResult.Neither; 3484return BetterResult.Left; 3488return BetterResult.Right; 3496return BetterResult.Neither; 3511return BetterResult.Neither; 3515okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, type1, type2, ref useSiteInfo, true); 3516return BetterResult.Left; 3521okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, type1, type2, ref useSiteInfo, true); 3522return BetterResult.Right; 3539return BetterResult.Neither; 3544return BetterResult.Neither; 3565BetterResult delegateResult = BetterResult.Neither; 3572delegateResult = BetterResult.Left; 3578delegateResult = BetterResult.Right; 3581if (delegateResult == BetterResult.Neither) 3594if (delegateResult == BetterResult.Left) 3598return BetterResult.Neither; 3601else if (delegateResult == BetterResult.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2)) 3603return BetterResult.Neither; 3612return BetterResult.Neither; 3617return BetterResult.Neither; 3629return BetterResult.Left; 3634return BetterResult.Right; 3637return BetterResult.Neither; 3667private bool CanDowngradeConversionFromLambdaToNeither(BetterResult currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis) 3719Debug.Assert(currentResult == BetterResult.Right); 3724Debug.Assert(currentResult == BetterResult.Left);