214 references to BetterResult
Microsoft.CodeAnalysis.CSharp (214)
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 (40)
1117
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo);
1118
if (better ==
BetterResult
.Left)
1122
else if (better ==
BetterResult
.Right)
1151
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1152
if (better ==
BetterResult
.Right)
1157
else if (better !=
BetterResult
.Left)
1173
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1174
if (better !=
BetterResult
.Left)
1184
private
BetterResult
BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1190
return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ?
BetterResult
.Left :
BetterResult
.Right;
1193
BetterResult
leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo);
1194
BetterResult
rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo);
1215
if (leftBetter ==
BetterResult
.Left && rightBetter !=
BetterResult
.Right ||
1216
leftBetter !=
BetterResult
.Right && rightBetter ==
BetterResult
.Left)
1218
return
BetterResult
.Left;
1221
if (leftBetter ==
BetterResult
.Right && rightBetter !=
BetterResult
.Left ||
1222
leftBetter !=
BetterResult
.Left && rightBetter ==
BetterResult
.Right)
1224
return
BetterResult
.Right;
1256
BetterResult
result = MoreSpecificOperator(op1, op2, ref useSiteInfo);
1257
if (result ==
BetterResult
.Left || result ==
BetterResult
.Right)
1270
return
BetterResult
.Right;
1274
return
BetterResult
.Left;
1279
BetterResult
valOverInPreference;
1283
valOverInPreference =
BetterResult
.Left;
1287
valOverInPreference =
BetterResult
.Right;
1291
valOverInPreference =
BetterResult
.Neither;
1296
if (valOverInPreference ==
BetterResult
.Right)
1298
return
BetterResult
.Neither;
1302
valOverInPreference =
BetterResult
.Left;
1307
if (valOverInPreference ==
BetterResult
.Left)
1309
return
BetterResult
.Neither;
1313
valOverInPreference =
BetterResult
.Right;
1320
private
BetterResult
MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1366
BetterResult
result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (17)
117
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo);
118
if (better ==
BetterResult
.Left)
122
else if (better ==
BetterResult
.Right)
150
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
151
if (better ==
BetterResult
.Right)
156
else if (better !=
BetterResult
.Left)
172
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
173
if (better !=
BetterResult
.Left)
183
private
BetterResult
BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
188
BetterResult
better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo);
190
if (better ==
BetterResult
.Left || better ==
BetterResult
.Right)
220
return
BetterResult
.Right;
224
return
BetterResult
.Left;
231
return
BetterResult
.Left;
235
return
BetterResult
.Right;
238
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)
2110
private
BetterResult
BetterFunctionMember<TMember>(
2126
return
BetterResult
.Left;
2128
return
BetterResult
.Right;
2141
return hasAnyRefOmittedArgument1 ?
BetterResult
.Right :
BetterResult
.Left;
2149
private
BetterResult
BetterFunctionMember<TMember>(
2169
BetterResult
result =
BetterResult
.Neither;
2204
BetterResult
r;
2229
if (r ==
BetterResult
.Neither)
2246
if (result ==
BetterResult
.Neither)
2269
result =
BetterResult
.Neither;
2290
result =
BetterResult
.Neither;
2296
Debug.Assert(result ==
BetterResult
.Left || result ==
BetterResult
.Right);
2303
if (result !=
BetterResult
.Neither)
2384
return
BetterResult
.Right;
2390
return
BetterResult
.Left;
2399
return
BetterResult
.Left;
2403
return
BetterResult
.Right;
2415
return
BetterResult
.Left;
2420
return
BetterResult
.Right;
2428
return
BetterResult
.Left;
2433
return
BetterResult
.Right;
2451
return
BetterResult
.Left;
2456
return
BetterResult
.Right;
2468
return
BetterResult
.Left;
2473
return
BetterResult
.Right;
2508
if (result !=
BetterResult
.Neither)
2528
return
BetterResult
.Left;
2533
return
BetterResult
.Right;
2542
return (m1ModifierCount < m2ModifierCount) ?
BetterResult
.Left :
BetterResult
.Right;
2548
if (result !=
BetterResult
.Neither)
2578
var
betterResult = BetterParamsCollectionType(t1, t2, ref useSiteInfo);
2579
if (betterResult !=
BetterResult
.Neither)
2587
return
BetterResult
.Neither;
2635
private static
BetterResult
PreferValOverInOrRefInterpolatedHandlerParameters<TMember>(
2643
BetterResult
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Neither;
2665
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Right)
2667
return
BetterResult
.Neither;
2671
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Left;
2676
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Left)
2678
return
BetterResult
.Neither;
2682
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Right;
2733
private static
BetterResult
MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2740
var
result =
BetterResult
.Neither;
2743
var
r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo);
2744
if (r ==
BetterResult
.Neither)
2748
else if (result ==
BetterResult
.Neither)
2758
return
BetterResult
.Neither;
2765
private static
BetterResult
MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2775
return
BetterResult
.Right;
2780
return
BetterResult
.Left;
2785
return
BetterResult
.Neither;
2819
return
BetterResult
.Neither;
2834
return
BetterResult
.Neither;
2847
var
result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo);
2853
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2867
private
BetterResult
BetterConversionFromExpression(
2906
return conv1.Kind == ConversionKind.Identity ?
BetterResult
.Left :
BetterResult
.Neither;
2910
return conv2.Kind == ConversionKind.Identity ?
BetterResult
.Right :
BetterResult
.Neither;
2915
return
BetterResult
.Neither;
2923
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither)
2930
return
BetterResult
.Neither;
2942
return
BetterResult
.Neither;
2963
return
BetterResult
.Neither;
2965
return
BetterResult
.Left;
2967
return
BetterResult
.Right;
2976
return
BetterResult
.Left;
2978
return
BetterResult
.Right;
2992
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, t1, t2, ref useSiteInfo, false);
2993
return
BetterResult
.Left;
2998
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, t1, t2, ref useSiteInfo, false);
2999
return
BetterResult
.Right;
3004
return
BetterResult
.Left;
3006
return
BetterResult
.Right;
3020
return
BetterResult
.Right;
3022
return
BetterResult
.Left;
3030
private
BetterResult
BetterCollectionExpressionConversion(
3043
return
BetterResult
.Left;
3047
return
BetterResult
.Right;
3050
return
BetterResult
.Neither;
3064
private
BetterResult
BetterCollectionExpressionConversion(
3091
return
BetterResult
.Left;
3093
return
BetterResult
.Right;
3110
var
betterResult =
BetterResult
.Neither;
3121
BetterResult
elementBetterResult;
3131
if (elementBetterResult ==
BetterResult
.Neither)
3136
if (betterResult !=
BetterResult
.Neither)
3140
return
BetterResult
.Neither;
3161
return
BetterResult
.Left;
3165
return
BetterResult
.Right;
3169
return
BetterResult
.Neither;
3208
private
BetterResult
BetterParamsCollectionType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3434
private
BetterResult
BetterConversionTargetCore(
3442
return
BetterResult
.Neither;
3449
private
BetterResult
BetterConversionTarget(
3461
private
BetterResult
BetterConversionTargetCore(
3476
return
BetterResult
.Neither;
3484
return
BetterResult
.Left;
3488
return
BetterResult
.Right;
3496
return
BetterResult
.Neither;
3511
return
BetterResult
.Neither;
3515
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, type1, type2, ref useSiteInfo, true);
3516
return
BetterResult
.Left;
3521
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, type1, type2, ref useSiteInfo, true);
3522
return
BetterResult
.Right;
3539
return
BetterResult
.Neither;
3544
return
BetterResult
.Neither;
3565
BetterResult
delegateResult =
BetterResult
.Neither;
3572
delegateResult =
BetterResult
.Left;
3578
delegateResult =
BetterResult
.Right;
3581
if (delegateResult ==
BetterResult
.Neither)
3594
if (delegateResult ==
BetterResult
.Left)
3598
return
BetterResult
.Neither;
3601
else if (delegateResult ==
BetterResult
.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2))
3603
return
BetterResult
.Neither;
3612
return
BetterResult
.Neither;
3617
return
BetterResult
.Neither;
3629
return
BetterResult
.Left;
3634
return
BetterResult
.Right;
3637
return
BetterResult
.Neither;
3667
private bool CanDowngradeConversionFromLambdaToNeither(
BetterResult
currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis)
3719
Debug.Assert(currentResult ==
BetterResult
.Right);
3724
Debug.Assert(currentResult ==
BetterResult
.Left);