214 references to BetterResult
Microsoft.CodeAnalysis.CSharp (214)
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 (40)
1117var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo); 1118if (better == BetterResult.Left) 1122else if (better == BetterResult.Right) 1151var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1152if (better == BetterResult.Right) 1157else if (better != BetterResult.Left) 1173var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1174if (better != BetterResult.Left) 1184private BetterResult BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1190return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ? BetterResult.Left : BetterResult.Right; 1193BetterResult leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo); 1194BetterResult rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo); 1215if (leftBetter == BetterResult.Left && rightBetter != BetterResult.Right || 1216leftBetter != BetterResult.Right && rightBetter == BetterResult.Left) 1218return BetterResult.Left; 1221if (leftBetter == BetterResult.Right && rightBetter != BetterResult.Left || 1222leftBetter != BetterResult.Left && rightBetter == BetterResult.Right) 1224return BetterResult.Right; 1256BetterResult result = MoreSpecificOperator(op1, op2, ref useSiteInfo); 1257if (result == BetterResult.Left || result == BetterResult.Right) 1270return BetterResult.Right; 1274return BetterResult.Left; 1279BetterResult valOverInPreference; 1283valOverInPreference = BetterResult.Left; 1287valOverInPreference = BetterResult.Right; 1291valOverInPreference = BetterResult.Neither; 1296if (valOverInPreference == BetterResult.Right) 1298return BetterResult.Neither; 1302valOverInPreference = BetterResult.Left; 1307if (valOverInPreference == BetterResult.Left) 1309return BetterResult.Neither; 1313valOverInPreference = BetterResult.Right; 1320private BetterResult MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1366BetterResult result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (17)
117var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo); 118if (better == BetterResult.Left) 122else if (better == BetterResult.Right) 150var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 151if (better == BetterResult.Right) 156else if (better != BetterResult.Left) 172var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 173if (better != BetterResult.Left) 183private BetterResult BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 188BetterResult better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo); 190if (better == BetterResult.Left || better == BetterResult.Right) 220return BetterResult.Right; 224return BetterResult.Left; 231return BetterResult.Left; 235return BetterResult.Right; 238return 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);