218 references to BetterResult
Microsoft.CodeAnalysis.CSharp (218)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (16)
735
return
BetterResult
.Equal;
742
return
BetterResult
.Neither;
744
return leftWins ?
BetterResult
.Left :
BetterResult
.Right;
774
return
BetterResult
.Equal;
781
return
BetterResult
.Neither;
783
return leftWins ?
BetterResult
.Left :
BetterResult
.Right;
804
private static int? UniqueBestValidIndex<T>(ImmutableArray<T> items, Func<T, bool> valid, Func<T, T,
BetterResult
> better)
829
BetterResult
result = better(candidateItem, currentItem);
831
if (result ==
BetterResult
.Equal)
836
else if (result ==
BetterResult
.Neither)
844
else if (result ==
BetterResult
.Right)
871
BetterResult
result = better(candidateItem, currentItem);
872
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)
1818
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1819
if (better ==
BetterResult
.Right)
1824
else if (better !=
BetterResult
.Left)
1845
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1846
if (better !=
BetterResult
.Left)
2020
var
better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo);
2021
if (better ==
BetterResult
.Left)
2025
else if (better ==
BetterResult
.Right)
2060
results[i] =
BetterResult
.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo)
2095
private
BetterResult
BetterFunctionMember<TMember>(
2111
return
BetterResult
.Left;
2113
return
BetterResult
.Right;
2126
return hasAnyRefOmittedArgument1 ?
BetterResult
.Right :
BetterResult
.Left;
2134
private
BetterResult
BetterFunctionMember<TMember>(
2154
BetterResult
result =
BetterResult
.Neither;
2189
BetterResult
r;
2214
if (r ==
BetterResult
.Neither)
2231
if (result ==
BetterResult
.Neither)
2254
result =
BetterResult
.Neither;
2275
result =
BetterResult
.Neither;
2281
Debug.Assert(result ==
BetterResult
.Left || result ==
BetterResult
.Right);
2288
if (result !=
BetterResult
.Neither)
2369
return
BetterResult
.Right;
2375
return
BetterResult
.Left;
2384
return
BetterResult
.Left;
2388
return
BetterResult
.Right;
2400
return
BetterResult
.Left;
2405
return
BetterResult
.Right;
2413
return
BetterResult
.Left;
2418
return
BetterResult
.Right;
2436
return
BetterResult
.Left;
2441
return
BetterResult
.Right;
2453
return
BetterResult
.Left;
2458
return
BetterResult
.Right;
2493
if (result !=
BetterResult
.Neither)
2513
return
BetterResult
.Left;
2518
return
BetterResult
.Right;
2527
return (m1ModifierCount < m2ModifierCount) ?
BetterResult
.Left :
BetterResult
.Right;
2533
if (result !=
BetterResult
.Neither)
2563
var
betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo);
2564
if (betterResult !=
BetterResult
.Neither)
2572
return
BetterResult
.Neither;
2614
static
BetterResult
preferValOverInOrRefInterpolatedHandlerParameters(
2621
BetterResult
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Neither;
2646
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Right)
2648
return
BetterResult
.Neither;
2652
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Left;
2657
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Left)
2659
return
BetterResult
.Neither;
2663
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Right;
2750
private static
BetterResult
MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2757
var
result =
BetterResult
.Neither;
2760
var
r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo);
2761
if (r ==
BetterResult
.Neither)
2765
else if (result ==
BetterResult
.Neither)
2775
return
BetterResult
.Neither;
2782
private static
BetterResult
MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2792
return
BetterResult
.Right;
2797
return
BetterResult
.Left;
2802
return
BetterResult
.Neither;
2836
return
BetterResult
.Neither;
2851
return
BetterResult
.Neither;
2864
var
result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo);
2870
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2884
private
BetterResult
BetterConversionFromExpression(
2923
return conv1.Kind == ConversionKind.Identity ?
BetterResult
.Left :
BetterResult
.Neither;
2927
return conv2.Kind == ConversionKind.Identity ?
BetterResult
.Right :
BetterResult
.Neither;
2932
return
BetterResult
.Neither;
2940
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither)
2947
return
BetterResult
.Neither;
2959
return
BetterResult
.Neither;
2980
return
BetterResult
.Neither;
2982
return
BetterResult
.Left;
2984
return
BetterResult
.Right;
2993
return
BetterResult
.Left;
2995
return
BetterResult
.Right;
3009
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, t1, t2, ref useSiteInfo, false);
3010
return
BetterResult
.Left;
3015
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, t1, t2, ref useSiteInfo, false);
3016
return
BetterResult
.Right;
3021
return
BetterResult
.Left;
3023
return
BetterResult
.Right;
3037
return
BetterResult
.Right;
3039
return
BetterResult
.Left;
3047
private
BetterResult
BetterCollectionExpressionConversion(
3060
return
BetterResult
.Left;
3064
return
BetterResult
.Right;
3067
return
BetterResult
.Neither;
3081
private
BetterResult
BetterCollectionExpressionConversion(
3108
return
BetterResult
.Left;
3110
return
BetterResult
.Right;
3127
var
betterResult =
BetterResult
.Neither;
3138
BetterResult
elementBetterResult;
3148
if (elementBetterResult ==
BetterResult
.Neither)
3153
if (betterResult !=
BetterResult
.Neither)
3157
return
BetterResult
.Neither;
3178
return
BetterResult
.Left;
3182
return
BetterResult
.Right;
3186
return
BetterResult
.Neither;
3225
private
BetterResult
BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3451
private
BetterResult
BetterConversionTargetCore(
3459
return
BetterResult
.Neither;
3466
private
BetterResult
BetterConversionTarget(
3478
private
BetterResult
BetterConversionTargetCore(
3493
return
BetterResult
.Neither;
3501
return
BetterResult
.Left;
3505
return
BetterResult
.Right;
3513
return
BetterResult
.Neither;
3528
return
BetterResult
.Neither;
3532
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, type1, type2, ref useSiteInfo, true);
3533
return
BetterResult
.Left;
3538
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, type1, type2, ref useSiteInfo, true);
3539
return
BetterResult
.Right;
3556
return
BetterResult
.Neither;
3561
return
BetterResult
.Neither;
3582
BetterResult
delegateResult =
BetterResult
.Neither;
3589
delegateResult =
BetterResult
.Left;
3595
delegateResult =
BetterResult
.Right;
3598
if (delegateResult ==
BetterResult
.Neither)
3611
if (delegateResult ==
BetterResult
.Left)
3615
return
BetterResult
.Neither;
3618
else if (delegateResult ==
BetterResult
.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2))
3620
return
BetterResult
.Neither;
3629
return
BetterResult
.Neither;
3634
return
BetterResult
.Neither;
3646
return
BetterResult
.Left;
3651
return
BetterResult
.Right;
3654
return
BetterResult
.Neither;
3684
private bool CanDowngradeConversionFromLambdaToNeither(
BetterResult
currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis)
3736
Debug.Assert(currentResult ==
BetterResult
.Right);
3741
Debug.Assert(currentResult ==
BetterResult
.Left);