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)
365var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo); 366if (better == BetterResult.Left) 370else if (better == BetterResult.Right) 398var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 399if (better == BetterResult.Right) 404else if (better != BetterResult.Left) 420var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 421if (better != BetterResult.Left) 431private BetterResult BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 436BetterResult better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo); 438if (better == BetterResult.Left || better == BetterResult.Right) 456return BetterResult.Left; 461return BetterResult.Right; 481return BetterResult.Right; 485return BetterResult.Left; 492return BetterResult.Left; 496return BetterResult.Right; 499return 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) 2088private BetterResult BetterFunctionMember<TMember>( 2104return BetterResult.Left; 2106return BetterResult.Right; 2119return hasAnyRefOmittedArgument1 ? BetterResult.Right : BetterResult.Left; 2127private BetterResult BetterFunctionMember<TMember>( 2147BetterResult result = BetterResult.Neither; 2182BetterResult r; 2207if (r == BetterResult.Neither) 2224if (result == BetterResult.Neither) 2247result = BetterResult.Neither; 2268result = BetterResult.Neither; 2274Debug.Assert(result == BetterResult.Left || result == BetterResult.Right); 2281if (result != BetterResult.Neither) 2362return BetterResult.Right; 2368return BetterResult.Left; 2377return BetterResult.Left; 2381return BetterResult.Right; 2393return BetterResult.Left; 2398return BetterResult.Right; 2406return BetterResult.Left; 2411return BetterResult.Right; 2429return BetterResult.Left; 2434return BetterResult.Right; 2446return BetterResult.Left; 2451return BetterResult.Right; 2486if (result != BetterResult.Neither) 2506return BetterResult.Left; 2511return BetterResult.Right; 2520return (m1ModifierCount < m2ModifierCount) ? BetterResult.Left : BetterResult.Right; 2526if (result != BetterResult.Neither) 2556var betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo); 2557if (betterResult != BetterResult.Neither) 2565return BetterResult.Neither; 2607static BetterResult preferValOverInOrRefInterpolatedHandlerParameters( 2614BetterResult valOverInOrRefInterpolatedHandlerPreference = BetterResult.Neither; 2636if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Right) 2638return BetterResult.Neither; 2642valOverInOrRefInterpolatedHandlerPreference = BetterResult.Left; 2647if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Left) 2649return BetterResult.Neither; 2653valOverInOrRefInterpolatedHandlerPreference = BetterResult.Right; 2730private static BetterResult MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2737var result = BetterResult.Neither; 2740var r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo); 2741if (r == BetterResult.Neither) 2745else if (result == BetterResult.Neither) 2755return BetterResult.Neither; 2762private static BetterResult MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2772return BetterResult.Right; 2777return BetterResult.Left; 2782return BetterResult.Neither; 2816return BetterResult.Neither; 2831return BetterResult.Neither; 2844var result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo); 2850private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2864private BetterResult BetterConversionFromExpression( 2903return conv1.Kind == ConversionKind.Identity ? BetterResult.Left : BetterResult.Neither; 2907return conv2.Kind == ConversionKind.Identity ? BetterResult.Right : BetterResult.Neither; 2912return BetterResult.Neither; 2920private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither) 2927return BetterResult.Neither; 2939return BetterResult.Neither; 2960return BetterResult.Neither; 2962return BetterResult.Left; 2964return BetterResult.Right; 2973return BetterResult.Left; 2975return BetterResult.Right; 2989okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, t1, t2, ref useSiteInfo, false); 2990return BetterResult.Left; 2995okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, t1, t2, ref useSiteInfo, false); 2996return BetterResult.Right; 3001return BetterResult.Left; 3003return BetterResult.Right; 3017return BetterResult.Right; 3019return BetterResult.Left; 3027private BetterResult BetterCollectionExpressionConversion( 3040return BetterResult.Left; 3044return BetterResult.Right; 3047return BetterResult.Neither; 3061private BetterResult BetterCollectionExpressionConversion( 3088return BetterResult.Left; 3090return BetterResult.Right; 3107var betterResult = BetterResult.Neither; 3118BetterResult elementBetterResult; 3128if (elementBetterResult == BetterResult.Neither) 3133if (betterResult != BetterResult.Neither) 3137return BetterResult.Neither; 3158return BetterResult.Left; 3162return BetterResult.Right; 3166return BetterResult.Neither; 3205private BetterResult BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 3431private BetterResult BetterConversionTargetCore( 3439return BetterResult.Neither; 3446private BetterResult BetterConversionTarget( 3458private BetterResult BetterConversionTargetCore( 3473return BetterResult.Neither; 3481return BetterResult.Left; 3485return BetterResult.Right; 3493return BetterResult.Neither; 3508return BetterResult.Neither; 3512okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, type1, type2, ref useSiteInfo, true); 3513return BetterResult.Left; 3518okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, type1, type2, ref useSiteInfo, true); 3519return BetterResult.Right; 3536return BetterResult.Neither; 3541return BetterResult.Neither; 3562BetterResult delegateResult = BetterResult.Neither; 3569delegateResult = BetterResult.Left; 3575delegateResult = BetterResult.Right; 3578if (delegateResult == BetterResult.Neither) 3591if (delegateResult == BetterResult.Left) 3595return BetterResult.Neither; 3598else if (delegateResult == BetterResult.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2)) 3600return BetterResult.Neither; 3609return BetterResult.Neither; 3614return BetterResult.Neither; 3626return BetterResult.Left; 3631return BetterResult.Right; 3634return BetterResult.Neither; 3664private bool CanDowngradeConversionFromLambdaToNeither(BetterResult currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis) 3716Debug.Assert(currentResult == BetterResult.Right); 3721Debug.Assert(currentResult == BetterResult.Left);