189 references to BetterResult
Microsoft.CodeAnalysis.CSharp (189)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (16)
720return BetterResult.Equal; 727return BetterResult.Neither; 729return leftWins ? BetterResult.Left : BetterResult.Right; 759return BetterResult.Equal; 766return BetterResult.Neither; 768return leftWins ? BetterResult.Left : BetterResult.Right; 789private static int? UniqueBestValidIndex<T>(ImmutableArray<T> items, Func<T, bool> valid, Func<T, T, BetterResult> better) 814BetterResult result = better(candidateItem, currentItem); 816if (result == BetterResult.Equal) 821else if (result == BetterResult.Neither) 829else if (result == BetterResult.Right) 856BetterResult result = better(candidateItem, currentItem); 857if (result != BetterResult.Left && result != BetterResult.Equal)
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (40)
1087var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo); 1088if (better == BetterResult.Left) 1092else if (better == BetterResult.Right) 1121var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1122if (better == BetterResult.Right) 1127else if (better != BetterResult.Left) 1143var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo); 1144if (better != BetterResult.Left) 1154private BetterResult BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1160return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ? BetterResult.Left : BetterResult.Right; 1163BetterResult leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo); 1164BetterResult rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo); 1185if (leftBetter == BetterResult.Left && rightBetter != BetterResult.Right || 1186leftBetter != BetterResult.Right && rightBetter == BetterResult.Left) 1188return BetterResult.Left; 1191if (leftBetter == BetterResult.Right && rightBetter != BetterResult.Left || 1192leftBetter != BetterResult.Left && rightBetter == BetterResult.Right) 1194return BetterResult.Right; 1226BetterResult result = MoreSpecificOperator(op1, op2, ref useSiteInfo); 1227if (result == BetterResult.Left || result == BetterResult.Right) 1240return BetterResult.Right; 1244return BetterResult.Left; 1249BetterResult valOverInPreference; 1253valOverInPreference = BetterResult.Left; 1257valOverInPreference = BetterResult.Right; 1261valOverInPreference = BetterResult.Neither; 1266if (valOverInPreference == BetterResult.Right) 1268return BetterResult.Neither; 1272valOverInPreference = BetterResult.Left; 1277if (valOverInPreference == BetterResult.Left) 1279return BetterResult.Neither; 1283valOverInPreference = BetterResult.Right; 1290private BetterResult MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1336BetterResult result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (17)
115var better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo); 116if (better == BetterResult.Left) 120else if (better == BetterResult.Right) 148var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 149if (better == BetterResult.Right) 154else if (better != BetterResult.Left) 170var better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo); 171if (better != BetterResult.Left) 181private BetterResult BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 186BetterResult better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo); 188if (better == BetterResult.Left || better == BetterResult.Right) 218return BetterResult.Right; 222return BetterResult.Left; 229return BetterResult.Left; 233return BetterResult.Right; 236return BetterResult.Neither;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (116)
1458var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1459if (better == BetterResult.Right) 1464else if (better != BetterResult.Left) 1485var better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo); 1486if (better != BetterResult.Left) 1568var better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo); 1569if (better == BetterResult.Left) 1573else if (better == BetterResult.Right) 1608results[i] = BetterResult.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo) 1669private BetterResult BetterFunctionMember<TMember>( 1685return BetterResult.Left; 1687return BetterResult.Right; 1700return hasAnyRefOmittedArgument1 ? BetterResult.Right : BetterResult.Left; 1708private BetterResult BetterFunctionMember<TMember>( 1728BetterResult result = BetterResult.Neither; 1765BetterResult r; 1790if (r == BetterResult.Neither) 1807if (result == BetterResult.Neither) 1830result = BetterResult.Neither; 1851result = BetterResult.Neither; 1857Debug.Assert(result == BetterResult.Left || result == BetterResult.Right); 1864if (result != BetterResult.Neither) 1947return BetterResult.Right; 1953return BetterResult.Left; 1962return BetterResult.Left; 1966return BetterResult.Right; 1978return BetterResult.Left; 1983return BetterResult.Right; 1991return BetterResult.Left; 1996return BetterResult.Right; 2014return BetterResult.Left; 2019return BetterResult.Right; 2031return BetterResult.Left; 2036return BetterResult.Right; 2073if (result != BetterResult.Neither) 2093return BetterResult.Left; 2098return BetterResult.Right; 2107return (m1ModifierCount < m2ModifierCount) ? BetterResult.Left : BetterResult.Right; 2137private static BetterResult PreferValOverInOrRefInterpolatedHandlerParameters<TMember>( 2145BetterResult valOverInOrRefInterpolatedHandlerPreference = BetterResult.Neither; 2167if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Right) 2169return BetterResult.Neither; 2173valOverInOrRefInterpolatedHandlerPreference = BetterResult.Left; 2178if (valOverInOrRefInterpolatedHandlerPreference == BetterResult.Left) 2180return BetterResult.Neither; 2184valOverInOrRefInterpolatedHandlerPreference = BetterResult.Right; 2234private static BetterResult MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2241var result = BetterResult.Neither; 2244var r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo); 2245if (r == BetterResult.Neither) 2249else if (result == BetterResult.Neither) 2259return BetterResult.Neither; 2266private static BetterResult MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2276return BetterResult.Right; 2281return BetterResult.Left; 2286return BetterResult.Neither; 2320return BetterResult.Neither; 2335return BetterResult.Neither; 2348var result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo); 2354private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2368private BetterResult BetterConversionFromExpression( 2407return conv1.Kind == ConversionKind.Identity ? BetterResult.Left : BetterResult.Neither; 2411return conv2.Kind == ConversionKind.Identity ? BetterResult.Right : BetterResult.Neither; 2416return BetterResult.Neither; 2424private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither) 2431return BetterResult.Neither; 2443return BetterResult.Neither; 2464return BetterResult.Neither; 2466return BetterResult.Left; 2468return BetterResult.Right; 2477return BetterResult.Left; 2479return BetterResult.Right; 2493okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, t1, t2, ref useSiteInfo, false); 2494return BetterResult.Left; 2499okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, t1, t2, ref useSiteInfo, false); 2500return BetterResult.Right; 2505return BetterResult.Left; 2507return BetterResult.Right; 2701private BetterResult BetterConversionTarget( 2711private BetterResult BetterConversionTargetCore( 2719return BetterResult.Neither; 2726private BetterResult BetterConversionTarget( 2738private BetterResult BetterConversionTargetCore( 2753return BetterResult.Neither; 2767return BetterResult.Neither; 2771okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Left, lambdaOpt, type1, type2, ref useSiteInfo, true); 2772return BetterResult.Left; 2777okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(BetterResult.Right, lambdaOpt, type1, type2, ref useSiteInfo, true); 2778return BetterResult.Right; 2795return BetterResult.Neither; 2800return BetterResult.Neither; 2821BetterResult delegateResult = BetterResult.Neither; 2828delegateResult = BetterResult.Left; 2834delegateResult = BetterResult.Right; 2837if (delegateResult == BetterResult.Neither) 2850if (delegateResult == BetterResult.Left) 2854return BetterResult.Neither; 2857else if (delegateResult == BetterResult.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2)) 2859return BetterResult.Neither; 2868return BetterResult.Neither; 2873return BetterResult.Neither; 2885return BetterResult.Left; 2890return BetterResult.Right; 2893return BetterResult.Neither; 2907private bool CanDowngradeConversionFromLambdaToNeither(BetterResult currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis) 2959Debug.Assert(currentResult == BetterResult.Right); 2964Debug.Assert(currentResult == BetterResult.Left);