218 references to BetterResult
Microsoft.CodeAnalysis.CSharp (218)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (16)
737
return
BetterResult
.Equal;
744
return
BetterResult
.Neither;
746
return leftWins ?
BetterResult
.Left :
BetterResult
.Right;
776
return
BetterResult
.Equal;
783
return
BetterResult
.Neither;
785
return leftWins ?
BetterResult
.Left :
BetterResult
.Right;
806
private static int? UniqueBestValidIndex<T>(ImmutableArray<T> items, Func<T, bool> valid, Func<T, T,
BetterResult
> better)
831
BetterResult
result = better(candidateItem, currentItem);
833
if (result ==
BetterResult
.Equal)
838
else if (result ==
BetterResult
.Neither)
846
else if (result ==
BetterResult
.Right)
873
BetterResult
result = better(candidateItem, currentItem);
874
if (result !=
BetterResult
.Left && result !=
BetterResult
.Equal)
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (42)
1156
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo);
1157
if (better ==
BetterResult
.Left)
1161
else if (better ==
BetterResult
.Right)
1190
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1191
if (better ==
BetterResult
.Right)
1196
else if (better !=
BetterResult
.Left)
1212
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1213
if (better !=
BetterResult
.Left)
1223
private
BetterResult
BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1229
return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ?
BetterResult
.Left :
BetterResult
.Right;
1232
BetterResult
leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo);
1233
BetterResult
rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo);
1254
if (leftBetter ==
BetterResult
.Left && rightBetter !=
BetterResult
.Right ||
1255
leftBetter !=
BetterResult
.Right && rightBetter ==
BetterResult
.Left)
1257
return
BetterResult
.Left;
1260
if (leftBetter ==
BetterResult
.Right && rightBetter !=
BetterResult
.Left ||
1261
leftBetter !=
BetterResult
.Left && rightBetter ==
BetterResult
.Right)
1263
return
BetterResult
.Right;
1280
return
BetterResult
.Left;
1285
return
BetterResult
.Right;
1308
BetterResult
result = MoreSpecificOperator(op1, op2, ref useSiteInfo);
1309
if (result ==
BetterResult
.Left || result ==
BetterResult
.Right)
1322
return
BetterResult
.Right;
1326
return
BetterResult
.Left;
1331
BetterResult
valOverInPreference;
1335
valOverInPreference =
BetterResult
.Left;
1339
valOverInPreference =
BetterResult
.Right;
1343
valOverInPreference =
BetterResult
.Neither;
1348
if (valOverInPreference ==
BetterResult
.Right)
1350
return
BetterResult
.Neither;
1354
valOverInPreference =
BetterResult
.Left;
1359
if (valOverInPreference ==
BetterResult
.Left)
1361
return
BetterResult
.Neither;
1365
valOverInPreference =
BetterResult
.Right;
1372
private
BetterResult
MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1418
BetterResult
result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (19)
361
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo);
362
if (better ==
BetterResult
.Left)
366
else if (better ==
BetterResult
.Right)
394
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
395
if (better ==
BetterResult
.Right)
400
else if (better !=
BetterResult
.Left)
416
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
417
if (better !=
BetterResult
.Left)
427
private
BetterResult
BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
432
BetterResult
better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo);
434
if (better ==
BetterResult
.Left || better ==
BetterResult
.Right)
452
return
BetterResult
.Left;
457
return
BetterResult
.Right;
477
return
BetterResult
.Right;
481
return
BetterResult
.Left;
488
return
BetterResult
.Left;
492
return
BetterResult
.Right;
495
return
BetterResult
.Neither;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (141)
1820
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1821
if (better ==
BetterResult
.Right)
1826
else if (better !=
BetterResult
.Left)
1847
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1848
if (better !=
BetterResult
.Left)
2022
var
better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo);
2023
if (better ==
BetterResult
.Left)
2027
else if (better ==
BetterResult
.Right)
2062
results[i] =
BetterResult
.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo)
2097
private
BetterResult
BetterFunctionMember<TMember>(
2113
return
BetterResult
.Left;
2115
return
BetterResult
.Right;
2128
return hasAnyRefOmittedArgument1 ?
BetterResult
.Right :
BetterResult
.Left;
2136
private
BetterResult
BetterFunctionMember<TMember>(
2156
BetterResult
result =
BetterResult
.Neither;
2191
BetterResult
r;
2216
if (r ==
BetterResult
.Neither)
2233
if (result ==
BetterResult
.Neither)
2256
result =
BetterResult
.Neither;
2277
result =
BetterResult
.Neither;
2283
Debug.Assert(result ==
BetterResult
.Left || result ==
BetterResult
.Right);
2290
if (result !=
BetterResult
.Neither)
2371
return
BetterResult
.Right;
2377
return
BetterResult
.Left;
2386
return
BetterResult
.Left;
2390
return
BetterResult
.Right;
2402
return
BetterResult
.Left;
2407
return
BetterResult
.Right;
2415
return
BetterResult
.Left;
2420
return
BetterResult
.Right;
2438
return
BetterResult
.Left;
2443
return
BetterResult
.Right;
2455
return
BetterResult
.Left;
2460
return
BetterResult
.Right;
2495
if (result !=
BetterResult
.Neither)
2515
return
BetterResult
.Left;
2520
return
BetterResult
.Right;
2529
return (m1ModifierCount < m2ModifierCount) ?
BetterResult
.Left :
BetterResult
.Right;
2535
if (result !=
BetterResult
.Neither)
2565
var
betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo);
2566
if (betterResult !=
BetterResult
.Neither)
2574
return
BetterResult
.Neither;
2616
static
BetterResult
preferValOverInOrRefInterpolatedHandlerParameters(
2623
BetterResult
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Neither;
2648
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Right)
2650
return
BetterResult
.Neither;
2654
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Left;
2659
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Left)
2661
return
BetterResult
.Neither;
2665
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Right;
2752
private static
BetterResult
MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2759
var
result =
BetterResult
.Neither;
2762
var
r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo);
2763
if (r ==
BetterResult
.Neither)
2767
else if (result ==
BetterResult
.Neither)
2777
return
BetterResult
.Neither;
2784
private static
BetterResult
MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2794
return
BetterResult
.Right;
2799
return
BetterResult
.Left;
2804
return
BetterResult
.Neither;
2838
return
BetterResult
.Neither;
2853
return
BetterResult
.Neither;
2866
var
result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo);
2872
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2886
private
BetterResult
BetterConversionFromExpression(
2925
return conv1.Kind == ConversionKind.Identity ?
BetterResult
.Left :
BetterResult
.Neither;
2929
return conv2.Kind == ConversionKind.Identity ?
BetterResult
.Right :
BetterResult
.Neither;
2934
return
BetterResult
.Neither;
2942
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither)
2949
return
BetterResult
.Neither;
2961
return
BetterResult
.Neither;
2982
return
BetterResult
.Neither;
2984
return
BetterResult
.Left;
2986
return
BetterResult
.Right;
2995
return
BetterResult
.Left;
2997
return
BetterResult
.Right;
3011
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, t1, t2, ref useSiteInfo, false);
3012
return
BetterResult
.Left;
3017
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, t1, t2, ref useSiteInfo, false);
3018
return
BetterResult
.Right;
3023
return
BetterResult
.Left;
3025
return
BetterResult
.Right;
3039
return
BetterResult
.Right;
3041
return
BetterResult
.Left;
3049
private
BetterResult
BetterCollectionExpressionConversion(
3062
return
BetterResult
.Left;
3066
return
BetterResult
.Right;
3069
return
BetterResult
.Neither;
3083
private
BetterResult
BetterCollectionExpressionConversion(
3110
return
BetterResult
.Left;
3112
return
BetterResult
.Right;
3129
var
betterResult =
BetterResult
.Neither;
3140
BetterResult
elementBetterResult;
3150
if (elementBetterResult ==
BetterResult
.Neither)
3155
if (betterResult !=
BetterResult
.Neither)
3159
return
BetterResult
.Neither;
3180
return
BetterResult
.Left;
3184
return
BetterResult
.Right;
3188
return
BetterResult
.Neither;
3227
private
BetterResult
BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3453
private
BetterResult
BetterConversionTargetCore(
3461
return
BetterResult
.Neither;
3468
private
BetterResult
BetterConversionTarget(
3480
private
BetterResult
BetterConversionTargetCore(
3495
return
BetterResult
.Neither;
3503
return
BetterResult
.Left;
3507
return
BetterResult
.Right;
3515
return
BetterResult
.Neither;
3530
return
BetterResult
.Neither;
3534
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, type1, type2, ref useSiteInfo, true);
3535
return
BetterResult
.Left;
3540
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, type1, type2, ref useSiteInfo, true);
3541
return
BetterResult
.Right;
3558
return
BetterResult
.Neither;
3563
return
BetterResult
.Neither;
3584
BetterResult
delegateResult =
BetterResult
.Neither;
3591
delegateResult =
BetterResult
.Left;
3597
delegateResult =
BetterResult
.Right;
3600
if (delegateResult ==
BetterResult
.Neither)
3613
if (delegateResult ==
BetterResult
.Left)
3617
return
BetterResult
.Neither;
3620
else if (delegateResult ==
BetterResult
.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2))
3622
return
BetterResult
.Neither;
3631
return
BetterResult
.Neither;
3636
return
BetterResult
.Neither;
3648
return
BetterResult
.Left;
3653
return
BetterResult
.Right;
3656
return
BetterResult
.Neither;
3686
private bool CanDowngradeConversionFromLambdaToNeither(
BetterResult
currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis)
3738
Debug.Assert(currentResult ==
BetterResult
.Right);
3743
Debug.Assert(currentResult ==
BetterResult
.Left);