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)
1148
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo);
1149
if (better ==
BetterResult
.Left)
1153
else if (better ==
BetterResult
.Right)
1182
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1183
if (better ==
BetterResult
.Right)
1188
else if (better !=
BetterResult
.Left)
1204
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1205
if (better !=
BetterResult
.Left)
1215
private
BetterResult
BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1221
return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ?
BetterResult
.Left :
BetterResult
.Right;
1224
BetterResult
leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo);
1225
BetterResult
rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo);
1246
if (leftBetter ==
BetterResult
.Left && rightBetter !=
BetterResult
.Right ||
1247
leftBetter !=
BetterResult
.Right && rightBetter ==
BetterResult
.Left)
1249
return
BetterResult
.Left;
1252
if (leftBetter ==
BetterResult
.Right && rightBetter !=
BetterResult
.Left ||
1253
leftBetter !=
BetterResult
.Left && rightBetter ==
BetterResult
.Right)
1255
return
BetterResult
.Right;
1272
return
BetterResult
.Left;
1277
return
BetterResult
.Right;
1300
BetterResult
result = MoreSpecificOperator(op1, op2, ref useSiteInfo);
1301
if (result ==
BetterResult
.Left || result ==
BetterResult
.Right)
1314
return
BetterResult
.Right;
1318
return
BetterResult
.Left;
1323
BetterResult
valOverInPreference;
1327
valOverInPreference =
BetterResult
.Left;
1331
valOverInPreference =
BetterResult
.Right;
1335
valOverInPreference =
BetterResult
.Neither;
1340
if (valOverInPreference ==
BetterResult
.Right)
1342
return
BetterResult
.Neither;
1346
valOverInPreference =
BetterResult
.Left;
1351
if (valOverInPreference ==
BetterResult
.Left)
1353
return
BetterResult
.Neither;
1357
valOverInPreference =
BetterResult
.Right;
1364
private
BetterResult
MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1410
BetterResult
result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (19)
365
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo);
366
if (better ==
BetterResult
.Left)
370
else if (better ==
BetterResult
.Right)
398
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
399
if (better ==
BetterResult
.Right)
404
else if (better !=
BetterResult
.Left)
420
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
421
if (better !=
BetterResult
.Left)
431
private
BetterResult
BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
436
BetterResult
better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo);
438
if (better ==
BetterResult
.Left || better ==
BetterResult
.Right)
456
return
BetterResult
.Left;
461
return
BetterResult
.Right;
481
return
BetterResult
.Right;
485
return
BetterResult
.Left;
492
return
BetterResult
.Left;
496
return
BetterResult
.Right;
499
return
BetterResult
.Neither;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (141)
1811
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1812
if (better ==
BetterResult
.Right)
1817
else if (better !=
BetterResult
.Left)
1838
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1839
if (better !=
BetterResult
.Left)
2013
var
better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo);
2014
if (better ==
BetterResult
.Left)
2018
else if (better ==
BetterResult
.Right)
2053
results[i] =
BetterResult
.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo)
2088
private
BetterResult
BetterFunctionMember<TMember>(
2104
return
BetterResult
.Left;
2106
return
BetterResult
.Right;
2119
return hasAnyRefOmittedArgument1 ?
BetterResult
.Right :
BetterResult
.Left;
2127
private
BetterResult
BetterFunctionMember<TMember>(
2147
BetterResult
result =
BetterResult
.Neither;
2182
BetterResult
r;
2207
if (r ==
BetterResult
.Neither)
2224
if (result ==
BetterResult
.Neither)
2247
result =
BetterResult
.Neither;
2268
result =
BetterResult
.Neither;
2274
Debug.Assert(result ==
BetterResult
.Left || result ==
BetterResult
.Right);
2281
if (result !=
BetterResult
.Neither)
2362
return
BetterResult
.Right;
2368
return
BetterResult
.Left;
2377
return
BetterResult
.Left;
2381
return
BetterResult
.Right;
2393
return
BetterResult
.Left;
2398
return
BetterResult
.Right;
2406
return
BetterResult
.Left;
2411
return
BetterResult
.Right;
2429
return
BetterResult
.Left;
2434
return
BetterResult
.Right;
2446
return
BetterResult
.Left;
2451
return
BetterResult
.Right;
2486
if (result !=
BetterResult
.Neither)
2506
return
BetterResult
.Left;
2511
return
BetterResult
.Right;
2520
return (m1ModifierCount < m2ModifierCount) ?
BetterResult
.Left :
BetterResult
.Right;
2526
if (result !=
BetterResult
.Neither)
2556
var
betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo);
2557
if (betterResult !=
BetterResult
.Neither)
2565
return
BetterResult
.Neither;
2607
static
BetterResult
preferValOverInOrRefInterpolatedHandlerParameters(
2614
BetterResult
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Neither;
2639
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Right)
2641
return
BetterResult
.Neither;
2645
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Left;
2650
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Left)
2652
return
BetterResult
.Neither;
2656
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Right;
2743
private static
BetterResult
MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2750
var
result =
BetterResult
.Neither;
2753
var
r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo);
2754
if (r ==
BetterResult
.Neither)
2758
else if (result ==
BetterResult
.Neither)
2768
return
BetterResult
.Neither;
2775
private static
BetterResult
MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2785
return
BetterResult
.Right;
2790
return
BetterResult
.Left;
2795
return
BetterResult
.Neither;
2829
return
BetterResult
.Neither;
2844
return
BetterResult
.Neither;
2857
var
result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo);
2863
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2877
private
BetterResult
BetterConversionFromExpression(
2916
return conv1.Kind == ConversionKind.Identity ?
BetterResult
.Left :
BetterResult
.Neither;
2920
return conv2.Kind == ConversionKind.Identity ?
BetterResult
.Right :
BetterResult
.Neither;
2925
return
BetterResult
.Neither;
2933
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither)
2940
return
BetterResult
.Neither;
2952
return
BetterResult
.Neither;
2973
return
BetterResult
.Neither;
2975
return
BetterResult
.Left;
2977
return
BetterResult
.Right;
2986
return
BetterResult
.Left;
2988
return
BetterResult
.Right;
3002
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, t1, t2, ref useSiteInfo, false);
3003
return
BetterResult
.Left;
3008
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, t1, t2, ref useSiteInfo, false);
3009
return
BetterResult
.Right;
3014
return
BetterResult
.Left;
3016
return
BetterResult
.Right;
3030
return
BetterResult
.Right;
3032
return
BetterResult
.Left;
3040
private
BetterResult
BetterCollectionExpressionConversion(
3053
return
BetterResult
.Left;
3057
return
BetterResult
.Right;
3060
return
BetterResult
.Neither;
3074
private
BetterResult
BetterCollectionExpressionConversion(
3101
return
BetterResult
.Left;
3103
return
BetterResult
.Right;
3120
var
betterResult =
BetterResult
.Neither;
3131
BetterResult
elementBetterResult;
3141
if (elementBetterResult ==
BetterResult
.Neither)
3146
if (betterResult !=
BetterResult
.Neither)
3150
return
BetterResult
.Neither;
3171
return
BetterResult
.Left;
3175
return
BetterResult
.Right;
3179
return
BetterResult
.Neither;
3218
private
BetterResult
BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3444
private
BetterResult
BetterConversionTargetCore(
3452
return
BetterResult
.Neither;
3459
private
BetterResult
BetterConversionTarget(
3471
private
BetterResult
BetterConversionTargetCore(
3486
return
BetterResult
.Neither;
3494
return
BetterResult
.Left;
3498
return
BetterResult
.Right;
3506
return
BetterResult
.Neither;
3521
return
BetterResult
.Neither;
3525
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, type1, type2, ref useSiteInfo, true);
3526
return
BetterResult
.Left;
3531
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, type1, type2, ref useSiteInfo, true);
3532
return
BetterResult
.Right;
3549
return
BetterResult
.Neither;
3554
return
BetterResult
.Neither;
3575
BetterResult
delegateResult =
BetterResult
.Neither;
3582
delegateResult =
BetterResult
.Left;
3588
delegateResult =
BetterResult
.Right;
3591
if (delegateResult ==
BetterResult
.Neither)
3604
if (delegateResult ==
BetterResult
.Left)
3608
return
BetterResult
.Neither;
3611
else if (delegateResult ==
BetterResult
.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2))
3613
return
BetterResult
.Neither;
3622
return
BetterResult
.Neither;
3627
return
BetterResult
.Neither;
3639
return
BetterResult
.Left;
3644
return
BetterResult
.Right;
3647
return
BetterResult
.Neither;
3677
private bool CanDowngradeConversionFromLambdaToNeither(
BetterResult
currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis)
3729
Debug.Assert(currentResult ==
BetterResult
.Right);
3734
Debug.Assert(currentResult ==
BetterResult
.Left);