189 references to BetterResult
Microsoft.CodeAnalysis.CSharp (189)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (16)
720
return
BetterResult
.Equal;
727
return
BetterResult
.Neither;
729
return leftWins ?
BetterResult
.Left :
BetterResult
.Right;
759
return
BetterResult
.Equal;
766
return
BetterResult
.Neither;
768
return leftWins ?
BetterResult
.Left :
BetterResult
.Right;
789
private static int? UniqueBestValidIndex<T>(ImmutableArray<T> items, Func<T, bool> valid, Func<T, T,
BetterResult
> better)
814
BetterResult
result = better(candidateItem, currentItem);
816
if (result ==
BetterResult
.Equal)
821
else if (result ==
BetterResult
.Neither)
829
else if (result ==
BetterResult
.Right)
856
BetterResult
result = better(candidateItem, currentItem);
857
if (result !=
BetterResult
.Left && result !=
BetterResult
.Equal)
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (40)
1087
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, left, right, ref useSiteInfo);
1088
if (better ==
BetterResult
.Left)
1092
else if (better ==
BetterResult
.Right)
1121
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1122
if (better ==
BetterResult
.Right)
1127
else if (better !=
BetterResult
.Left)
1143
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, left, right, ref useSiteInfo);
1144
if (better !=
BetterResult
.Left)
1154
private
BetterResult
BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1160
return (op1.Priority.GetValueOrDefault() < op2.Priority.GetValueOrDefault()) ?
BetterResult
.Left :
BetterResult
.Right;
1163
BetterResult
leftBetter = BetterConversionFromExpression(left, op1.LeftType, op2.LeftType, ref useSiteInfo);
1164
BetterResult
rightBetter = BetterConversionFromExpression(right, op1.RightType, op2.RightType, ref useSiteInfo);
1185
if (leftBetter ==
BetterResult
.Left && rightBetter !=
BetterResult
.Right ||
1186
leftBetter !=
BetterResult
.Right && rightBetter ==
BetterResult
.Left)
1188
return
BetterResult
.Left;
1191
if (leftBetter ==
BetterResult
.Right && rightBetter !=
BetterResult
.Left ||
1192
leftBetter !=
BetterResult
.Left && rightBetter ==
BetterResult
.Right)
1194
return
BetterResult
.Right;
1226
BetterResult
result = MoreSpecificOperator(op1, op2, ref useSiteInfo);
1227
if (result ==
BetterResult
.Left || result ==
BetterResult
.Right)
1240
return
BetterResult
.Right;
1244
return
BetterResult
.Left;
1249
BetterResult
valOverInPreference;
1253
valOverInPreference =
BetterResult
.Left;
1257
valOverInPreference =
BetterResult
.Right;
1261
valOverInPreference =
BetterResult
.Neither;
1266
if (valOverInPreference ==
BetterResult
.Right)
1268
return
BetterResult
.Neither;
1272
valOverInPreference =
BetterResult
.Left;
1277
if (valOverInPreference ==
BetterResult
.Left)
1279
return
BetterResult
.Neither;
1283
valOverInPreference =
BetterResult
.Right;
1290
private
BetterResult
MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1336
BetterResult
result = MoreSpecificType(ref uninst1.AsRef(), ref uninst2.AsRef(), ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (17)
115
var
better = BetterOperator(candidates[i].Signature, candidates[j].Signature, operand, ref useSiteInfo);
116
if (better ==
BetterResult
.Left)
120
else if (better ==
BetterResult
.Right)
148
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
149
if (better ==
BetterResult
.Right)
154
else if (better !=
BetterResult
.Left)
170
var
better = BetterOperator(candidates[currentBestIndex].Signature, candidates[index].Signature, operand, ref useSiteInfo);
171
if (better !=
BetterResult
.Left)
181
private
BetterResult
BetterOperator(UnaryOperatorSignature op1, UnaryOperatorSignature op2, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
186
BetterResult
better = BetterConversionFromExpression(operand, op1.OperandType, op2.OperandType, ref useSiteInfo);
188
if (better ==
BetterResult
.Left || better ==
BetterResult
.Right)
218
return
BetterResult
.Right;
222
return
BetterResult
.Left;
229
return
BetterResult
.Left;
233
return
BetterResult
.Right;
236
return
BetterResult
.Neither;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (116)
1458
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1459
if (better ==
BetterResult
.Right)
1464
else if (better !=
BetterResult
.Left)
1485
var
better = BetterFunctionMember(results[currentBestIndex], results[index], arguments.Arguments, ref useSiteInfo);
1486
if (better !=
BetterResult
.Left)
1568
var
better = BetterFunctionMember(c1Result, c2Result, arguments.Arguments, ref useSiteInfo);
1569
if (better ==
BetterResult
.Left)
1573
else if (better ==
BetterResult
.Right)
1608
results[i] =
BetterResult
.Left == BetterFunctionMember(results[notBestIdx], results[i], arguments.Arguments, ref useSiteInfo)
1669
private
BetterResult
BetterFunctionMember<TMember>(
1685
return
BetterResult
.Left;
1687
return
BetterResult
.Right;
1700
return hasAnyRefOmittedArgument1 ?
BetterResult
.Right :
BetterResult
.Left;
1708
private
BetterResult
BetterFunctionMember<TMember>(
1728
BetterResult
result =
BetterResult
.Neither;
1765
BetterResult
r;
1790
if (r ==
BetterResult
.Neither)
1807
if (result ==
BetterResult
.Neither)
1830
result =
BetterResult
.Neither;
1851
result =
BetterResult
.Neither;
1857
Debug.Assert(result ==
BetterResult
.Left || result ==
BetterResult
.Right);
1864
if (result !=
BetterResult
.Neither)
1947
return
BetterResult
.Right;
1953
return
BetterResult
.Left;
1962
return
BetterResult
.Left;
1966
return
BetterResult
.Right;
1978
return
BetterResult
.Left;
1983
return
BetterResult
.Right;
1991
return
BetterResult
.Left;
1996
return
BetterResult
.Right;
2014
return
BetterResult
.Left;
2019
return
BetterResult
.Right;
2031
return
BetterResult
.Left;
2036
return
BetterResult
.Right;
2073
if (result !=
BetterResult
.Neither)
2093
return
BetterResult
.Left;
2098
return
BetterResult
.Right;
2107
return (m1ModifierCount < m2ModifierCount) ?
BetterResult
.Left :
BetterResult
.Right;
2137
private static
BetterResult
PreferValOverInOrRefInterpolatedHandlerParameters<TMember>(
2145
BetterResult
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Neither;
2167
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Right)
2169
return
BetterResult
.Neither;
2173
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Left;
2178
if (valOverInOrRefInterpolatedHandlerPreference ==
BetterResult
.Left)
2180
return
BetterResult
.Neither;
2184
valOverInOrRefInterpolatedHandlerPreference =
BetterResult
.Right;
2234
private static
BetterResult
MoreSpecificType(ref TemporaryArray<TypeSymbol> t1, ref TemporaryArray<TypeSymbol> t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2241
var
result =
BetterResult
.Neither;
2244
var
r = MoreSpecificType(t1[i], t2[i], ref useSiteInfo);
2245
if (r ==
BetterResult
.Neither)
2249
else if (result ==
BetterResult
.Neither)
2259
return
BetterResult
.Neither;
2266
private static
BetterResult
MoreSpecificType(TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2276
return
BetterResult
.Right;
2281
return
BetterResult
.Left;
2286
return
BetterResult
.Neither;
2320
return
BetterResult
.Neither;
2335
return
BetterResult
.Neither;
2348
var
result = MoreSpecificType(ref allTypeArgs1.AsRef(), ref allTypeArgs2.AsRef(), ref useSiteInfo);
2354
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, TypeSymbol t2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2368
private
BetterResult
BetterConversionFromExpression(
2407
return conv1.Kind == ConversionKind.Identity ?
BetterResult
.Left :
BetterResult
.Neither;
2411
return conv2.Kind == ConversionKind.Identity ?
BetterResult
.Right :
BetterResult
.Neither;
2416
return
BetterResult
.Neither;
2424
private
BetterResult
BetterConversionFromExpression(BoundExpression node, TypeSymbol t1, Conversion conv1, TypeSymbol t2, Conversion conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither)
2431
return
BetterResult
.Neither;
2443
return
BetterResult
.Neither;
2464
return
BetterResult
.Neither;
2466
return
BetterResult
.Left;
2468
return
BetterResult
.Right;
2477
return
BetterResult
.Left;
2479
return
BetterResult
.Right;
2493
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, t1, t2, ref useSiteInfo, false);
2494
return
BetterResult
.Left;
2499
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, t1, t2, ref useSiteInfo, false);
2500
return
BetterResult
.Right;
2505
return
BetterResult
.Left;
2507
return
BetterResult
.Right;
2701
private
BetterResult
BetterConversionTarget(
2711
private
BetterResult
BetterConversionTargetCore(
2719
return
BetterResult
.Neither;
2726
private
BetterResult
BetterConversionTarget(
2738
private
BetterResult
BetterConversionTargetCore(
2753
return
BetterResult
.Neither;
2767
return
BetterResult
.Neither;
2771
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Left, lambdaOpt, type1, type2, ref useSiteInfo, true);
2772
return
BetterResult
.Left;
2777
okToDowngradeToNeither = lambdaOpt != null && CanDowngradeConversionFromLambdaToNeither(
BetterResult
.Right, lambdaOpt, type1, type2, ref useSiteInfo, true);
2778
return
BetterResult
.Right;
2795
return
BetterResult
.Neither;
2800
return
BetterResult
.Neither;
2821
BetterResult
delegateResult =
BetterResult
.Neither;
2828
delegateResult =
BetterResult
.Left;
2834
delegateResult =
BetterResult
.Right;
2837
if (delegateResult ==
BetterResult
.Neither)
2850
if (delegateResult ==
BetterResult
.Left)
2854
return
BetterResult
.Neither;
2857
else if (delegateResult ==
BetterResult
.Right && IsMethodGroupConversionIncompatibleWithDelegate(group, d2, conv2))
2859
return
BetterResult
.Neither;
2868
return
BetterResult
.Neither;
2873
return
BetterResult
.Neither;
2885
return
BetterResult
.Left;
2890
return
BetterResult
.Right;
2893
return
BetterResult
.Neither;
2907
private bool CanDowngradeConversionFromLambdaToNeither(
BetterResult
currentResult, UnboundLambda lambda, TypeSymbol type1, TypeSymbol type2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool fromTypeAnalysis)
2959
Debug.Assert(currentResult ==
BetterResult
.Right);
2964
Debug.Assert(currentResult ==
BetterResult
.Left);