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)
1817
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1818
if (better ==
BetterResult
.Right)
1823
else if (better !=
BetterResult
.Left)
1844
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1845
if (better !=
BetterResult
.Left)
2019
var
better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo);
2020
if (better ==
BetterResult
.Left)
2024
else if (better ==
BetterResult
.Right)
2059
results[i] =
BetterResult
.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo)
2094
private
BetterResult
BetterFunctionMember<TMember>(
2110
return
BetterResult
.Left;
2112
return
BetterResult
.Right;
2125
return hasAnyRefOmittedArgument1 ?
BetterResult
.Right :
BetterResult
.Left;
2133
private
BetterResult
BetterFunctionMember<TMember>(
2153
BetterResult
result =
BetterResult
.Neither;
2188
BetterResult
r;
2213
if (r ==
BetterResult
.Neither)
2230
if (result ==
BetterResult
.Neither)
2253
result =
BetterResult
.Neither;
2274
result =
BetterResult
.Neither;
2280
Debug.Assert(result ==
BetterResult
.Left || result ==
BetterResult
.Right);
2287
if (result !=
BetterResult
.Neither)
2368
return
BetterResult
.Right;
2374
return
BetterResult
.Left;
2383
return
BetterResult
.Left;
2387
return
BetterResult
.Right;
2399
return
BetterResult
.Left;
2404
return
BetterResult
.Right;
2412
return
BetterResult
.Left;
2417
return
BetterResult
.Right;
2435
return
BetterResult
.Left;
2440
return
BetterResult
.Right;
2452
return
BetterResult
.Left;
2457
return
BetterResult
.Right;
2492
if (result !=
BetterResult
.Neither)
2512
return
BetterResult
.Left;
2517
return
BetterResult
.Right;
2526
return (m1ModifierCount < m2ModifierCount) ?
BetterResult
.Left :
BetterResult
.Right;
2532
if (result !=
BetterResult
.Neither)
2562
var
betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo);
2563
if (betterResult !=
BetterResult
.Neither)
2571
return
BetterResult
.Neither;
2613
static
BetterResult
preferValOverInOrRefInterpolatedHandlerParameters(
2620
BetterResult
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Neither;
2645
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Right)
2647
return
BetterResult
.Neither;
2651
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Left;
2656
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Left)
2658
return
BetterResult
.Neither;
2662
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Right;
2749
private static
BetterResult
MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2756
var
result =
BetterResult
.Neither;
2759
var
r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo);
2760
if (r ==
BetterResult
.Neither)
2764
else if (result ==
BetterResult
.Neither)
2774
return
BetterResult
.Neither;
2781
private static
BetterResult
MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2791
return
BetterResult
.Right;
2796
return
BetterResult
.Left;
2801
return
BetterResult
.Neither;
2835
return
BetterResult
.Neither;
2850
return
BetterResult
.Neither;
2863
var
result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo);
2869
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2883
private
BetterResult
BetterConversionFromExpression(
2922
return conv1.Kind == ConversionKind.Identity ?
BetterResult
.Left :
BetterResult
.Neither;
2926
return conv2.Kind == ConversionKind.Identity ?
BetterResult
.Right :
BetterResult
.Neither;
2931
return
BetterResult
.Neither;
2939
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither)
2946
return
BetterResult
.Neither;
2958
return
BetterResult
.Neither;
2979
return
BetterResult
.Neither;
2981
return
BetterResult
.Left;
2983
return
BetterResult
.Right;
2992
return
BetterResult
.Left;
2994
return
BetterResult
.Right;
3008
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, t1, t2, ref useSiteInfo, false);
3009
return
BetterResult
.Left;
3014
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, t1, t2, ref useSiteInfo, false);
3015
return
BetterResult
.Right;
3020
return
BetterResult
.Left;
3022
return
BetterResult
.Right;
3036
return
BetterResult
.Right;
3038
return
BetterResult
.Left;
3046
private
BetterResult
BetterCollectionExpressionConversion(
3059
return
BetterResult
.Left;
3063
return
BetterResult
.Right;
3066
return
BetterResult
.Neither;
3080
private
BetterResult
BetterCollectionExpressionConversion(
3107
return
BetterResult
.Left;
3109
return
BetterResult
.Right;
3126
var
betterResult =
BetterResult
.Neither;
3137
BetterResult
elementBetterResult;
3147
if (elementBetterResult ==
BetterResult
.Neither)
3152
if (betterResult !=
BetterResult
.Neither)
3156
return
BetterResult
.Neither;
3177
return
BetterResult
.Left;
3181
return
BetterResult
.Right;
3185
return
BetterResult
.Neither;
3224
private
BetterResult
BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3450
private
BetterResult
BetterConversionTargetCore(
3458
return
BetterResult
.Neither;
3465
private
BetterResult
BetterConversionTarget(
3477
private
BetterResult
BetterConversionTargetCore(
3492
return
BetterResult
.Neither;
3500
return
BetterResult
.Left;
3504
return
BetterResult
.Right;
3512
return
BetterResult
.Neither;
3527
return
BetterResult
.Neither;
3531
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, type1, type2, ref useSiteInfo, true);
3532
return
BetterResult
.Left;
3537
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, type1, type2, ref useSiteInfo, true);
3538
return
BetterResult
.Right;
3555
return
BetterResult
.Neither;
3560
return
BetterResult
.Neither;
3581
BetterResult
delegateResult =
BetterResult
.Neither;
3588
delegateResult =
BetterResult
.Left;
3594
delegateResult =
BetterResult
.Right;
3597
if (delegateResult ==
BetterResult
.Neither)
3610
if (delegateResult ==
BetterResult
.Left)
3614
return
BetterResult
.Neither;
3617
else if (delegateResult ==
BetterResult
.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2))
3619
return
BetterResult
.Neither;
3628
return
BetterResult
.Neither;
3633
return
BetterResult
.Neither;
3645
return
BetterResult
.Left;
3650
return
BetterResult
.Right;
3653
return
BetterResult
.Neither;
3683
private bool CanDowngradeConversionFromLambdaToNeither(
BetterResult
currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis)
3735
Debug.Assert(currentResult ==
BetterResult
.Right);
3740
Debug.Assert(currentResult ==
BetterResult
.Left);