1868 references to ConversionKind
Microsoft.CodeAnalysis.CSharp (757)
Binder\Binder.ValueChecks.cs (7)
787
if (conversion.ConversionKind ==
ConversionKind
.Unboxing)
4444
Debug.Assert(conversion.ConversionKind !=
ConversionKind
.StackAllocToSpanType, "StackAllocToSpanType unexpected");
4446
if (conversion.ConversionKind ==
ConversionKind
.InterpolatedStringHandler)
4451
if (conversion.ConversionKind ==
ConversionKind
.CollectionExpression)
5255
Debug.Assert(conversion.ConversionKind !=
ConversionKind
.StackAllocToSpanType, "StackAllocToSpanType unexpected");
5257
if (conversion.ConversionKind ==
ConversionKind
.InterpolatedStringHandler)
5262
if (conversion.ConversionKind ==
ConversionKind
.CollectionExpression)
Binder\Binder_Conversions.cs (25)
143
if (conversion.Kind ==
ConversionKind
.FunctionType)
159
if (conversion.Kind ==
ConversionKind
.SwitchExpression)
174
if (conversion.Kind ==
ConversionKind
.ConditionalExpression)
189
if (conversion.Kind ==
ConversionKind
.InterpolatedString)
196
if (conversion.Kind ==
ConversionKind
.InterpolatedStringHandler)
270
if (conversion.Kind ==
ConversionKind
.DefaultLiteral)
280
if (conversion.Kind is
ConversionKind
.ImplicitReference or
ConversionKind
.ExplicitReference &&
824
Debug.Assert(conversion.Kind is
ConversionKind
.NoConversion);
1921
case
ConversionKind
.Identity:
1922
case
ConversionKind
.ImplicitReference:
1923
case
ConversionKind
.Boxing:
2183
Debug.Assert(conversion.Kind ==
ConversionKind
.FunctionType);
2424
case
ConversionKind
.StackAllocToPointerType:
2428
case
ConversionKind
.StackAllocToSpanType:
3145
if (conversion.Kind ==
ConversionKind
.DefaultLiteral)
3166
case
ConversionKind
.Identity:
3180
case
ConversionKind
.NullLiteral:
3183
case
ConversionKind
.ImplicitConstant:
3186
case
ConversionKind
.ExplicitNumeric:
3187
case
ConversionKind
.ImplicitNumeric:
3188
case
ConversionKind
.ExplicitEnumeration:
3189
case
ConversionKind
.ImplicitEnumeration:
3201
case
ConversionKind
.ExplicitReference:
3202
case
ConversionKind
.ImplicitReference:
Binder\Binder_Deconstruct.cs (2)
308
Debug.Assert(nestedConversion.Kind ==
ConversionKind
.Deconstruction);
341
conversion = new Conversion(
ConversionKind
.Deconstruction, deconstructMethod, nestedConversions.ToImmutableAndFree());
Binder\Binder_Operators.cs (49)
490
if (conversion.Kind is not
ConversionKind
.Identity)
492
Debug.Assert(conversion.Kind is
ConversionKind
.ImplicitReference);
3446
if (conversion.Kind is not
ConversionKind
.Identity)
3448
Debug.Assert(conversion.Kind is
ConversionKind
.ImplicitReference);
4698
return new BoundIsOperator(node, operand, typeExpression,
ConversionKind
.NoConversion, resultType, hasErrors: true);
4780
ConversionKind
conversionKind,
4815
ConversionKind
conversionKind,
4869
case
ConversionKind
.ImplicitSpan:
4870
case
ConversionKind
.ExplicitSpan:
4871
case
ConversionKind
.NoConversion:
4985
case
ConversionKind
.ImplicitNumeric:
4986
case
ConversionKind
.ExplicitNumeric:
4987
case
ConversionKind
.ImplicitEnumeration:
4989
case
ConversionKind
.ImplicitConstant:
4990
case
ConversionKind
.ImplicitUserDefined:
4991
case
ConversionKind
.ExplicitUserDefined:
4992
case
ConversionKind
.IntPtr:
4993
case
ConversionKind
.ExplicitTuple:
4994
case
ConversionKind
.ImplicitTuple:
5010
case
ConversionKind
.ExplicitEnumeration:
5015
goto case
ConversionKind
.NoConversion;
5020
case
ConversionKind
.ExplicitNullable:
5051
case
ConversionKind
.ImplicitReference:
5054
case
ConversionKind
.ExplicitReference:
5055
case
ConversionKind
.Unboxing:
5062
case
ConversionKind
.Identity:
5069
case
ConversionKind
.Boxing:
5086
case
ConversionKind
.ImplicitNullable:
5099
case
ConversionKind
.ImplicitDynamic:
5100
case
ConversionKind
.ExplicitDynamic:
5101
case
ConversionKind
.ExplicitPointerToInteger:
5102
case
ConversionKind
.ExplicitPointerToPointer:
5103
case
ConversionKind
.ImplicitPointerToVoid:
5104
case
ConversionKind
.ExplicitIntegerToPointer:
5105
case
ConversionKind
.ImplicitNullToPointer:
5106
case
ConversionKind
.AnonymousFunction:
5107
case
ConversionKind
.NullLiteral:
5108
case
ConversionKind
.DefaultLiteral:
5109
case
ConversionKind
.MethodGroup:
5277
ConversionKind
conversionKind,
5303
case
ConversionKind
.ImplicitReference:
5304
case
ConversionKind
.Boxing:
5305
case
ConversionKind
.ImplicitNullable:
5306
case
ConversionKind
.Identity:
5307
case
ConversionKind
.ExplicitNullable:
5308
case
ConversionKind
.ExplicitReference:
5309
case
ConversionKind
.Unboxing:
5339
ConversionKind
conversionKind,
5368
internal static ConstantValue GetAsOperatorConstantResult(TypeSymbol operandType, TypeSymbol targetType,
ConversionKind
conversionKind, ConstantValue operandConstantValue)
Binder\Binder_Patterns.cs (4)
697
else if ((conversion.ConversionKind ==
ConversionKind
.Boxing || conversion.ConversionKind ==
ConversionKind
.ImplicitReference)
707
else if (conversion.ConversionKind ==
ConversionKind
.ImplicitNullToPointer ||
708
(conversion.ConversionKind ==
ConversionKind
.NoConversion && convertedExpression.Type?.IsErrorType() == true))
Binder\Binder_Statements.cs (4)
1963
if (conversion.Kind !=
ConversionKind
.Identity)
2265
else if (conversion.Kind ==
ConversionKind
.ExplicitNumeric && sourceConstantValueOpt != null && sourceConstantValueOpt != ConstantValue.Bad &&
2693
if (conversion.Kind ==
ConversionKind
.Identity)
3178
if (conversion.Kind !=
ConversionKind
.Identity)
Binder\ForEachLoopBinder.cs (2)
485
if (elementConversionClassification.Kind !=
ConversionKind
.Identity && IterationVariable.RefKind is RefKind.Ref or RefKind.RefReadOnly)
589
(collectionConversionClassification.Kind ==
ConversionKind
.ExplicitReference && collectionExpr.Type.SpecialType == SpecialType.System_String));
Binder\RefSafetyAnalysis.cs (4)
704
if (arg is BoundConversion { ConversionKind:
ConversionKind
.InterpolatedStringHandler, Operand: BoundInterpolatedString or BoundBinaryOperator } conversion)
988
Debug.Assert(conversion.Kind ==
ConversionKind
.Deconstruction);
1097
case
ConversionKind
.Identity:
1098
case
ConversionKind
.ImplicitTupleLiteral:
Binder\Semantics\Conversions\Conversion.cs (146)
21
private readonly
ConversionKind
_kind;
135
ConversionKind
.CollectionExpression,
140
ConversionKind
kind,
150
?
ConversionKind
.NoConversion
151
: isImplicit ?
ConversionKind
.ImplicitUserDefined :
ConversionKind
.ExplicitUserDefined;
163
internal Conversion(
ConversionKind
kind, MethodSymbol conversionMethod, bool isExtensionMethod)
173
internal Conversion(
ConversionKind
kind, ImmutableArray<Conversion> nestedConversions)
180
internal Conversion(
ConversionKind
kind, DeconstructMethodInfo deconstructMethodInfo, ImmutableArray<(BoundValuePlaceholder? placeholder, BoundExpression? conversion)> deconstructConversionInfo)
182
Debug.Assert(kind ==
ConversionKind
.Deconstruction);
195
Debug.Assert(_kind is
ConversionKind
.MethodGroup or
ConversionKind
.IntPtr or
ConversionKind
.ImplicitUserDefined or
ConversionKind
.ExplicitUserDefined);
215
private static void AssertTrivialConversion(
ConversionKind
kind)
221
case
ConversionKind
.NoConversion:
222
case
ConversionKind
.Identity:
223
case
ConversionKind
.ImplicitConstant:
224
case
ConversionKind
.ImplicitNumeric:
225
case
ConversionKind
.ImplicitReference:
226
case
ConversionKind
.ImplicitEnumeration:
227
case
ConversionKind
.ImplicitThrow:
228
case
ConversionKind
.AnonymousFunction:
229
case
ConversionKind
.Boxing:
230
case
ConversionKind
.NullLiteral:
231
case
ConversionKind
.DefaultLiteral:
232
case
ConversionKind
.ImplicitNullToPointer:
233
case
ConversionKind
.ImplicitPointerToVoid:
234
case
ConversionKind
.ExplicitPointerToPointer:
235
case
ConversionKind
.ExplicitPointerToInteger:
236
case
ConversionKind
.ExplicitIntegerToPointer:
237
case
ConversionKind
.Unboxing:
238
case
ConversionKind
.ExplicitReference:
239
case
ConversionKind
.IntPtr:
240
case
ConversionKind
.ExplicitEnumeration:
241
case
ConversionKind
.ExplicitNumeric:
242
case
ConversionKind
.ImplicitDynamic:
243
case
ConversionKind
.ExplicitDynamic:
244
case
ConversionKind
.InterpolatedString:
245
case
ConversionKind
.InterpolatedStringHandler:
246
case
ConversionKind
.InlineArray:
247
case
ConversionKind
.ImplicitSpan:
248
case
ConversionKind
.ExplicitSpan:
260
internal static Conversion GetTrivialConversion(
ConversionKind
kind)
266
internal static Conversion UnsetConversion => new Conversion(
ConversionKind
.UnsetConversionKind);
267
internal static Conversion NoConversion => new Conversion(
ConversionKind
.NoConversion);
268
internal static Conversion Identity => new Conversion(
ConversionKind
.Identity);
269
internal static Conversion ImplicitConstant => new Conversion(
ConversionKind
.ImplicitConstant);
270
internal static Conversion ImplicitNumeric => new Conversion(
ConversionKind
.ImplicitNumeric);
271
internal static Conversion ImplicitReference => new Conversion(
ConversionKind
.ImplicitReference);
272
internal static Conversion ImplicitEnumeration => new Conversion(
ConversionKind
.ImplicitEnumeration);
273
internal static Conversion ImplicitThrow => new Conversion(
ConversionKind
.ImplicitThrow);
274
internal static Conversion ObjectCreation => new Conversion(
ConversionKind
.ObjectCreation);
275
internal static Conversion CollectionExpression => new Conversion(
ConversionKind
.CollectionExpression);
276
internal static Conversion AnonymousFunction => new Conversion(
ConversionKind
.AnonymousFunction);
277
internal static Conversion Boxing => new Conversion(
ConversionKind
.Boxing);
278
internal static Conversion NullLiteral => new Conversion(
ConversionKind
.NullLiteral);
279
internal static Conversion DefaultLiteral => new Conversion(
ConversionKind
.DefaultLiteral);
280
internal static Conversion NullToPointer => new Conversion(
ConversionKind
.ImplicitNullToPointer);
281
internal static Conversion PointerToVoid => new Conversion(
ConversionKind
.ImplicitPointerToVoid);
282
internal static Conversion PointerToPointer => new Conversion(
ConversionKind
.ExplicitPointerToPointer);
283
internal static Conversion PointerToInteger => new Conversion(
ConversionKind
.ExplicitPointerToInteger);
284
internal static Conversion IntegerToPointer => new Conversion(
ConversionKind
.ExplicitIntegerToPointer);
285
internal static Conversion Unboxing => new Conversion(
ConversionKind
.Unboxing);
286
internal static Conversion ExplicitReference => new Conversion(
ConversionKind
.ExplicitReference);
287
internal static Conversion IntPtr => new Conversion(
ConversionKind
.IntPtr);
288
internal static Conversion ExplicitEnumeration => new Conversion(
ConversionKind
.ExplicitEnumeration);
289
internal static Conversion ExplicitNumeric => new Conversion(
ConversionKind
.ExplicitNumeric);
290
internal static Conversion ImplicitDynamic => new Conversion(
ConversionKind
.ImplicitDynamic);
291
internal static Conversion ExplicitDynamic => new Conversion(
ConversionKind
.ExplicitDynamic);
292
internal static Conversion InterpolatedString => new Conversion(
ConversionKind
.InterpolatedString);
293
internal static Conversion InterpolatedStringHandler => new Conversion(
ConversionKind
.InterpolatedStringHandler);
294
internal static Conversion Deconstruction => new Conversion(
ConversionKind
.Deconstruction);
295
internal static Conversion PinnedObjectToPointer => new Conversion(
ConversionKind
.PinnedObjectToPointer);
296
internal static Conversion ImplicitPointer => new Conversion(
ConversionKind
.ImplicitPointer);
297
internal static Conversion FunctionType => new Conversion(
ConversionKind
.FunctionType);
298
internal static Conversion InlineArray => new Conversion(
ConversionKind
.InlineArray);
299
internal static Conversion ImplicitSpan => new Conversion(
ConversionKind
.ImplicitSpan);
300
internal static Conversion ExplicitSpan => new Conversion(
ConversionKind
.ExplicitSpan);
312
internal static readonly Conversion ExplicitNullableWithExplicitEnumerationUnderlying = new Conversion(
ConversionKind
.ExplicitNullable, ExplicitEnumerationUnderlying);
313
internal static readonly Conversion ExplicitNullableWithPointerToIntegerUnderlying = new Conversion(
ConversionKind
.ExplicitNullable, PointerToIntegerUnderlying);
314
internal static readonly Conversion ExplicitNullableWithIdentityUnderlying = new Conversion(
ConversionKind
.ExplicitNullable, IdentityUnderlying);
315
internal static readonly Conversion ExplicitNullableWithImplicitNumericUnderlying = new Conversion(
ConversionKind
.ExplicitNullable, ImplicitNumericUnderlying);
316
internal static readonly Conversion ExplicitNullableWithExplicitNumericUnderlying = new Conversion(
ConversionKind
.ExplicitNullable, ExplicitNumericUnderlying);
317
internal static readonly Conversion ExplicitNullableWithImplicitConstantUnderlying = new Conversion(
ConversionKind
.ExplicitNullable, ImplicitConstantUnderlying);
319
internal static readonly Conversion ImplicitNullableWithExplicitEnumerationUnderlying = new Conversion(
ConversionKind
.ImplicitNullable, ExplicitEnumerationUnderlying);
320
internal static readonly Conversion ImplicitNullableWithPointerToIntegerUnderlying = new Conversion(
ConversionKind
.ImplicitNullable, PointerToIntegerUnderlying);
321
internal static readonly Conversion ImplicitNullableWithIdentityUnderlying = new Conversion(
ConversionKind
.ImplicitNullable, IdentityUnderlying);
322
internal static readonly Conversion ImplicitNullableWithImplicitNumericUnderlying = new Conversion(
ConversionKind
.ImplicitNullable, ImplicitNumericUnderlying);
323
internal static readonly Conversion ImplicitNullableWithExplicitNumericUnderlying = new Conversion(
ConversionKind
.ImplicitNullable, ExplicitNumericUnderlying);
324
internal static readonly Conversion ImplicitNullableWithImplicitConstantUnderlying = new Conversion(
ConversionKind
.ImplicitNullable, ImplicitConstantUnderlying);
340
return new Conversion(
ConversionKind
.StackAllocToPointerType, ImmutableArray.Create(underlyingConversion));
345
return new Conversion(
ConversionKind
.StackAllocToSpanType, ImmutableArray.Create(underlyingConversion));
348
internal static Conversion MakeNullableConversion(
ConversionKind
kind, Conversion nestedConversion)
350
Debug.Assert(kind ==
ConversionKind
.ImplicitNullable || kind ==
ConversionKind
.ExplicitNullable);
354
ConversionKind
.Identity => kind ==
ConversionKind
.ImplicitNullable ? ImplicitNullableWithIdentityUnderlying : ExplicitNullableWithIdentityUnderlying,
355
ConversionKind
.ImplicitConstant => kind ==
ConversionKind
.ImplicitNullable ? ImplicitNullableWithImplicitConstantUnderlying : ExplicitNullableWithImplicitConstantUnderlying,
356
ConversionKind
.ImplicitNumeric => kind ==
ConversionKind
.ImplicitNullable ? ImplicitNullableWithImplicitNumericUnderlying : ExplicitNullableWithImplicitNumericUnderlying,
357
ConversionKind
.ExplicitNumeric => kind ==
ConversionKind
.ImplicitNullable ? ImplicitNullableWithExplicitNumericUnderlying : ExplicitNullableWithExplicitNumericUnderlying,
358
ConversionKind
.ExplicitEnumeration => kind ==
ConversionKind
.ImplicitNullable ? ImplicitNullableWithExplicitEnumerationUnderlying : ExplicitNullableWithExplicitEnumerationUnderlying,
359
ConversionKind
.ExplicitPointerToInteger => kind ==
ConversionKind
.ImplicitNullable ? ImplicitNullableWithPointerToIntegerUnderlying : ExplicitNullableWithPointerToIntegerUnderlying,
366
return new Conversion(
ConversionKind
.SwitchExpression, innerConversions);
371
return new Conversion(
ConversionKind
.ConditionalExpression, innerConversions);
374
internal
ConversionKind
Kind
604
return Kind !=
ConversionKind
.NoConversion;
647
return Kind ==
ConversionKind
.Identity;
658
return Kind ==
ConversionKind
.StackAllocToPointerType || Kind ==
ConversionKind
.StackAllocToSpanType;
672
return Kind ==
ConversionKind
.ImplicitNumeric || Kind ==
ConversionKind
.ExplicitNumeric;
686
return Kind ==
ConversionKind
.ImplicitEnumeration || Kind ==
ConversionKind
.ExplicitEnumeration;
697
return Kind ==
ConversionKind
.ImplicitThrow;
708
return Kind ==
ConversionKind
.ObjectCreation;
715
public bool IsCollectionExpression => Kind ==
ConversionKind
.CollectionExpression;
724
return Kind ==
ConversionKind
.SwitchExpression;
735
return Kind ==
ConversionKind
.ConditionalExpression;
750
return Kind ==
ConversionKind
.InterpolatedString;
761
return Kind ==
ConversionKind
.InterpolatedStringHandler;
772
return Kind ==
ConversionKind
.InlineArray;
786
return Kind ==
ConversionKind
.ImplicitNullable || Kind ==
ConversionKind
.ExplicitNullable;
797
return Kind ==
ConversionKind
.ImplicitTupleLiteral || Kind ==
ConversionKind
.ExplicitTupleLiteral;
808
return Kind ==
ConversionKind
.ImplicitTuple || Kind ==
ConversionKind
.ExplicitTuple;
822
return Kind ==
ConversionKind
.ImplicitReference || Kind ==
ConversionKind
.ExplicitReference;
836
return Kind is
ConversionKind
.ImplicitSpan or
ConversionKind
.ExplicitSpan;
864
return Kind ==
ConversionKind
.Boxing;
878
return Kind ==
ConversionKind
.Unboxing;
892
return Kind ==
ConversionKind
.NullLiteral;
903
return Kind ==
ConversionKind
.DefaultLiteral;
931
return Kind ==
ConversionKind
.ImplicitConstant;
945
return Kind ==
ConversionKind
.AnonymousFunction;
959
return Kind ==
ConversionKind
.MethodGroup;
1005
return Kind ==
ConversionKind
.IntPtr;
1061
return this.Kind ==
ConversionKind
.NoConversion ? LookupResultKind.Empty : LookupResultKind.Viable;
Binder\Semantics\Conversions\ConversionEasyOut.cs (14)
23
const byte IDN = (byte)
ConversionKind
.Identity;
24
const byte IRF = (byte)
ConversionKind
.ImplicitReference;
25
const byte XRF = (byte)
ConversionKind
.ExplicitReference;
26
const byte XNM = (byte)
ConversionKind
.ExplicitNumeric;
27
const byte NOC = (byte)
ConversionKind
.NoConversion;
28
const byte BOX = (byte)
ConversionKind
.Boxing;
29
const byte UNB = (byte)
ConversionKind
.Unboxing;
30
const byte NUM = (byte)
ConversionKind
.ImplicitNumeric;
31
const byte NUL = (byte)
ConversionKind
.ImplicitNullable;
32
const byte XNL = (byte)
ConversionKind
.ExplicitNullable;
72
public static
ConversionKind
ClassifyConversion(TypeSymbol source, TypeSymbol target)
77
return
ConversionKind
.NoConversion;
82
return
ConversionKind
.NoConversion;
84
return (
ConversionKind
)s_convkind[sourceIndex, targetIndex];
Binder\Semantics\Conversions\ConversionKindExtensions.cs (7)
6
using static Microsoft.CodeAnalysis.CSharp.
ConversionKind
;
12
public static bool IsDynamic(this
ConversionKind
conversionKind)
18
public static bool IsImplicitConversion(this
ConversionKind
conversionKind)
41
case
ConversionKind
.MethodGroup:
42
case
ConversionKind
.FunctionType:
81
public static bool IsUserDefinedConversion(this
ConversionKind
conversionKind)
94
public static bool IsPointerConversion(this
ConversionKind
kind)
Binder\Semantics\Conversions\Conversions.cs (1)
504
return new Conversion(
ConversionKind
.MethodGroup, method, isExtensionMethod: isExtensionMethod);
Binder\Semantics\Conversions\ConversionsBase.cs (76)
490
ConversionKind
convKind = ConversionEasyOut.ClassifyConversion(source, target);
491
if (convKind !=
ConversionKind
.ImplicitNullable && convKind !=
ConversionKind
.ExplicitNullable)
585
private static bool IsStandardImplicitConversionFromType(
ConversionKind
kind)
589
case
ConversionKind
.Identity:
590
case
ConversionKind
.ImplicitNumeric:
591
case
ConversionKind
.ImplicitNullable:
592
case
ConversionKind
.ImplicitReference:
593
case
ConversionKind
.Boxing:
594
case
ConversionKind
.ImplicitConstant:
595
case
ConversionKind
.ImplicitPointer:
596
case
ConversionKind
.ImplicitPointerToVoid:
597
case
ConversionKind
.ImplicitTuple:
598
case
ConversionKind
.ImplicitSpan:
662
{ Kind:
ConversionKind
.CollectionExpression } => true,
663
{ Kind:
ConversionKind
.ImplicitNullable, UnderlyingConversions: [{ Kind:
ConversionKind
.CollectionExpression }] } => true,
668
static bool isStandardImplicitConversionFromExpression(
ConversionKind
kind)
677
case
ConversionKind
.NullLiteral:
678
case
ConversionKind
.AnonymousFunction:
679
case
ConversionKind
.MethodGroup:
680
case
ConversionKind
.ImplicitEnumeration:
681
case
ConversionKind
.ImplicitDynamic:
682
case
ConversionKind
.ImplicitNullToPointer:
683
case
ConversionKind
.ImplicitTupleLiteral:
684
case
ConversionKind
.StackAllocToPointerType:
685
case
ConversionKind
.StackAllocToSpanType:
686
case
ConversionKind
.InlineArray:
687
case
ConversionKind
.InterpolatedString:
698
Debug.Assert(conversion.Kind ==
ConversionKind
.NoConversion || IsStandardImplicitConversionFromType(conversion.Kind));
890
case
ConversionKind
.Identity:
893
case
ConversionKind
.ImplicitNumeric:
896
case
ConversionKind
.ImplicitReference:
899
case
ConversionKind
.Boxing:
902
case
ConversionKind
.NoConversion:
905
case
ConversionKind
.ImplicitPointerToVoid:
909
case
ConversionKind
.ImplicitTuple:
915
case
ConversionKind
.ImplicitNullable:
923
Conversion.MakeNullableConversion(
ConversionKind
.ExplicitNullable, underlyingConversion) :
928
case
ConversionKind
.ImplicitSpan:
1014
case
ConversionKind
.ImplicitUserDefined:
1015
case
ConversionKind
.ImplicitDynamic:
1016
case
ConversionKind
.ImplicitTuple:
1017
case
ConversionKind
.ImplicitTupleLiteral:
1018
case
ConversionKind
.ImplicitNullable:
1019
case
ConversionKind
.ConditionalExpression:
1020
case
ConversionKind
.ImplicitSpan:
1176
return new Conversion(
ConversionKind
.ImplicitNullable, ImmutableArray.Create(underlyingConversion));
1312
return new Conversion(
ConversionKind
.ImplicitNullable, ImmutableArray.Create(underlyingTupleConversion));
1341
return new Conversion(
ConversionKind
.ExplicitNullable, ImmutableArray.Create(underlyingTupleConversion));
1894
ClassifyImplicitConversionFromType(source.Type, destination.Type, ref discardedUseSiteInfo).Kind !=
ConversionKind
.NoConversion;
1958
ConversionKind
.ImplicitTupleLiteral,
1975
ConversionKind
.ImplicitTuple,
2005
case
ConversionKind
.Identity:
2006
case
ConversionKind
.Boxing:
2007
case
ConversionKind
.ImplicitReference:
2008
case
ConversionKind
.ImplicitSpan:
2011
case
ConversionKind
.ImplicitTuple:
2012
case
ConversionKind
.ImplicitTupleLiteral:
2025
Debug.Assert(conversion.Kind ==
ConversionKind
.NoConversion);
2032
private static
ConversionKind
GetNumericConversion(TypeSymbol source, TypeSymbol destination)
2039
return
ConversionKind
.UnsetConversionKind;
2046
return
ConversionKind
.UnsetConversionKind;
2049
var
conversionKind = ConversionEasyOut.ClassifyConversion(source, destination);
2050
Debug.Assert(conversionKind is
ConversionKind
.ImplicitNumeric or
ConversionKind
.ExplicitNumeric);
2056
return GetNumericConversion(source, destination) ==
ConversionKind
.ImplicitNumeric;
2063
return GetNumericConversion(source, destination) ==
ConversionKind
.ExplicitNumeric;
2273
return new Conversion(
ConversionKind
.ImplicitNullable, ImmutableArray.Create(tupleConversion));
2293
ConversionKind
.ImplicitTupleLiteral,
2311
ConversionKind
.ExplicitTupleLiteral,
2322
ConversionKind
kind,
2364
ConversionKind
.ImplicitTuple,
2383
ConversionKind
.ExplicitTuple,
2400
ConversionKind
kind,
2470
return new Conversion(
ConversionKind
.ExplicitNullable, ImmutableArray.Create(tupleConversion));
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (44)
614
private static bool IsEncompassingImplicitConversionKind(
ConversionKind
kind)
619
case
ConversionKind
.NoConversion:
623
case
ConversionKind
.ImplicitDynamic:
624
case
ConversionKind
.MethodGroup:
625
case
ConversionKind
.AnonymousFunction:
626
case
ConversionKind
.InterpolatedString:
627
case
ConversionKind
.SwitchExpression:
628
case
ConversionKind
.ConditionalExpression:
629
case
ConversionKind
.ImplicitEnumeration:
630
case
ConversionKind
.StackAllocToPointerType:
631
case
ConversionKind
.StackAllocToSpanType:
632
case
ConversionKind
.InterpolatedStringHandler:
635
case
ConversionKind
.ImplicitUserDefined:
636
case
ConversionKind
.ExplicitUserDefined:
637
case
ConversionKind
.FunctionType:
640
case
ConversionKind
.ExplicitNumeric:
641
case
ConversionKind
.ExplicitEnumeration:
642
case
ConversionKind
.ExplicitNullable:
643
case
ConversionKind
.ExplicitReference:
644
case
ConversionKind
.Unboxing:
645
case
ConversionKind
.ExplicitDynamic:
646
case
ConversionKind
.ExplicitPointerToPointer:
647
case
ConversionKind
.ExplicitPointerToInteger:
648
case
ConversionKind
.ExplicitIntegerToPointer:
649
case
ConversionKind
.IntPtr:
650
case
ConversionKind
.ExplicitTupleLiteral:
651
case
ConversionKind
.ExplicitTuple:
652
case
ConversionKind
.ExplicitSpan:
656
case
ConversionKind
.Identity:
657
case
ConversionKind
.ImplicitNumeric:
658
case
ConversionKind
.ImplicitNullable:
659
case
ConversionKind
.ImplicitReference:
660
case
ConversionKind
.Boxing:
661
case
ConversionKind
.ImplicitConstant:
662
case
ConversionKind
.ImplicitPointerToVoid:
665
case
ConversionKind
.NullLiteral:
666
case
ConversionKind
.ImplicitNullToPointer:
669
case
ConversionKind
.ImplicitTupleLiteral:
670
case
ConversionKind
.ImplicitTuple:
671
case
ConversionKind
.ImplicitThrow:
674
case
ConversionKind
.DefaultLiteral:
677
case
ConversionKind
.ImplicitPointer:
679
case
ConversionKind
.InlineArray:
681
case
ConversionKind
.ImplicitSpan:
Binder\Semantics\OverloadResolution\OverloadResolution.cs (20)
2209
if (allSame && Conversions.ClassifyImplicitConversionFromType(type1Normalized, type2Normalized, ref useSiteInfo).Kind !=
ConversionKind
.Identity)
2218
if (Conversions.ClassifyImplicitConversionFromType(type1Normalized, type2Normalized, ref useSiteInfo).Kind !=
ConversionKind
.Identity)
2331
if (Conversions.ClassifyImplicitConversionFromType(type1Normalized, type2Normalized, ref useSiteInfo).Kind !=
ConversionKind
.Identity)
2693
return conversionsOpt.Any(static c => c.Kind ==
ConversionKind
.FunctionType);
2903
return conv1.Kind ==
ConversionKind
.Identity ? BetterResult.Left : BetterResult.Neither;
2907
return conv2.Kind ==
ConversionKind
.Identity ? BetterResult.Right : BetterResult.Neither;
2959
case (
ConversionKind
.InterpolatedStringHandler,
ConversionKind
.InterpolatedStringHandler):
2961
case (
ConversionKind
.InterpolatedStringHandler, _):
2963
case (_,
ConversionKind
.InterpolatedStringHandler):
2970
case (
ConversionKind
.FunctionType,
ConversionKind
.FunctionType):
2972
case (_,
ConversionKind
.FunctionType):
2974
case (
ConversionKind
.FunctionType, _):
3006
if (conv1.Kind ==
ConversionKind
.CollectionExpression &&
3007
conv2.Kind ==
ConversionKind
.CollectionExpression)
3014
case (
ConversionKind
.ImplicitSpan,
ConversionKind
.ImplicitSpan):
3016
case (_,
ConversionKind
.ImplicitSpan):
3018
case (
ConversionKind
.ImplicitSpan, _):
Binder\SwitchBinder.cs (1)
417
Debug.Assert(conversion.Kind ==
ConversionKind
.ImplicitUserDefined);
BoundTree\BoundExpression.cs (7)
460
public
ConversionKind
ConversionKind
502
case
ConversionKind
.Identity:
505
case
ConversionKind
.ImplicitNumeric:
506
case
ConversionKind
.ImplicitEnumeration:
508
case
ConversionKind
.ImplicitReference:
509
case
ConversionKind
.Boxing:
513
case
ConversionKind
.ExplicitNumeric:
CodeGen\EmitConversion.cs (31)
44
case
ConversionKind
.MethodGroup:
46
case
ConversionKind
.ImplicitNullToPointer:
95
case
ConversionKind
.Identity:
98
case
ConversionKind
.ImplicitNumeric:
99
case
ConversionKind
.ExplicitNumeric:
102
case
ConversionKind
.ImplicitReference:
103
case
ConversionKind
.Boxing:
109
case
ConversionKind
.ExplicitReference:
110
case
ConversionKind
.Unboxing:
116
case
ConversionKind
.ImplicitEnumeration:
117
case
ConversionKind
.ExplicitEnumeration:
120
case
ConversionKind
.ImplicitUserDefined:
121
case
ConversionKind
.ExplicitUserDefined:
122
case
ConversionKind
.AnonymousFunction:
123
case
ConversionKind
.MethodGroup:
124
case
ConversionKind
.ImplicitTupleLiteral:
125
case
ConversionKind
.ImplicitTuple:
126
case
ConversionKind
.ExplicitTupleLiteral:
127
case
ConversionKind
.ExplicitTuple:
128
case
ConversionKind
.ImplicitDynamic:
129
case
ConversionKind
.ExplicitDynamic:
130
case
ConversionKind
.ImplicitThrow:
133
case
ConversionKind
.ImplicitPointerToVoid:
134
case
ConversionKind
.ExplicitPointerToPointer:
135
case
ConversionKind
.ImplicitPointer:
137
case
ConversionKind
.ExplicitPointerToInteger:
138
case
ConversionKind
.ExplicitIntegerToPointer:
167
case
ConversionKind
.PinnedObjectToPointer:
173
case
ConversionKind
.ImplicitNullToPointer:
175
case
ConversionKind
.ImplicitNullable:
176
case
ConversionKind
.ExplicitNullable:
CodeGen\EmitExpression.cs (13)
1234
if (conversion.ConversionKind ==
ConversionKind
.Unboxing)
1273
if (receiver.Kind == BoundKind.Conversion && ((BoundConversion)receiver).ConversionKind ==
ConversionKind
.Unboxing)
1540
case
ConversionKind
.Boxing:
1545
case
ConversionKind
.MethodGroup:
1546
case
ConversionKind
.AnonymousFunction:
1549
case
ConversionKind
.ExplicitReference:
1550
case
ConversionKind
.ImplicitReference:
3947
var
conversionKind = conversion.ConversionKind;
3948
Debug.Assert(conversionKind !=
ConversionKind
.NullLiteral && conversionKind !=
ConversionKind
.DefaultLiteral);
3951
conversionKind !=
ConversionKind
.MethodGroup &&
3952
conversionKind !=
ConversionKind
.NullLiteral &&
3953
conversionKind !=
ConversionKind
.DefaultLiteral)
CodeGen\EmitOperators.cs (1)
375
if (comparand is BoundConversion { Type.SpecialType: SpecialType.System_Object, ConversionKind:
ConversionKind
.Boxing, Operand.Type: TypeParameterSymbol { AllowsRefLikeType: true } } &&
Compilation\CSharpSemanticModel.cs (15)
2112
conversion = new Conversion(
ConversionKind
.AnonymousFunction, lambda.Symbol, false);
2142
if (highestBoundExpr is BoundConversion { ConversionKind:
ConversionKind
.SwitchExpression, Conversion: var convertedSwitchConversion })
2160
if (highestBoundExpr is BoundConversion { ConversionKind:
ConversionKind
.ConditionalExpression })
2179
if (highestBoundExpr is BoundConversion { ConversionKind:
ConversionKind
.CollectionExpression or
ConversionKind
.NoConversion, Conversion: var convertedCollectionConversion })
2185
else if (highestBoundExpr is BoundConversion { ConversionKind:
ConversionKind
.ImplicitNullable, Conversion.UnderlyingConversions: [{ Kind:
ConversionKind
.CollectionExpression }] } boundConversion)
2209
if (conversion.Kind ==
ConversionKind
.AnonymousFunction)
2233
conversion = new Conversion(
ConversionKind
.MethodGroup, delegateCreation.MethodOpt, delegateCreation.IsExtensionMethod);
2239
conversion = new Conversion(
ConversionKind
.AnonymousFunction, lambda.Symbol, delegateCreation.IsExtensionMethod);
2245
conversion = new Conversion(
ConversionKind
.AnonymousFunction, lambda.Symbol, delegateCreation.IsExtensionMethod);
2253
else if (boundExpr is BoundConversion { ConversionKind:
ConversionKind
.MethodGroup, Conversion: var exprConversion, Type: { TypeKind: TypeKind.FunctionPointer }, SymbolOpt: var symbol })
3540
if ((conversion.ConversionKind ==
ConversionKind
.MethodGroup) && conversion.IsExtensionMethod)
4310
if (conversion.ConversionKind ==
ConversionKind
.MethodGroup)
4314
else if (conversion.Operand is BoundConversion { ConversionKind:
ConversionKind
.MethodGroup } nestedMethodGroupConversion)
Compilation\DeconstructionInfo.cs (3)
38
return _conversion.Kind ==
ConversionKind
.Deconstruction
51
return _conversion.Kind ==
ConversionKind
.Deconstruction
64
if (_conversion.Kind !=
ConversionKind
.Deconstruction)
FlowAnalysis\AbstractFlowPass.cs (3)
1742
if (node.ConversionKind ==
ConversionKind
.MethodGroup)
2662
|| (expr is BoundConversion { ConversionKind:
ConversionKind
.ExplicitNullable or
ConversionKind
.ImplicitNullable } conv
FlowAnalysis\DefiniteAssignment.cs (1)
934
boundConversion.ConversionKind ==
ConversionKind
.IntPtr)
FlowAnalysis\NullableWalker.cs (87)
2142
case
ConversionKind
.ExplicitNullable:
2161
case
ConversionKind
.ConditionalExpression or
ConversionKind
.SwitchExpression or
ConversionKind
.ObjectCreation when
2164
case
ConversionKind
.Identity:
2165
case
ConversionKind
.DefaultLiteral:
2166
case
ConversionKind
.ImplicitReference:
2167
case
ConversionKind
.ImplicitTupleLiteral:
2168
case
ConversionKind
.Boxing:
2597
var
conversionKind = conversion.Conversion.Kind;
2598
return (conversionKind ==
ConversionKind
.DefaultLiteral || conversionKind ==
ConversionKind
.NullLiteral) &&
2845
Debug.Assert(conversion.Kind is
ConversionKind
.Identity or
ConversionKind
.ImplicitReference);
5813
case
ConversionKind
.ImplicitReference:
5814
case
ConversionKind
.ExplicitReference:
7823
if (conversion is { IsValid: true, Kind:
ConversionKind
.ImplicitUserDefined })
9030
Debug.Assert(conversion.Kind ==
ConversionKind
.ImplicitTuple || conversion.Kind ==
ConversionKind
.ExplicitTuple);
9053
case
ConversionKind
.Identity:
9054
case
ConversionKind
.NullLiteral:
9055
case
ConversionKind
.DefaultLiteral:
9056
case
ConversionKind
.ImplicitReference:
9057
case
ConversionKind
.ExplicitReference:
9058
case
ConversionKind
.Boxing:
9059
case
ConversionKind
.Unboxing:
9062
case
ConversionKind
.ImplicitTupleLiteral:
9063
case
ConversionKind
.ExplicitTupleLiteral:
9064
case
ConversionKind
.ImplicitTuple:
9065
case
ConversionKind
.ExplicitTuple:
9079
case
ConversionKind
.ImplicitNullable:
9080
case
ConversionKind
.ExplicitNullable:
9096
case
ConversionKind
.ImplicitUserDefined:
9097
case
ConversionKind
.ExplicitUserDefined:
9307
conversion = Conversion.MakeNullableConversion(
ConversionKind
.ImplicitNullable, Conversion.Identity);
9337
case
ConversionKind
.MethodGroup:
9367
case
ConversionKind
.AnonymousFunction:
9384
case
ConversionKind
.FunctionType:
9388
case
ConversionKind
.InterpolatedString:
9392
case
ConversionKind
.InterpolatedStringHandler:
9397
case
ConversionKind
.ObjectCreation:
9398
case
ConversionKind
.CollectionExpression:
9399
case
ConversionKind
.SwitchExpression:
9400
case
ConversionKind
.ConditionalExpression:
9404
case
ConversionKind
.ExplicitUserDefined:
9405
case
ConversionKind
.ImplicitUserDefined:
9408
case
ConversionKind
.ExplicitDynamic:
9409
case
ConversionKind
.ImplicitDynamic:
9413
case
ConversionKind
.Boxing:
9417
case
ConversionKind
.Unboxing:
9433
case
ConversionKind
.ImplicitThrow:
9437
case
ConversionKind
.NoConversion:
9441
case
ConversionKind
.NullLiteral:
9442
case
ConversionKind
.DefaultLiteral:
9444
goto case
ConversionKind
.Identity;
9446
case
ConversionKind
.Identity:
9468
goto case
ConversionKind
.ImplicitTuple;
9470
goto case
ConversionKind
.ImplicitReference;
9472
case
ConversionKind
.ImplicitReference:
9473
case
ConversionKind
.ExplicitReference:
9484
case
ConversionKind
.ImplicitNullable:
9510
case
ConversionKind
.ExplicitNullable:
9526
goto case
ConversionKind
.ImplicitNullable;
9528
case
ConversionKind
.ImplicitTuple:
9529
case
ConversionKind
.ImplicitTupleLiteral:
9530
case
ConversionKind
.ExplicitTupleLiteral:
9531
case
ConversionKind
.ExplicitTuple:
9537
case
ConversionKind
.ImplicitTuple:
9538
case
ConversionKind
.ExplicitTuple:
9561
case
ConversionKind
.Deconstruction:
9566
case
ConversionKind
.ExplicitEnumeration:
9570
case
ConversionKind
.InlineArray:
9578
case
ConversionKind
.ImplicitSpan:
9579
case
ConversionKind
.ExplicitSpan:
9582
var
previousKind = conversion.Kind;
9850
Debug.Assert(conversion.Kind ==
ConversionKind
.ExplicitUserDefined || conversion.Kind ==
ConversionKind
.ImplicitUserDefined);
10665
Debug.Assert(conversion.Kind ==
ConversionKind
.Deconstruction);
10848
underlyingConversion.Kind ==
ConversionKind
.ImplicitNullable &&
10923
case
ConversionKind
.Identity:
10924
case
ConversionKind
.ImplicitTupleLiteral:
11630
(conversion.Kind ==
ConversionKind
.ExplicitReference && resultType.SpecialType == SpecialType.System_String))
11838
if (conversion.Kind ==
ConversionKind
.NoConversion)
12364
case
ConversionKind
.Identity:
12365
case
ConversionKind
.ImplicitReference:
12366
case
ConversionKind
.Boxing:
12367
case
ConversionKind
.ImplicitNullable:
FlowAnalysis\NullableWalker.DebugVerifier.cs (1)
396
if (node.ConversionKind ==
ConversionKind
.InterpolatedStringHandler)
FlowAnalysis\NullableWalker_Patterns.cs (6)
466
case
ConversionKind
.Identity:
467
case
ConversionKind
.ImplicitReference:
470
case
ConversionKind
.ExplicitNullable when AreNullableAndUnderlyingTypes(inputType, e.Type, out _):
767
ConversionKind
.Identity => true,
768
ConversionKind
.ImplicitReference => true,
769
ConversionKind
.Boxing => true,
Generated\BoundNodes.xml.Generated.cs (3)
2841
public BoundIsOperator(SyntaxNode syntax, BoundExpression operand, BoundTypeExpression targetType,
ConversionKind
conversionKind, TypeSymbol type, bool hasErrors = false)
2857
public
ConversionKind
ConversionKind { get; }
2862
public BoundIsOperator Update(BoundExpression operand, BoundTypeExpression targetType,
ConversionKind
conversionKind, TypeSymbol type)
Lowering\ClosureConversion\ClosureConversion.cs (2)
1397
Debug.Assert(conversion.ConversionKind !=
ConversionKind
.MethodGroup);
1398
if (conversion.ConversionKind ==
ConversionKind
.AnonymousFunction)
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (13)
538
conversion.ConversionKind !=
ConversionKind
.NullLiteral &&
621
var
kind = _bound.Compilation.Conversions.ClassifyConversionFromType(oldType, newType, isChecked: false, ref useSiteInfo).Kind;
627
case
ConversionKind
.Identity:
629
case
ConversionKind
.ExplicitNumeric:
690
case
ConversionKind
.MethodGroup:
695
case
ConversionKind
.ExplicitUserDefined:
696
case
ConversionKind
.ImplicitUserDefined:
697
case
ConversionKind
.IntPtr:
705
!TypeSymbol.Equals(strippedOperandType, ((node.ConversionKind ==
ConversionKind
.ExplicitUserDefined) ? conversionInputType : conversionInputType.StrippedType()), TypeCompareKind.ConsiderEverything2);
718
case
ConversionKind
.ImplicitReference:
719
case
ConversionKind
.Identity:
724
case
ConversionKind
.ImplicitNullable:
737
case
ConversionKind
.NullLiteral:
Lowering\DiagnosticsPass_ExpressionTrees.cs (10)
850
case
ConversionKind
.MethodGroup:
855
case
ConversionKind
.AnonymousFunction:
864
case
ConversionKind
.ImplicitDynamic:
865
case
ConversionKind
.ExplicitDynamic:
872
case
ConversionKind
.ExplicitTuple:
873
case
ConversionKind
.ExplicitTupleLiteral:
874
case
ConversionKind
.ImplicitTuple:
875
case
ConversionKind
.ImplicitTupleLiteral:
882
case
ConversionKind
.InlineArray:
889
case
ConversionKind
.InterpolatedStringHandler:
Lowering\DiagnosticsPass_Warnings.cs (8)
435
if (conversion.ConversionKind !=
ConversionKind
.ImplicitNumeric &&
436
conversion.ConversionKind !=
ConversionKind
.ImplicitConstant)
580
if (conv.ConversionKind ==
ConversionKind
.ImplicitNullable)
868
if (conv.ConversionKind ==
ConversionKind
.ExplicitNullable || conv.ConversionKind ==
ConversionKind
.ImplicitNullable)
894
case
ConversionKind
.Deconstruction:
895
case
ConversionKind
.ImplicitTupleLiteral:
896
case
ConversionKind
.Identity:
Lowering\Extensions.cs (7)
61
case
ConversionKind
.ImplicitNullable:
62
case
ConversionKind
.ExplicitNullable:
66
case
ConversionKind
.ImplicitEnumeration:
108
case
ConversionKind
.NullLiteral:
112
case
ConversionKind
.DefaultLiteral:
115
case
ConversionKind
.ImplicitNullable:
116
case
ConversionKind
.ExplicitNullable:
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (1)
215
case
ConversionKind
.MethodGroup:
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (2)
222
if (conversion.Kind ==
ConversionKind
.ExplicitNullable &&
489
(conv.IsIdentity || conv.Kind ==
ConversionKind
.ImplicitReference || conv.IsBoxing) &&
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (1)
723
if (conversion.ConversionKind ==
ConversionKind
.Boxing)
Lowering\LocalRewriter\LocalRewriter_Call.cs (30)
587
case
ConversionKind
.AnonymousFunction:
588
case
ConversionKind
.ImplicitConstant:
589
case
ConversionKind
.MethodGroup:
590
case
ConversionKind
.NullLiteral:
591
case
ConversionKind
.DefaultLiteral:
594
case
ConversionKind
.Boxing:
595
case
ConversionKind
.ImplicitDynamic:
596
case
ConversionKind
.ExplicitDynamic:
597
case
ConversionKind
.ExplicitEnumeration:
598
case
ConversionKind
.ExplicitNullable:
599
case
ConversionKind
.ExplicitNumeric:
600
case
ConversionKind
.ExplicitReference:
601
case
ConversionKind
.Identity:
602
case
ConversionKind
.ImplicitEnumeration:
603
case
ConversionKind
.ImplicitNullable:
604
case
ConversionKind
.ImplicitNumeric:
605
case
ConversionKind
.ImplicitReference:
606
case
ConversionKind
.Unboxing:
607
case
ConversionKind
.ExplicitPointerToInteger:
608
case
ConversionKind
.ExplicitPointerToPointer:
609
case
ConversionKind
.ImplicitPointerToVoid:
610
case
ConversionKind
.ImplicitNullToPointer:
611
case
ConversionKind
.ExplicitIntegerToPointer:
615
case
ConversionKind
.ExplicitUserDefined:
616
case
ConversionKind
.ImplicitUserDefined:
619
case
ConversionKind
.IntPtr:
620
case
ConversionKind
.ImplicitThrow:
831
if (argument is BoundConversion { ConversionKind:
ConversionKind
.InterpolatedStringHandler, Operand: BoundInterpolatedString or BoundBinaryOperator } conversion)
905
if (argument is BoundConversion { ConversionKind:
ConversionKind
.InterpolatedStringHandler, Operand: BoundInterpolatedString or BoundBinaryOperator } conversion)
1406
=> expr is BoundConversion conv && conv.ConversionKind ==
ConversionKind
.AnonymousFunction;
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (5)
32
Debug.Assert(conversion.Kind ==
ConversionKind
.CollectionExpression);
206
if (conversion.Kind is not (
ConversionKind
.Identity or
ConversionKind
.ImplicitReference))
213
return conversion.Kind is
ConversionKind
.Identity or
ConversionKind
.ImplicitReference;
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (60)
22
case
ConversionKind
.InterpolatedString:
24
case
ConversionKind
.InterpolatedStringHandler:
37
case
ConversionKind
.SwitchExpression:
41
case
ConversionKind
.ConditionalExpression:
45
case
ConversionKind
.ObjectCreation:
61
case
ConversionKind
.ImplicitNullable when node.Conversion.UnderlyingConversions[0].Kind is
ConversionKind
.CollectionExpression:
65
case
ConversionKind
.CollectionExpression:
72
_inExpressionLambda = _inExpressionLambda || (node.ConversionKind ==
ConversionKind
.AnonymousFunction && !wasInExpressionLambda && rewrittenType.IsExpressionTree());
250
return conversion.ConversionKind ==
ConversionKind
.Identity && !conversion.ExplicitCastInCode;
317
case
ConversionKind
.Identity:
350
case
ConversionKind
.ExplicitUserDefined:
351
case
ConversionKind
.ImplicitUserDefined:
359
case
ConversionKind
.IntPtr:
363
case
ConversionKind
.ImplicitNullable:
364
case
ConversionKind
.ExplicitNullable:
373
case
ConversionKind
.Boxing:
397
case
ConversionKind
.NullLiteral:
398
case
ConversionKind
.DefaultLiteral:
406
case
ConversionKind
.ImplicitReference:
407
case
ConversionKind
.ExplicitReference:
415
case
ConversionKind
.ImplicitConstant:
422
goto case
ConversionKind
.ImplicitNumeric;
424
case
ConversionKind
.ImplicitNumeric:
425
case
ConversionKind
.ExplicitNumeric:
438
case
ConversionKind
.ImplicitTupleLiteral:
439
case
ConversionKind
.ExplicitTupleLiteral:
448
case
ConversionKind
.ImplicitThrow:
455
case
ConversionKind
.ImplicitEnumeration:
484
goto case
ConversionKind
.ExplicitEnumeration;
486
case
ConversionKind
.ExplicitEnumeration:
531
case
ConversionKind
.ImplicitDynamic:
532
case
ConversionKind
.ExplicitDynamic:
536
return _dynamicFactory.MakeDynamicConversion(rewrittenOperand, explicitCastInCode || conversion.Kind ==
ConversionKind
.ExplicitDynamic, conversion.IsArrayIndex, @checked, rewrittenType).ToExpression();
538
case
ConversionKind
.ImplicitTuple:
539
case
ConversionKind
.ExplicitTuple:
548
case
ConversionKind
.MethodGroup when oldNodeOpt is { Type: { TypeKind: TypeKind.FunctionPointer } funcPtrType }:
559
case
ConversionKind
.MethodGroup:
592
case
ConversionKind
.InlineArray:
615
case
ConversionKind
.ImplicitSpan:
616
case
ConversionKind
.ExplicitSpan:
647
Debug.Assert(conversion.Kind is
ConversionKind
.ImplicitSpan);
679
Debug.Assert(conversion.Kind is
ConversionKind
.ImplicitSpan);
698
Debug.Assert(conversion.Kind is
ConversionKind
.ImplicitSpan);
1009
case BoundConversion { Conversion: { Kind:
ConversionKind
.ImplicitNullable }, Operand: var convertedArgument }
1014
case BoundConversion { Conversion: { Kind:
ConversionKind
.ImplicitNullable, UnderlyingConversions: var underlying }, Operand: var convertedArgument } conversion
1015
when underlying.Length == 1 && underlying[0].Kind ==
ConversionKind
.ImplicitTuple && !convertedArgument.Type!.IsNullableType():
1133
var
conversionKind = conversion.Kind.IsImplicitConversion() ?
ConversionKind
.ImplicitUserDefined :
ConversionKind
.ExplicitUserDefined;
1739
ConversionKind
conversionKind = isImplicit ?
ConversionKind
.ImplicitUserDefined :
ConversionKind
.ExplicitUserDefined;
1758
case
ConversionKind
.ExplicitUserDefined:
1759
case
ConversionKind
.ImplicitUserDefined:
1790
case
ConversionKind
.IntPtr:
1802
case
ConversionKind
.ImplicitNumeric:
1803
case
ConversionKind
.ExplicitNumeric:
1817
case
ConversionKind
.ImplicitEnumeration:
1818
case
ConversionKind
.ExplicitEnumeration:
Lowering\LocalRewriter\LocalRewriter_DeconstructionAssignmentOperator.cs (4)
20
Debug.Assert(right.Conversion.Kind ==
ConversionKind
.Deconstruction);
219
Debug.Assert(conversion.Kind ==
ConversionKind
.Deconstruction);
307
if ((tupleConversion.Conversion.Kind ==
ConversionKind
.ImplicitTupleLiteral || tupleConversion.Conversion.Kind ==
ConversionKind
.Identity)
Lowering\LocalRewriter\LocalRewriter_IsOperator.cs (1)
30
ConversionKind
conversionKind,
Lowering\LocalRewriter\LocalRewriter_NullCoalescingOperator.cs (4)
92
BoundNode.GetConversion(leftConversion, leftPlaceholder) is { Kind:
ConversionKind
.Identity or
ConversionKind
.ImplicitReference })
99
if (BoundNode.GetConversion(leftConversion, leftPlaceholder) is { IsIdentity: true } or { Kind:
ConversionKind
.ExplicitNullable })
224
if (boundConversion.ConversionKind !=
ConversionKind
.Identity)
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (3)
222
not (BoundCall or BoundConversion { ConversionKind:
ConversionKind
.Boxing, Type.SpecialType: SpecialType.System_Object, Operand.Type.SpecialType: SpecialType.System_Char })
286
if (argument is BoundConversion { ConversionKind:
ConversionKind
.Boxing, Type.SpecialType: SpecialType.System_Object, Operand: { Type.SpecialType: SpecialType.System_Char } operand })
583
if (conv.ConversionKind ==
ConversionKind
.Boxing)
Lowering\LocalRewriter\LocalRewriter_StringInterpolation.cs (2)
18
Debug.Assert(conversion.ConversionKind ==
ConversionKind
.InterpolatedString);
240
if (arg is BoundConversion { Conversion: { Kind:
ConversionKind
.InterpolatedStringHandler }, ExplicitCastInCode: false, Operand: var operand })
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (16)
49
case BoundConversion { Conversion: { Kind:
ConversionKind
.Identity }, Operand: var o }:
51
case BoundConversion { Conversion: { Kind:
ConversionKind
.ImplicitTupleLiteral }, Operand: var o }:
89
(kind ==
ConversionKind
.ImplicitNullable || kind ==
ConversionKind
.ExplicitNullable) &&
103
if (expr is BoundConversion { ConversionKind:
ConversionKind
.ImplicitTuple, Conversion: var conversion } boundConversion)
190
case BoundConversion { Conversion: { Kind:
ConversionKind
.DefaultLiteral } }: // This conversion can be performed lazily, but need not be saved. It is treated as non-side-effecting.
211
var conversion = Conversion.MakeNullableConversion(
ConversionKind
.ImplicitNullable, Conversion.Identity);
224
bool conversionMustBePerformedOnOriginalExpression(
ConversionKind
kind)
230
case
ConversionKind
.AnonymousFunction: // a lambda cannot be saved without a target type
231
case
ConversionKind
.MethodGroup: // similarly for a method group
232
case
ConversionKind
.InterpolatedString: // an interpolated string must be saved in interpolated form
233
case
ConversionKind
.SwitchExpression: // a switch expression must have its arms converted
234
case
ConversionKind
.StackAllocToPointerType: // a stack alloc is not well-defined without an enclosing conversion
235
case
ConversionKind
.ConditionalExpression: // a conditional expression must have its alternatives converted
236
case
ConversionKind
.StackAllocToSpanType:
237
case
ConversionKind
.ObjectCreation:
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (1)
508
Debug.Assert(methodArgumentInfo.Arguments.All(arg => arg is not BoundConversion { ConversionKind:
ConversionKind
.InterpolatedStringHandler }));
Lowering\SpillSequenceSpiller.cs (1)
1176
if (node.ConversionKind ==
ConversionKind
.AnonymousFunction && node.Type.IsExpressionTree())
Lowering\SyntheticBoundNodeFactory.cs (4)
571
Debug.Assert(conversion.Kind !=
ConversionKind
.NoConversion);
572
if (conversion.Kind !=
ConversionKind
.Identity)
1519
if (conversion.Kind ==
ConversionKind
.ImplicitReference && arg.IsLiteralNull())
1525
if (conversion.Kind ==
ConversionKind
.ExplicitNullable &&
Operations\CSharpOperationFactory.cs (2)
1021
if (boundConversion.ConversionKind ==
ConversionKind
.InterpolatedStringHandler)
1028
if (boundConversion.ConversionKind == CSharp.
ConversionKind
.MethodGroup)
Operations\CSharpOperationFactory_Methods.cs (1)
145
if (boundConversion.ConversionKind ==
ConversionKind
.MethodGroup)
Symbols\Source\SourceComplexParameterSymbol.cs (1)
402
((BoundConversion)convertedExpression).ConversionKind !=
ConversionKind
.DefaultLiteral)
Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs (1)
1372
return conversions.ClassifyImplicitConversionFromType(sourceType, targetType, ref discardedUseSiteInfo).Kind !=
ConversionKind
.NoConversion;
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (190)
CodeGen\CodeGenAwaitForeachTests.cs (20)
945
Assert.Equal(
ConversionKind
.NoConversion, info.ElementConversion.Kind);
946
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
1669
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
1670
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
3726
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
3727
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
4473
Assert.Equal(
ConversionKind
.ExplicitUserDefined, info.ElementConversion.Kind);
4475
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
4547
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
4548
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
4657
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
4658
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
4756
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
4757
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
5060
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
5061
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
5141
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
5142
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
6447
Assert.Equal(
ConversionKind
.Identity, info.ElementConversion.Kind);
6448
Assert.Equal(
ConversionKind
.Identity, info.CurrentConversion.Kind);
CodeGen\CodeGenDeconstructTests.cs (16)
105
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(right).Kind);
271
Assert.Equal(
ConversionKind
.ImplicitNumeric, nested[0].Conversion.Value.Kind);
275
Assert.Equal(
ConversionKind
.Identity, nested[1].Conversion.Value.Kind);
283
Assert.Equal(
ConversionKind
.UnsetConversionKind, defaultInfo.Conversion.Value.Kind);
1121
Assert.Equal(
ConversionKind
.Identity, nested[0].Conversion.Value.Kind);
1125
Assert.Equal(
ConversionKind
.Identity, nested[1].Conversion.Value.Kind);
1131
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, tupleConversion.Kind);
1132
Assert.Equal(
ConversionKind
.ImplicitNumeric, tupleConversion.UnderlyingConversions[0].Kind);
2301
Assert.Equal(
ConversionKind
.Identity, nested[0].Conversion.Value.Kind);
2314
Assert.Equal(
ConversionKind
.Identity, nested2[0].Conversion.Value.Kind);
2318
Assert.Equal(
ConversionKind
.Identity, nested2[1].Conversion.Value.Kind);
3451
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(literal).Kind);
3487
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(literal).Kind);
3493
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(nestedLiteral).Kind);
4052
Assert.Equal(
ConversionKind
.Identity, nested[0].Conversion.Value.Kind);
4056
Assert.Equal(
ConversionKind
.Identity, nested[1].Conversion.Value.Kind);
CodeGen\CodeGenFunctionPointersTests.cs (1)
10821
Assert.Equal(
ConversionKind
.AnonymousFunction, conversion.Kind);
CodeGen\CodeGenTupleEqualityTests.cs (24)
383
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(tupleY).Kind);
719
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(t).Kind);
803
Assert.Equal(
ConversionKind
.ImplicitReference, model.GetConversion(tuple1Null).Kind);
816
Assert.Equal(
ConversionKind
.ImplicitReference, model.GetConversion(tuple2Null).Kind);
863
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(t1).Kind);
872
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(tuple).Kind);
880
Assert.Equal(
ConversionKind
.ImplicitNumeric, model.GetConversion(two).Kind);
911
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(t1).Kind);
920
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(tuple).Kind);
928
Assert.Equal(
ConversionKind
.ImplicitConstant, model.GetConversion(two).Kind);
960
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(t1).Kind);
976
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(t2).Kind);
1014
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(lastTuple).Kind);
1021
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(nullNull).Kind);
1028
Assert.Equal(
ConversionKind
.ImplicitReference, model.GetConversion(lastNull).Kind);
1512
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(t).Kind);
1523
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(nestedTuple).Kind);
1534
Assert.Equal(
ConversionKind
.ImplicitReference, model.GetConversion(nestedNull).Kind);
5166
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(leftCast).Kind);
5174
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, model.GetConversion(leftTuple).Kind);
5182
Assert.Equal(
ConversionKind
.ImplicitReference, model.GetConversion(leftNull).Kind);
5190
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(leftNestedTuple).Kind);
5197
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(rightCast).Kind);
5204
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, model.GetConversion(rightTuple).Kind);
CodeGen\CodeGenTupleTest.cs (129)
7501
Assert.Equal(
ConversionKind
.Identity, castConversion.Kind);
7505
Assert.Equal(
ConversionKind
.ExplicitNullable, tupleConversion.Kind);
7507
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, tupleConversion.UnderlyingConversions[0].Kind);
7534
Assert.Equal(
ConversionKind
.ImplicitNullable, tupleConversion.Kind);
7536
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, tupleConversion.UnderlyingConversions[0].Kind);
7576
Assert.Equal(
ConversionKind
.ImplicitUserDefined, conversion1.Kind);
7585
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, conversion2.Kind);
7594
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, conversion3.Kind);
7642
Assert.Equal(
ConversionKind
.Identity, conversion.Kind);
8297
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(node).Kind);
8336
Assert.Equal(
ConversionKind
.ExplicitNullable, model.GetConversion(node).Kind);
8343
Assert.Equal(
ConversionKind
.ImplicitConstant, model.GetConversion(element).Kind);
8348
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(element).Kind);
8384
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(node).Kind);
8412
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(node).Kind);
8441
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, model.GetConversion(node).Kind);
8448
Assert.Equal(
ConversionKind
.ImplicitConstant, model.GetConversion(element).Kind);
8453
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(element).Kind);
8459
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(node.Parent).Kind);
8489
Assert.Equal(
ConversionKind
.ImplicitTuple, model.GetConversion(node).Kind);
8523
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(node).Kind);
8556
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(node).Kind);
8585
Assert.Equal(
ConversionKind
.ExplicitNullable, model.GetConversion(node).Kind);
8592
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(element).Kind);
8597
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(element).Kind);
8638
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(node.Parent).Kind);
8725
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(node).Kind);
8763
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, model.GetConversion(node).Kind);
8770
Assert.Equal(
ConversionKind
.ImplicitConstant, model.GetConversion(element).Kind);
8775
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(element).Kind);
8810
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(node).Kind);
8848
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, model.GetConversion(node).Kind);
8899
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(node).Kind);
8946
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, model.GetConversion(node).Kind);
8953
Assert.Equal(
ConversionKind
.ImplicitConstant, model.GetConversion(element).Kind);
8958
Assert.Equal(
ConversionKind
.ExplicitUserDefined, model.GetConversion(element).Kind);
9020
Assert.Equal(
ConversionKind
.ImplicitUserDefined, model.GetConversion(node).Kind);
9149
Assert.Equal(
ConversionKind
.ImplicitUserDefined, model.GetConversion(node).Kind);
9230
Assert.Equal(
ConversionKind
.ImplicitUserDefined, model.GetConversion(node).Kind);
9313
Assert.Equal(
ConversionKind
.ImplicitUserDefined, model.GetConversion(node).Kind);
16546
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(node).Kind);
17245
Assert.Equal(
ConversionKind
.AnonymousFunction, model.GetConversion(n5).Kind);
17278
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(n1).Kind);
17285
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(n2).Kind);
17292
Assert.Equal(
ConversionKind
.ImplicitConstant, model.GetConversion(n3).Kind);
17306
Assert.Equal(
ConversionKind
.AnonymousFunction, model.GetConversion(n5).Kind);
17337
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(n1).Kind);
17344
Assert.Equal(
ConversionKind
.ImplicitTupleLiteral, model.GetConversion(n2).Kind);
18850
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_string1, int_string1).Kind);
18851
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_string1, int_string2).Kind);
18852
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_string1, int_stringNamed).Kind);
18868
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_string1, int_string1).Kind);
18869
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_string1, int_string2).Kind);
18870
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_string1, int_stringNamed).Kind);
18871
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_string2, int_string1).Kind);
18872
Assert.Equal(
ConversionKind
.Identity, comp.ClassifyConversion(int_stringNamed, int_string1).Kind);
18890
Assert.Equal(
ConversionKind
.NoConversion, comp.ClassifyConversion(int_int, int_int_int).Kind);
18891
Assert.Equal(
ConversionKind
.NoConversion, comp.ClassifyConversion(int_int, string_string).Kind);
18892
Assert.Equal(
ConversionKind
.NoConversion, comp.ClassifyConversion(int_int1, string_string).Kind);
18893
Assert.Equal(
ConversionKind
.NoConversion, comp.ClassifyConversion(int_int1, int_int_int).Kind);
18894
Assert.Equal(
ConversionKind
.NoConversion, comp.ClassifyConversion(string_string, int_int1).Kind);
18895
Assert.Equal(
ConversionKind
.NoConversion, comp.ClassifyConversion(int_int_int, int_int1).Kind);
18911
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string, int_object).Kind);
18912
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string).Kind);
18931
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_object2).Kind);
18932
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_object1).Kind);
18933
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_object2).Kind);
18935
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object2, int_string1).Kind);
18936
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object1, int_string2).Kind);
18937
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object2, int_string2).Kind);
18956
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_string2).Kind);
18957
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_string1).Kind);
18958
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_object).Kind);
18959
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_object).Kind);
18961
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string1).Kind);
18962
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string2).Kind);
18981
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_string2).Kind);
18982
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_string1).Kind);
18983
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_object).Kind);
18984
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_object).Kind);
18986
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string1).Kind);
18987
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string2).Kind);
19007
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_string2).Kind);
19008
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_string1).Kind);
19009
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_object).Kind);
19010
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_object).Kind);
19012
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string1).Kind);
19013
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string2).Kind);
19034
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_string2).Kind);
19035
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_string1).Kind);
19036
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string1, int_object).Kind);
19037
Assert.Equal(
ConversionKind
.ImplicitTuple, comp.ClassifyConversion(int_string2, int_object).Kind);
19039
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string1).Kind);
19040
Assert.Equal(
ConversionKind
.ExplicitTuple, comp.ClassifyConversion(int_object, int_string2).Kind);
19073
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_string1).Kind);
19074
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_string1, isExplicitInSource: true).Kind);
19075
Assert.Equal(
ConversionKind
.ImplicitTuple, model.ClassifyConversion(expr1, int_object).Kind);
19076
Assert.Equal(
ConversionKind
.ExplicitTuple, model.ClassifyConversion(expr1, int_object, isExplicitInSource: true).Kind);
19078
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object).Kind);
19079
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object, isExplicitInSource: true).Kind);
19112
Assert.Equal(
ConversionKind
.ExplicitTuple, model.ClassifyConversion(expr1, int_string1).Kind);
19113
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_object).Kind);
19114
Assert.Equal(
ConversionKind
.ExplicitTuple, model.ClassifyConversion(expr1, int_string1, isExplicitInSource: true).Kind);
19115
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_object, isExplicitInSource: true).Kind);
19117
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object).Kind);
19118
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object, isExplicitInSource: true).Kind);
19151
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_string1).Kind);
19152
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_string1, isExplicitInSource: true).Kind);
19153
Assert.Equal(
ConversionKind
.ImplicitTuple, model.ClassifyConversion(expr1, int_object).Kind);
19154
Assert.Equal(
ConversionKind
.ExplicitTuple, model.ClassifyConversion(expr1, int_object, isExplicitInSource: true).Kind);
19156
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object).Kind);
19157
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object, isExplicitInSource: true).Kind);
19190
Assert.Equal(
ConversionKind
.ExplicitTuple, model.ClassifyConversion(expr1, int_string1).Kind);
19191
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_object).Kind);
19192
Assert.Equal(
ConversionKind
.ExplicitTuple, model.ClassifyConversion(expr1, int_string1, isExplicitInSource: true).Kind);
19193
Assert.Equal(
ConversionKind
.Identity, model.ClassifyConversion(expr1, int_object, isExplicitInSource: true).Kind);
19195
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object).Kind);
19196
Assert.Equal(
ConversionKind
.NoConversion, model.ClassifyConversion(expr1, int_object_object, isExplicitInSource: true).Kind);
25706
Assert.Equal(
ConversionKind
.ExplicitTupleLiteral, model.GetConversion(tuple).Kind);
25711
Assert.Equal(
ConversionKind
.ExplicitNullable, model.GetConversion(first).Kind);
25716
Assert.Equal(
ConversionKind
.ImplicitReference, model.GetConversion(second).Kind);
25777
Assert.Equal(
ConversionKind
.ExplicitNullable, model.GetConversion(tuple).Kind);
25782
Assert.Equal(
ConversionKind
.ExplicitNullable, model.GetConversion(first).Kind);
25787
Assert.Equal(
ConversionKind
.ImplicitReference, model.GetConversion(second).Kind);
25842
Assert.Equal(
ConversionKind
.NoConversion, model.GetConversion(tuple).Kind);
25847
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(first).Kind);
25852
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(second).Kind);
25884
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(tuple).Kind);
25914
Assert.Equal(
ConversionKind
.NoConversion, model.GetConversion(tuple).Kind);
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (49)
Emit\NumericIntPtrTests.cs (49)
32
internal static readonly
ConversionKind
[] Identity = new[] {
ConversionKind
.Identity };
33
internal static readonly
ConversionKind
[] NoConversion = new[] {
ConversionKind
.NoConversion };
34
internal static readonly
ConversionKind
[] Boxing = new[] {
ConversionKind
.Boxing };
35
internal static readonly
ConversionKind
[] Unboxing = new[] {
ConversionKind
.Unboxing };
36
internal static readonly
ConversionKind
[] IntPtrConversion = new[] {
ConversionKind
.IntPtr };
37
internal static readonly
ConversionKind
[] ImplicitNumeric = new[] {
ConversionKind
.ImplicitNumeric };
38
internal static readonly
ConversionKind
[] ExplicitIntegerToPointer = new[] {
ConversionKind
.ExplicitIntegerToPointer };
39
internal static readonly
ConversionKind
[] ExplicitPointerToInteger = new[] {
ConversionKind
.ExplicitPointerToInteger };
40
internal static readonly
ConversionKind
[] ExplicitEnumeration = new[] {
ConversionKind
.ExplicitEnumeration };
41
internal static readonly
ConversionKind
[] ExplicitNumeric = new[] {
ConversionKind
.ExplicitNumeric };
42
internal static readonly
ConversionKind
[] ExplicitUserDefined = new[] {
ConversionKind
.ExplicitUserDefined };
44
internal static readonly
ConversionKind
[] ImplicitNullableNumeric = new[] {
ConversionKind
.ImplicitNullable,
ConversionKind
.ImplicitNumeric };
45
internal static readonly
ConversionKind
[] ImplicitNullableIdentity = new[] {
ConversionKind
.ImplicitNullable,
ConversionKind
.Identity };
47
internal static readonly
ConversionKind
[] ExplicitNullableEnumeration = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ExplicitEnumeration };
48
internal static readonly
ConversionKind
[] ExplicitNullableImplicitNumeric = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ImplicitNumeric };
49
internal static readonly
ConversionKind
[] ExplicitNullableNumeric = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ExplicitNumeric };
50
internal static readonly
ConversionKind
[] ExplicitNullablePointerToInteger = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ExplicitPointerToInteger };
51
internal static readonly
ConversionKind
[] ExplicitNullableIdentity = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.Identity };
59
internal static bool IsNoConversion(
ConversionKind
[] conversionKinds)
61
return conversionKinds is [
ConversionKind
.NoConversion];
64
internal static void AssertMatches(
ConversionKind
[] expected, Conversion conversion)
66
IEnumerable<
ConversionKind
> actualConversionKinds = new[] { conversion.Kind };
3535
void conversions(string sourceType, string destType,
ConversionKind
[] expectedConversions, string expectedImplicitIL, string expectedExplicitIL, string expectedCheckedIL = null)
5983
ConversionKind
[] expectedConversions,
Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests (89)
FirstClassSpanTests.cs (3)
2832
Assert.Equal(
ConversionKind
.ImplicitSpan, argConv.Kind);
2866
Assert.Equal(
ConversionKind
.ExplicitSpan, conv.Kind);
2882
Assert.Equal(
ConversionKind
.ExplicitSpan, conv.Kind);
Semantics\CollectionExpressionTests.cs (23)
203
VerifyTypes(model, collections[0], expectedType: null, expectedConvertedType: "System.Object",
ConversionKind
.NoConversion);
204
VerifyTypes(model, collections[1], expectedType: null, expectedConvertedType: "dynamic",
ConversionKind
.NoConversion);
205
VerifyTypes(model, collections[2], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
238
VerifyTypes(model, collections[0], expectedType: null, expectedConvertedType: "System.Object",
ConversionKind
.NoConversion);
239
VerifyTypes(model, collections[1], expectedType: null, expectedConvertedType: "dynamic",
ConversionKind
.NoConversion);
240
VerifyTypes(model, collections[2], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
15095
VerifyTypes(model, collections[0], expectedType: null, expectedConvertedType: "System.Int32[]",
ConversionKind
.CollectionExpression);
15096
VerifyTypes(model, collections[1], expectedType: null, expectedConvertedType: "System.Collections.Generic.List<System.Object>",
ConversionKind
.CollectionExpression);
15097
VerifyTypes(model, collections[2], expectedType: null, expectedConvertedType: "System.Span<System.Int32>",
ConversionKind
.CollectionExpression);
15098
VerifyTypes(model, collections[3], expectedType: null, expectedConvertedType: "System.ReadOnlySpan<System.Object>",
ConversionKind
.CollectionExpression);
15099
VerifyTypes(model, collections[4], expectedType: null, expectedConvertedType: "S1",
ConversionKind
.CollectionExpression);
15100
VerifyTypes(model, collections[5], expectedType: null, expectedConvertedType: "S2",
ConversionKind
.NoConversion);
15101
VerifyTypes(model, collections[6], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
15102
VerifyTypes(model, collections[7], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
15103
VerifyTypes(model, collections[8], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
15104
VerifyTypes(model, collections[9], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
15105
VerifyTypes(model, collections[10], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
15106
VerifyTypes(model, collections[11], expectedType: null, expectedConvertedType: null,
ConversionKind
.Identity);
15109
private static void VerifyTypes(SemanticModel model, ExpressionSyntax expr, string expectedType, string expectedConvertedType,
ConversionKind
expectedConversionKind)
26757
var expectedConversion = new Conversion(
ConversionKind
.CollectionExpression, nestedConversions: ImmutableArray.Create(Conversion.Identity, Conversion.Identity));
26812
var expectedConversion = new Conversion(
ConversionKind
.CollectionExpression, nestedConversions: ImmutableArray.Create(Conversion.Identity, Conversion.Identity));
27046
var expectedConversion = new Conversion(
ConversionKind
.Boxing, nestedConversions: default);
27069
var expectedConversion = new Conversion(
ConversionKind
.ImplicitReference, nestedConversions: default);
Semantics\ExtensionTests.cs (4)
17999
Assert.Equal(
ConversionKind
.MethodGroup, model.GetConversion(memberAccess).Kind);
18031
Assert.Equal(
ConversionKind
.MethodGroup, model.GetConversion(memberAccess).Kind);
18063
Assert.Equal(
ConversionKind
.MethodGroup, model.GetConversion(memberAccess).Kind);
18111
Assert.Equal(
ConversionKind
.MethodGroup, model.GetConversion(memberAccess).Kind);
Semantics\InlineArrayTests.cs (3)
15221
Assert.Equal(
ConversionKind
.InlineArray, model.GetConversion(f[^2]).Kind);
15228
Assert.Equal(
ConversionKind
.InlineArray, model.GetConversion(f[^1]).Kind);
16508
Assert.Equal(
ConversionKind
.InlineArray, model.GetConversion(m3).Kind);
Semantics\PatternMatchingTests2.cs (56)
2872
void checkType(ExpressionSyntax expr, string expectedNaturalType, string expectedConvertedType,
ConversionKind
expectedConversionKind)
2888
checkType(expr, null, "C",
ConversionKind
.SwitchExpression);
2889
checkType(expr.Arms[0].Expression, "A", "C",
ConversionKind
.ImplicitReference);
2890
checkType(expr.Arms[1].Expression, "B", "C",
ConversionKind
.ImplicitReference);
2891
checkType(expr.Arms[2].Expression, null, "C",
ConversionKind
.ImplicitThrow);
2894
checkType(expr, "?", "?",
ConversionKind
.Identity);
2895
checkType(expr.Arms[0].Expression, "A", "?",
ConversionKind
.NoConversion);
2896
checkType(expr.Arms[1].Expression, "B", "?",
ConversionKind
.NoConversion);
2897
checkType(expr.Arms[2].Expression, null, "?",
ConversionKind
.ImplicitThrow);
2900
checkType(expr, null, "D",
ConversionKind
.SwitchExpression);
2901
checkType(expr.Arms[0].Expression, "A", "D",
ConversionKind
.ImplicitUserDefined);
2902
checkType(expr.Arms[1].Expression, "B", "D",
ConversionKind
.ImplicitUserDefined);
2903
checkType(expr.Arms[2].Expression, null, "D",
ConversionKind
.ImplicitThrow);
2906
checkType(expr, "?", "D",
ConversionKind
.NoConversion);
2907
checkType(expr.Arms[0].Expression, "E", "?",
ConversionKind
.NoConversion);
2908
checkType(expr.Arms[1].Expression, "F", "?",
ConversionKind
.NoConversion);
2909
checkType(expr.Arms[2].Expression, null, "?",
ConversionKind
.ImplicitThrow);
2913
checkType(expr, "C", "C",
ConversionKind
.Identity);
2914
checkType(expr.Arms[0].Expression, "A", "C",
ConversionKind
.ImplicitReference);
2915
checkType(expr.Arms[1].Expression, "B", "C",
ConversionKind
.ImplicitReference);
2916
checkType(expr.Arms[2].Expression, "C", "C",
ConversionKind
.Identity);
2917
checkType(expr.Arms[3].Expression, null, "C",
ConversionKind
.ImplicitThrow);
2920
checkType(expr, "C", "D",
ConversionKind
.ImplicitUserDefined);
2921
checkType(expr.Arms[0].Expression, "A", "C",
ConversionKind
.ImplicitReference);
2922
checkType(expr.Arms[1].Expression, "B", "C",
ConversionKind
.ImplicitReference);
2923
checkType(expr.Arms[2].Expression, "C", "C",
ConversionKind
.Identity);
2924
checkType(expr.Arms[3].Expression, null, "C",
ConversionKind
.ImplicitThrow);
2927
checkType(expr, "C", "C",
ConversionKind
.Identity);
2928
checkType(expr.Arms[0].Expression, "A", "C",
ConversionKind
.ImplicitReference);
2929
checkType(expr.Arms[1].Expression, "B", "C",
ConversionKind
.ImplicitReference);
2930
checkType(expr.Arms[2].Expression, "C", "C",
ConversionKind
.Identity);
2931
checkType(expr.Arms[3].Expression, null, "C",
ConversionKind
.ImplicitThrow);
2934
checkType(expr, "System.Int32", "D",
ConversionKind
.SwitchExpression);
2935
checkType(expr.Arms[0].Expression, "System.Int32", "D",
ConversionKind
.ImplicitUserDefined);
2936
checkType(expr.Arms[1].Expression, "System.Int32", "D",
ConversionKind
.ImplicitUserDefined);
2937
checkType(expr.Arms[2].Expression, null, "D",
ConversionKind
.ImplicitThrow);
2940
checkType(expr, null, null,
ConversionKind
.Identity);
2941
checkType(expr.Arms[0].Expression, "A", "C",
ConversionKind
.ImplicitReference);
2942
checkType(expr.Arms[1].Expression, "B", "C",
ConversionKind
.ImplicitReference);
2943
checkType(expr.Arms[2].Expression, null, "C",
ConversionKind
.ImplicitThrow);
2944
checkType((CastExpressionSyntax)expr.Parent.Parent, "C", "C",
ConversionKind
.Identity);
2947
checkType(expr, null, null,
ConversionKind
.Identity);
2948
checkType(expr.Arms[0].Expression, "A", "D",
ConversionKind
.ImplicitUserDefined);
2949
checkType(expr.Arms[1].Expression, "B", "D",
ConversionKind
.ImplicitUserDefined);
2950
checkType(expr.Arms[2].Expression, null, "D",
ConversionKind
.ImplicitThrow);
2951
checkType((CastExpressionSyntax)expr.Parent.Parent, "D", "D",
ConversionKind
.Identity);
2954
checkType(expr, "?", "?",
ConversionKind
.Identity);
2955
checkType(expr.Arms[0].Expression, "E", "?",
ConversionKind
.NoConversion);
2956
checkType(expr.Arms[1].Expression, "F", "?",
ConversionKind
.NoConversion);
2957
checkType(expr.Arms[2].Expression, null, "?",
ConversionKind
.ImplicitThrow);
2958
checkType((CastExpressionSyntax)expr.Parent.Parent, "D", "D",
ConversionKind
.Identity);
2961
checkType(expr, "System.Int32", "System.Int32",
ConversionKind
.Identity);
2962
checkType(expr.Arms[0].Expression, "System.Int32", "D",
ConversionKind
.ImplicitUserDefined);
2963
checkType(expr.Arms[1].Expression, "System.Int32", "D",
ConversionKind
.ImplicitUserDefined);
2964
checkType(expr.Arms[2].Expression, null, "D",
ConversionKind
.ImplicitThrow);
2965
checkType((CastExpressionSyntax)expr.Parent.Parent, "D", "D",
ConversionKind
.Identity);
Microsoft.CodeAnalysis.CSharp.IOperation.UnitTests (2)
IOperation\IOperationTests_ICompoundAssignmentOperation.cs (2)
88
var inConversion = new Conversion(
ConversionKind
.ImplicitUserDefined, inSymbol, false);
89
var outConversion = new Conversion(
ConversionKind
.ImplicitUserDefined, outSymbol, false);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (260)
Semantics\DeconstructionTests.cs (5)
5990
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(mainCall).Kind);
6033
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(mainCall).Kind);
6073
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(mainCall).Kind);
6115
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(two).Kind);
6155
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(mainCall).Kind);
Semantics\DelegateTypeTests.cs (15)
14853
verifyConversions(model, expr, comp.GetSpecialType(SpecialType.System_MulticastDelegate).GetPublicSymbol(),
ConversionKind
.FunctionType,
ConversionKind
.FunctionType);
14854
verifyConversions(model, expr, comp.GetWellKnownType(WellKnownType.System_Linq_Expressions_Expression).GetPublicSymbol(),
ConversionKind
.FunctionType,
ConversionKind
.FunctionType);
14855
verifyConversions(model, expr, getFunctionType(funcOfT.Construct(comp.GetSpecialType(SpecialType.System_Int32))),
ConversionKind
.FunctionType,
ConversionKind
.FunctionType);
14856
verifyConversions(model, expr, getFunctionType(funcOfT.Construct(comp.GetSpecialType(SpecialType.System_Object))),
ConversionKind
.NoConversion,
ConversionKind
.NoConversion);
14863
static void verifyConversions(SemanticModel model, ExpressionSyntax expr, ITypeSymbol destination,
ConversionKind
expectedImplicitKind,
ConversionKind
expectedExplicitKind)
15703
Assert.Equal(
ConversionKind
.FunctionType, conversions.ClassifyImplicitConversionFromTypeWhenNeitherOrBothFunctionTypes(functionTypeStringNullable, functionTypeStringNotNullable, ref useSiteInfo).Kind);
15704
Assert.Equal(
ConversionKind
.FunctionType, conversions.ClassifyImplicitConversionFromTypeWhenNeitherOrBothFunctionTypes(functionTypeStringNullable, functionTypeObjectNullable, ref useSiteInfo).Kind);
15705
Assert.Equal(
ConversionKind
.NoConversion, conversions.ClassifyImplicitConversionFromTypeWhenNeitherOrBothFunctionTypes(functionTypeStringNullable, functionTypeNullA, ref useSiteInfo).Kind);
15706
Assert.Equal(
ConversionKind
.NoConversion, conversions.ClassifyImplicitConversionFromTypeWhenNeitherOrBothFunctionTypes(functionTypeNullA, functionTypeStringNullable, ref useSiteInfo).Kind);
15707
Assert.Equal(
ConversionKind
.NoConversion, conversions.ClassifyImplicitConversionFromTypeWhenNeitherOrBothFunctionTypes(functionTypeNullA, functionTypeNullA, ref useSiteInfo).Kind);
Semantics\DynamicTests.cs (2)
73
Assert.Equal(
ConversionKind
.Identity, dynamicToObject.Kind);
74
Assert.Equal(
ConversionKind
.Identity, objectToDynamic.Kind);
Semantics\ExpressionBodiedMemberTests.cs (4)
77
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
228
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
284
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
317
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
Semantics\ForEachTests.cs (59)
1215
Assert.Equal(
ConversionKind
.ImplicitReference, GetCollectionConversion(boundNode).Kind);
1216
Assert.Equal(
ConversionKind
.Unboxing, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1218
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1253
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1254
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1256
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1297
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1298
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1300
Assert.Equal(
ConversionKind
.ImplicitNumeric, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1341
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1342
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1344
Assert.Equal(
ConversionKind
.ImplicitNumeric, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1374
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1375
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1377
Assert.Equal(
ConversionKind
.Unboxing, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1414
Assert.Equal(
ConversionKind
.ImplicitReference, GetCollectionConversion(boundNode).Kind);
1415
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1417
Assert.Equal(
ConversionKind
.ImplicitNumeric, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1456
Assert.Equal(
ConversionKind
.ImplicitReference, GetCollectionConversion(boundNode).Kind);
1457
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1459
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1495
Assert.Equal(
ConversionKind
.ImplicitReference, GetCollectionConversion(boundNode).Kind);
1496
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1498
Assert.Equal(
ConversionKind
.Unboxing, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1528
Assert.Equal(
ConversionKind
.ImplicitReference, GetCollectionConversion(boundNode).Kind);
1529
Assert.Equal(
ConversionKind
.Unboxing, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1531
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1559
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1560
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1562
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1591
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1615
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1645
Assert.Equal(
ConversionKind
.ImplicitReference, GetCollectionConversion(boundNode).Kind);
1646
Assert.Equal(
ConversionKind
.ExplicitReference, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind); //object to C.var
1648
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1676
Assert.Equal(
ConversionKind
.ImplicitDynamic, GetCollectionConversion(boundNode).Kind);
1677
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1679
Assert.Equal(
ConversionKind
.ExplicitDynamic, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1709
Assert.Equal(
ConversionKind
.ImplicitDynamic, GetCollectionConversion(boundNode).Kind);
1710
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1712
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind); //NB: differs from explicit case
1750
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1751
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1753
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1834
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1835
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1837
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
1881
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
1882
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
1884
Assert.Equal(
ConversionKind
.ImplicitNumeric, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
2148
Assert.Equal(
ConversionKind
.Identity, conv.Kind);
2191
Assert.Equal(
ConversionKind
.ExplicitReference, loopInfo0.CurrentConversion.Kind);
2200
Assert.Equal(
ConversionKind
.Identity, loopInfo1.CurrentConversion.Kind); // Now identity.
3125
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
3126
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
3128
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
3243
Assert.Equal(
ConversionKind
.Identity, GetCollectionConversion(boundNode).Kind);
3244
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(info.CurrentConversion, info.CurrentPlaceholder).Kind);
3246
Assert.Equal(
ConversionKind
.Identity, BoundNode.GetConversion(boundNode.ElementConversion, boundNode.ElementPlaceholder).Kind);
Semantics\FunctionPointerTests.cs (42)
214
Assert.Equal(
ConversionKind
.ImplicitPointerToVoid, conversion.Kind);
299
Assert.Equal(
ConversionKind
.ImplicitNullToPointer, conversion.Kind);
356
Assert.Equal(
ConversionKind
.ExplicitPointerToInteger, conversion.Kind);
362
Assert.Equal(
ConversionKind
.ExplicitNullable, conversion.Kind);
364
Assert.Equal(
ConversionKind
.ExplicitPointerToInteger, underlying.Kind);
407
Assert.Equal(
ConversionKind
.IntPtr, conversion.Kind);
411
Assert.Equal(
ConversionKind
.IntPtr, conversion.Kind);
459
Assert.Equal(
ConversionKind
.ExplicitIntegerToPointer, conversion.Kind);
509
Assert.Equal(
ConversionKind
.ExplicitPointerToPointer, conversion.Kind);
606
Assert.Equal(
ConversionKind
.ImplicitUserDefined, conversion.Kind);
845
Assert.Equal(
ConversionKind
.ImplicitPointer, conversion.Kind);
885
expectedConversionKind:
ConversionKind
.ImplicitPointer, expectedImplicit: true,
899
private static void VerifyDeclarationConversion(CSharpCompilation comp, SemanticModel model, VariableDeclaratorSyntax decl,
ConversionKind
expectedConversionKind, bool expectedImplicit, string expectedOriginalType, string expectedConvertedType, string expectedOperationTree)
945
expectedConversionKind:
ConversionKind
.ImplicitPointer, expectedImplicit: true,
982
expectedConversionKind:
ConversionKind
.Identity, expectedImplicit: true,
993
expectedConversionKind:
ConversionKind
.Identity, expectedImplicit: true,
1007
expectedConversionKind:
ConversionKind
.Identity, expectedImplicit: true,
1050
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1063
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1130
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1144
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1158
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1172
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1186
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1200
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1214
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1228
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1275
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1289
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1303
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1370
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1384
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1398
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1412
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1426
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1440
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1454
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1468
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1511
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1525
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1568
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
1582
expectedConversionKind:
ConversionKind
.ExplicitPointerToPointer, expectedImplicit: false,
Semantics\ImplicitObjectCreationTests.cs (32)
58
assert(0, type: "C", convertedType: "C", symbol: "C..ctor()",
ConversionKind
.ObjectCreation);
59
assert(1, type: "S", convertedType: "S", symbol: "S..ctor()",
ConversionKind
.ObjectCreation);
60
assert(2, type: "S", convertedType: "S?", symbol: "S..ctor()",
ConversionKind
.ObjectCreation);
62
void assert(int index, string type, string convertedType, string symbol,
ConversionKind
conversionKind)
133
assert(0, type: "C", convertedType: "C", symbol: "C..ctor()",
ConversionKind
.ObjectCreation);
134
assert(1, type: "S", convertedType: "S", symbol: "S..ctor()",
ConversionKind
.ObjectCreation);
135
assert(2, type: "S", convertedType: "S?", symbol: "S..ctor()",
ConversionKind
.ObjectCreation);
137
void assert(int index, string type, string convertedType, string symbol,
ConversionKind
conversionKind)
180
assert(0, type: "C", convertedType: "C", symbol: "C..ctor()",
ConversionKind
.ObjectCreation);
181
assert(1, type: "S", convertedType: "S", symbol: "S..ctor()",
ConversionKind
.ObjectCreation);
182
assert(2, type: "S", convertedType: "S?", symbol: "S..ctor()",
ConversionKind
.ObjectCreation);
184
void assert(int index, string type, string convertedType, string symbol,
ConversionKind
conversionKind)
230
assert(0, type: "C", convertedType: "C", symbol: "C..ctor()", constant: null,
ConversionKind
.ObjectCreation);
231
assert(1, type: "S", convertedType: "S", symbol: "S..ctor()", constant: null,
ConversionKind
.ObjectCreation);
232
assert(2, type: "S", convertedType: "S?", symbol: "S..ctor()", constant: null,
ConversionKind
.ObjectCreation);
233
assert(3, type: "System.Int32", convertedType: "System.Int32", symbol: "System.Int32..ctor()", constant: "0",
ConversionKind
.ObjectCreation);
234
assert(4, type: "System.Boolean", convertedType: "System.Boolean?", symbol: "System.Boolean..ctor()", constant: "False",
ConversionKind
.ObjectCreation);
236
void assert(int index, string type, string convertedType, string symbol, string constant,
ConversionKind
conversionKind)
848
Assert.Equal(
ConversionKind
.ObjectCreation, model.GetConversion(@new).Kind);
889
Assert.Equal(
ConversionKind
.ObjectCreation, model.GetConversion(@new).Kind);
1708
assert(1, "N(1)", type: "C", convertedType: "C", symbol: "C C.N(System.Int32 i)",
ConversionKind
.Identity);
1709
assert(3, "N(2)", type: "C", convertedType: "C", symbol: "C C.N(System.Int32 i)",
ConversionKind
.Identity);
1711
void assert(int index, string expression, string type, string convertedType, string symbol,
ConversionKind
conversionKind)
2127
assert(0, type: "?", convertedType: "?",
ConversionKind
.Identity);
2128
assert(1, type: "?", convertedType: "?",
ConversionKind
.Identity);
2129
assert(2, type: "System.IDisposable", convertedType: "System.IDisposable",
ConversionKind
.NoConversion);
2131
void assert(int index, string type, string convertedType,
ConversionKind
conversionKind)
2924
assert(0, type: "System.Index", convertedType: "System.Index", symbol: "System.Index..ctor()",
ConversionKind
.ObjectCreation);
2925
assert(1, type: "System.Index", convertedType: "System.Index", symbol: "System.Index..ctor()",
ConversionKind
.ObjectCreation);
2926
assert(2, type: "System.Index", convertedType: "System.Index", symbol: "System.Index..ctor()",
ConversionKind
.ObjectCreation);
2927
assert(3, type: "System.Index", convertedType: "System.Index", symbol: "System.Index..ctor()",
ConversionKind
.ObjectCreation);
2929
void assert(int index, string type, string convertedType, string symbol,
ConversionKind
conversionKind)
Semantics\InteractiveSemanticModelTests.cs (4)
161
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
186
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
212
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
240
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
Semantics\InterpolationTests.cs (3)
4610
Assert.Equal(
ConversionKind
.InterpolatedStringHandler, semanticInfo.ImplicitConversion.Kind);
4830
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
4837
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
Semantics\NativeIntegerTests.cs (47)
25
internal static readonly
ConversionKind
[] Identity = new[] {
ConversionKind
.Identity };
26
internal static readonly
ConversionKind
[] NoConversion = new[] {
ConversionKind
.NoConversion };
27
internal static readonly
ConversionKind
[] Boxing = new[] {
ConversionKind
.Boxing };
28
internal static readonly
ConversionKind
[] Unboxing = new[] {
ConversionKind
.Unboxing };
29
internal static readonly
ConversionKind
[] IntPtrConversion = new[] {
ConversionKind
.IntPtr };
30
internal static readonly
ConversionKind
[] ImplicitNumeric = new[] {
ConversionKind
.ImplicitNumeric };
31
internal static readonly
ConversionKind
[] ExplicitIntegerToPointer = new[] {
ConversionKind
.ExplicitIntegerToPointer };
32
internal static readonly
ConversionKind
[] ExplicitPointerToInteger = new[] {
ConversionKind
.ExplicitPointerToInteger };
33
internal static readonly
ConversionKind
[] ExplicitEnumeration = new[] {
ConversionKind
.ExplicitEnumeration };
34
internal static readonly
ConversionKind
[] ExplicitNumeric = new[] {
ConversionKind
.ExplicitNumeric };
36
internal static readonly
ConversionKind
[] ImplicitNullableNumeric = new[] {
ConversionKind
.ImplicitNullable,
ConversionKind
.ImplicitNumeric };
37
internal static readonly
ConversionKind
[] ImplicitNullableIdentity = new[] {
ConversionKind
.ImplicitNullable,
ConversionKind
.Identity };
39
internal static readonly
ConversionKind
[] ExplicitNullableEnumeration = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ExplicitEnumeration };
40
internal static readonly
ConversionKind
[] ExplicitNullableImplicitNumeric = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ImplicitNumeric };
41
internal static readonly
ConversionKind
[] ExplicitNullableNumeric = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ExplicitNumeric };
42
internal static readonly
ConversionKind
[] ExplicitNullablePointerToInteger = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.ExplicitPointerToInteger };
43
internal static readonly
ConversionKind
[] ExplicitNullableIdentity = new[] {
ConversionKind
.ExplicitNullable,
ConversionKind
.Identity };
51
internal static bool IsNoConversion(
ConversionKind
[] conversionKinds)
53
return conversionKinds is [
ConversionKind
.NoConversion];
56
internal static void AssertMatches(
ConversionKind
[] expected, Conversion conversion)
58
IEnumerable<
ConversionKind
> actualConversionKinds = new[] { conversion.Kind };
7825
void conversions(string sourceType, string destType,
ConversionKind
[] expectedConversions, string expectedImplicitIL, string expectedExplicitIL, string expectedCheckedIL = null)
9469
ConversionKind
[] expectedConversions,
Semantics\ObjectAndCollectionInitializerTests.cs (3)
3819
Assert.Equal(
ConversionKind
.Identity, conversion.Kind);
3842
Assert.Equal(
ConversionKind
.ImplicitReference, conversion.Kind);
3866
Assert.Equal(
ConversionKind
.Boxing, conversion.Kind);
Semantics\RawInterpolationTests_Handler.cs (3)
2911
Assert.Equal(
ConversionKind
.InterpolatedStringHandler, semanticInfo.ImplicitConversion.Kind);
3131
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
3138
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
Semantics\StackAllocInitializerTests.cs (10)
1056
Assert.Equal(
ConversionKind
.ImplicitUserDefined, obj1Value.ImplicitConversion.Kind);
1064
Assert.Equal(
ConversionKind
.Identity, obj2Value.ImplicitConversion.Kind);
1072
Assert.Equal(
ConversionKind
.Identity, obj3Value.ImplicitConversion.Kind);
1080
Assert.Equal(
ConversionKind
.Identity, obj4Value.ImplicitConversion.Kind);
1088
Assert.Equal(
ConversionKind
.NoConversion, obj5Value.ImplicitConversion.Kind);
1159
Assert.Equal(
ConversionKind
.Identity, obj1Value.ImplicitConversion.Kind);
1167
Assert.Equal(
ConversionKind
.Identity, obj2Value.ImplicitConversion.Kind);
1175
Assert.Equal(
ConversionKind
.Identity, obj3Value.ImplicitConversion.Kind);
1183
Assert.Equal(
ConversionKind
.Identity, obj4Value.ImplicitConversion.Kind);
1191
Assert.Equal(
ConversionKind
.NoConversion, obj5Value.ImplicitConversion.Kind);
Semantics\StackAllocSpanExpressionsTests.cs (10)
62
Assert.Equal(
ConversionKind
.ImplicitUserDefined, obj1Value.ImplicitConversion.Kind);
70
Assert.Equal(
ConversionKind
.Identity, obj2Value.ImplicitConversion.Kind);
78
Assert.Equal(
ConversionKind
.Identity, obj3Value.ImplicitConversion.Kind);
86
Assert.Equal(
ConversionKind
.Identity, obj4Value.ImplicitConversion.Kind);
94
Assert.Equal(
ConversionKind
.NoConversion, obj5Value.ImplicitConversion.Kind);
137
Assert.Equal(
ConversionKind
.Identity, obj1Value.ImplicitConversion.Kind);
145
Assert.Equal(
ConversionKind
.Identity, obj2Value.ImplicitConversion.Kind);
153
Assert.Equal(
ConversionKind
.Identity, obj3Value.ImplicitConversion.Kind);
161
Assert.Equal(
ConversionKind
.Identity, obj4Value.ImplicitConversion.Kind);
169
Assert.Equal(
ConversionKind
.NoConversion, obj5Value.ImplicitConversion.Kind);
Semantics\TargetTypedDefaultTests.cs (4)
3588
Assert.Equal(
ConversionKind
.Identity, model.GetConversion(default2).Kind);
3595
Assert.Equal(
ConversionKind
.ImplicitNullable, model.GetConversion(default3).Kind);
3603
Assert.Equal(
ConversionKind
.ImplicitNullable, conversion.Kind);
3604
Assert.Equal(
ConversionKind
.ImplicitNumeric, conversion.UnderlyingConversions.Single().Kind);
Semantics\TopLevelStatementsTests.cs (2)
9710
Assert.Equal(
ConversionKind
.Identity, conversionInTopLevel.Kind);
9715
Assert.Equal(
ConversionKind
.NoConversion, conversionOutsideTopLevel.Kind);
Semantics\UnsafeTests.cs (15)
7866
Assert.Equal(
ConversionKind
.Identity, receiverSummary.ImplicitConversion.Kind);
7875
Assert.Equal(
ConversionKind
.Identity, methodGroupSummary.ImplicitConversion.Kind);
7884
Assert.Equal(
ConversionKind
.Identity, callSummary.ImplicitConversion.Kind);
7933
Assert.Equal(
ConversionKind
.Identity, receiverSummary.ImplicitConversion.Kind);
7940
Assert.Equal(
ConversionKind
.Identity, methodGroupSummary.ImplicitConversion.Kind);
7947
Assert.Equal(
ConversionKind
.Identity, callSummary.ImplicitConversion.Kind);
8177
Assert.Equal(
ConversionKind
.Identity, receiverSummary.ImplicitConversion.Kind);
8189
Assert.Equal(
ConversionKind
.Identity, indexSummary.ImplicitConversion.Kind);
8198
Assert.Equal(
ConversionKind
.Identity, accessSummary.ImplicitConversion.Kind);
8244
Assert.Equal(
ConversionKind
.Identity, receiverSummary.ImplicitConversion.Kind);
8257
Assert.Equal(
ConversionKind
.Identity, accessSummary.ImplicitConversion.Kind);
8302
Assert.Equal(
ConversionKind
.Identity, receiverSummary.ImplicitConversion.Kind);
8315
Assert.Equal(
ConversionKind
.Identity, accessSummary.ImplicitConversion.Kind);
8352
Assert.Equal(
ConversionKind
.ImplicitNullToPointer, conv.Kind);
8395
Assert.Equal(
ConversionKind
.ImplicitPointerToVoid, conv.Kind);
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (517)
Compilation\GetSemanticInfoTests.cs (114)
109
Assert.Equal(
ConversionKind
.AnonymousFunction, conv.Kind);
143
Assert.Equal(
ConversionKind
.AnonymousFunction, conv.Kind);
250
ConversionTestHelper(model, (v1 as AssignmentExpressionSyntax).Right,
ConversionKind
.Identity,
ConversionKind
.Identity);
253
ConversionTestHelper(model, (v2 as AssignmentExpressionSyntax).Right,
ConversionKind
.ImplicitConstant,
ConversionKind
.ExplicitNumeric);
256
ConversionTestHelper(model, v3[0].Initializer.Value,
ConversionKind
.ImplicitNumeric,
ConversionKind
.ImplicitNumeric);
259
ConversionTestHelper(model, v4[0].Initializer.Value,
ConversionKind
.ImplicitReference,
ConversionKind
.NoConversion);
264
ConversionTestHelper(model, v61[0].Expression,
ConversionKind
.ImplicitNumeric,
ConversionKind
.ImplicitNumeric);
267
ConversionTestHelper(model, v7[0].Initializer.Value,
ConversionKind
.Boxing,
ConversionKind
.Boxing);
270
ConversionTestHelper(model, v8[0].Initializer.Value,
ConversionKind
.ImplicitEnumeration,
ConversionKind
.ExplicitEnumeration);
275
ConversionTestHelper(model, v9right,
ConversionKind
.Identity,
ConversionKind
.Identity);
278
private void TestClassifyConversionBuiltInNumeric(string from, string to,
ConversionKind
ck)
289
var isExplicitConversion = ck ==
ConversionKind
.ExplicitNumeric;
314
const
ConversionKind
ID =
ConversionKind
.Identity;
315
const
ConversionKind
IN =
ConversionKind
.ImplicitNumeric;
316
const
ConversionKind
XN =
ConversionKind
.ExplicitNumeric;
319
var conversions = new
ConversionKind
[,] {
381
ConversionTestHelper(model, (v1 as CastExpressionSyntax).Expression, comp.GetSpecialType(SpecialType.System_UInt32),
ConversionKind
.ExplicitNumeric);
384
ConversionTestHelper(model, (v2 as AssignmentExpressionSyntax).Right, comp.GetSpecialType(SpecialType.System_Object),
ConversionKind
.Boxing);
387
ConversionTestHelper(model, (v3 as CastExpressionSyntax).Expression, comp.GetSpecialType(SpecialType.System_Int32),
ConversionKind
.Unboxing);
391
ConversionTestHelper(model, (v4 as CastExpressionSyntax).Expression, tsym,
ConversionKind
.ExplicitReference);
484
ConversionTestHelper(model, v1,
ConversionKind
.ExplicitNumeric,
ConversionKind
.ExplicitNumeric);
487
ConversionTestHelper(model, v2,
ConversionKind
.Unboxing,
ConversionKind
.Unboxing);
490
ConversionTestHelper(model, v3,
ConversionKind
.ExplicitReference,
ConversionKind
.ExplicitReference);
538
ConversionTestHelper(model, v1[0].Initializer.Value,
ConversionKind
.NullLiteral,
ConversionKind
.NoConversion);
541
ConversionTestHelper(model, v2[0].Initializer.Value,
ConversionKind
.ImplicitNullable,
ConversionKind
.ExplicitNullable);
545
ConversionTestHelper(model, (v3 as AssignmentExpressionSyntax).Right,
ConversionKind
.ImplicitNullable,
ConversionKind
.ImplicitNullable);
549
ConversionTestHelper(model, v4[0].Initializer.Value,
ConversionKind
.ImplicitEnumeration,
ConversionKind
.ExplicitEnumeration);
553
ConversionTestHelper(model, v5[0].Initializer.Value,
ConversionKind
.ImplicitEnumeration,
ConversionKind
.ExplicitNullable);
655
ValidateConversion(Conversion.PointerToVoid,
ConversionKind
.ImplicitPointerToVoid);
656
ValidateConversion(Conversion.NullToPointer,
ConversionKind
.ImplicitNullToPointer);
657
ValidateConversion(Conversion.PointerToPointer,
ConversionKind
.ExplicitPointerToPointer);
658
ValidateConversion(Conversion.IntegerToPointer,
ConversionKind
.ExplicitIntegerToPointer);
659
ValidateConversion(Conversion.PointerToInteger,
ConversionKind
.ExplicitPointerToInteger);
660
ValidateConversion(Conversion.IntPtr,
ConversionKind
.IntPtr);
664
private void ValidateConversion(Conversion conv,
ConversionKind
kind)
670
case
ConversionKind
.NoConversion:
675
case
ConversionKind
.Identity:
681
case
ConversionKind
.ImplicitNumeric:
687
case
ConversionKind
.ImplicitEnumeration:
693
case
ConversionKind
.ImplicitNullable:
699
case
ConversionKind
.NullLiteral:
705
case
ConversionKind
.ImplicitReference:
711
case
ConversionKind
.Boxing:
717
case
ConversionKind
.ImplicitDynamic:
723
case
ConversionKind
.ExplicitDynamic:
729
case
ConversionKind
.ImplicitConstant:
735
case
ConversionKind
.ImplicitUserDefined:
741
case
ConversionKind
.AnonymousFunction:
747
case
ConversionKind
.MethodGroup:
753
case
ConversionKind
.ExplicitNumeric:
759
case
ConversionKind
.ExplicitEnumeration:
765
case
ConversionKind
.ExplicitNullable:
771
case
ConversionKind
.ExplicitReference:
777
case
ConversionKind
.Unboxing:
783
case
ConversionKind
.ExplicitUserDefined:
789
case
ConversionKind
.ImplicitNullToPointer:
796
case
ConversionKind
.ImplicitPointerToVoid:
803
case
ConversionKind
.ExplicitPointerToPointer:
810
case
ConversionKind
.ExplicitIntegerToPointer:
817
case
ConversionKind
.ExplicitPointerToInteger:
824
case
ConversionKind
.IntPtr:
842
private void ConversionTestHelper(SemanticModel semanticModel, ExpressionSyntax expr,
ConversionKind
ept1,
ConversionKind
ept2)
856
if (ept2 ==
ConversionKind
.NoConversion)
869
private void ConversionTestHelper(SemanticModel semanticModel, ExpressionSyntax expr, ITypeSymbol expsym,
ConversionKind
expkind)
1424
Assert.Equal(
ConversionKind
.Identity, bindInfo.ImplicitConversion.Kind);
1465
Assert.Equal(
ConversionKind
.Identity, bindInfo.ImplicitConversion.Kind);
1499
Assert.Equal(
ConversionKind
.NoConversion, bindInfo.ImplicitConversion.Kind);
2457
Assert.Equal(
ConversionKind
.Identity, conv.Kind);
2486
Assert.Equal(
ConversionKind
.Identity, conv.Kind);
2806
Assert.Equal(
ConversionKind
.Identity, conv.Kind);
3277
ThreadStart ts = () => sawWrongConversionKind |=
ConversionKind
.Identity != model.GetConversion(expr).Kind;
3357
Assert.Equal(
ConversionKind
.Identity, conversion.UserDefinedFromConversion.Kind);
3358
Assert.Equal(
ConversionKind
.Identity, conversion.UserDefinedToConversion.Kind);
3405
Assert.Equal(
ConversionKind
.ImplicitUserDefined, conversion.Kind);
3478
Assert.Equal(
ConversionKind
.ImplicitUserDefined, argConversion.Kind);
3532
Assert.Equal(
ConversionKind
.Identity, argConversion.Kind);
3613
Assert.Equal(
ConversionKind
.Boxing, conv.Kind);
3638
Assert.Equal(
ConversionKind
.Identity, literalConversion.Kind);
3646
Assert.Equal(
ConversionKind
.Boxing, castConversion.Kind);
3671
Assert.Equal(
ConversionKind
.Identity, literalConversion.Kind);
3679
Assert.Equal(
ConversionKind
.Identity, castConversion.Kind);
3681
Assert.Equal(
ConversionKind
.Boxing, model.ClassifyConversion(literal, castTypeInfo.Type).Kind);
3707
Assert.Equal(
ConversionKind
.Identity, literalConversion.Kind);
3715
Assert.Equal(
ConversionKind
.Identity, cast1Conversion.Kind);
3718
Assert.Equal(
ConversionKind
.ImplicitNumeric, model.ClassifyConversion(literal, cast1TypeInfo.Type).Kind);
3727
Assert.Equal(
ConversionKind
.Identity, cast2Conversion.Kind);
3729
Assert.Equal(
ConversionKind
.Boxing, model.ClassifyConversion(cast1, cast2TypeInfo.Type).Kind);
4382
Assert.Equal(
ConversionKind
.Identity, conv.Kind);
5588
Assert.Equal(
ConversionKind
.ImplicitReference, conversion.Kind);
5627
Assert.Equal(
ConversionKind
.AnonymousFunction, conversion.Kind);
5674
Assert.Equal(
ConversionKind
.AnonymousFunction, conversion.Kind);
5735
Assert.Equal(
ConversionKind
.MethodGroup, conversionA.Kind);
5738
Assert.Equal(
ConversionKind
.MethodGroup, conversionB.Kind);
5741
Assert.Equal(
ConversionKind
.NoConversion, conversionC.Kind);
Compilation\SemanticModelAPITests.cs (1)
2282
Assert.Equal(
ConversionKind
.Identity, conv.Kind);
Compilation\SemanticModelGetSemanticInfoTests.cs (344)
49
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
88
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
119
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
153
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
194
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
235
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
273
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
307
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
460
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
500
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
543
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
591
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
639
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
692
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
723
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
759
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
793
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1641
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1685
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1717
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1746
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
1777
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1806
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1836
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1866
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1896
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1925
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1955
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
1985
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
2015
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2047
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2079
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2116
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2149
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2189
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2217
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2261
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2296
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2346
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2392
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2435
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2490
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2542
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2574
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
2610
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2647
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
2688
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2729
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2779
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2825
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2868
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2904
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2944
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
2980
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3014
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3070
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3115
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3155
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3197
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3243
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3282
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3318
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3355
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3392
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3423
Assert.Equal(
ConversionKind
.Boxing, semanticInfo.ImplicitConversion.Kind);
3455
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3490
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3521
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3553
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3587
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3625
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3669
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3703
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3737
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3771
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3801
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3833
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3862
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3897
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
3934
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
3970
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4005
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4036
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4067
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4104
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4133
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4157
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4183
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4211
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4244
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4278
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4316
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4370
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4401
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4441
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4472
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4567
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4605
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4641
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4671
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4709
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4745
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4781
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4812
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
4849
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4876
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4915
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
4962
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5014
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
5065
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5104
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5151
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5197
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5237
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5276
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5318
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5400
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5442
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5478
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5507
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5540
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5572
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5604
Assert.Equal(
ConversionKind
.ImplicitConstant, semanticInfo.ImplicitConversion.Kind);
5654
Assert.Equal(
ConversionKind
.AnonymousFunction, semanticInfo.ImplicitConversion.Kind);
5690
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
5726
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
5759
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5793
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5826
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5860
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5894
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
5929
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
5962
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
5996
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6029
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6057
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
6089
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6115
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6142
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6175
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6327
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6363
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6394
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6433
Assert.Equal(
ConversionKind
.MethodGroup, semanticInfo.ImplicitConversion.Kind);
6467
Assert.Equal(
ConversionKind
.MethodGroup, semanticInfo.ImplicitConversion.Kind);
6490
Assert.Equal(
ConversionKind
.MethodGroup, semanticInfo.ImplicitConversion.Kind);
6517
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6552
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6589
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6639
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6673
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6709
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6734
Assert.Equal(
ConversionKind
.AnonymousFunction, semanticInfo.ImplicitConversion.Kind);
6754
Assert.Equal(
ConversionKind
.AnonymousFunction, semanticInfo.ImplicitConversion.Kind);
6804
Assert.Equal(
ConversionKind
.ImplicitConstant, semanticInfo.ImplicitConversion.Kind);
6839
Assert.Equal(
ConversionKind
.ImplicitConstant, semanticInfo.ImplicitConversion.Kind);
6873
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6918
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
6963
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
7045
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7076
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7104
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7135
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7167
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7199
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7231
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7260
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7286
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7314
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7341
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
7376
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
7397
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7423
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7451
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7480
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
7519
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7550
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7583
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7621
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7658
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7696
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
7725
Assert.Equal(
ConversionKind
.Boxing, semanticInfo.ImplicitConversion.Kind);
7816
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7849
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7881
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7915
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7947
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
7981
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8017
Assert.Equal(
ConversionKind
.MethodGroup, semanticInfo.ImplicitConversion.Kind);
8033
Assert.Equal(
ConversionKind
.MethodGroup, semanticInfo.ImplicitConversion.Kind);
8070
Assert.Equal(
ConversionKind
.MethodGroup, semanticInfo.ImplicitConversion.Kind);
8086
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
8367
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8401
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8512
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8558
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8603
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8642
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8682
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8724
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8766
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
8807
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8849
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8891
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
8931
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9060
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
9121
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9356
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9415
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9454
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9612
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9667
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9718
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9778
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9829
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9884
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9915
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9949
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
9985
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10021
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10057
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10101
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10138
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10175
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10214
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10245
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10280
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10315
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10349
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10383
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10464
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10491
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10520
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10556
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10598
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10635
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10672
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10711
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10754
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10796
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10833
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
10902
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11009
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11040
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11073
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11106
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11142
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11186
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11220
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11264
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11301
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11338
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11378
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
11425
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11458
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11495
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
11533
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11570
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11605
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11636
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11670
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11708
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11761
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11793
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11829
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11864
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11899
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11935
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
11971
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
12006
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12041
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12077
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
12150
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12184
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
12217
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12254
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
12285
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12320
Assert.Equal(
ConversionKind
.Boxing, semanticInfo.ImplicitConversion.Kind);
12353
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12389
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12424
Assert.Equal(
ConversionKind
.ImplicitReference, semanticInfo.ImplicitConversion.Kind);
12451
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12482
Assert.Equal(
ConversionKind
.NoConversion, semanticInfo.ImplicitConversion.Kind);
12524
Assert.Equal(
ConversionKind
.ImplicitUserDefined, semanticInfo.ImplicitConversion.Kind);
12608
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12642
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12674
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12705
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12737
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12769
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12801
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12844
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12881
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12920
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12956
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
12994
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13035
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13066
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13096
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13127
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13161
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13195
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13226
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13261
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13321
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13380
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13440
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
13501
Assert.Equal(
ConversionKind
.ImplicitNumeric, semanticInfo.ImplicitConversion.Kind);
13559
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13589
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13654
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13683
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13739
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13772
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13803
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13837
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13871
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13910
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13949
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
13976
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14003
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14040
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14079
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14117
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14157
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14199
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14243
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14289
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14335
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14378
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14416
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14505
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14539
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14624
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
14662
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15082
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15111
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15150
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15181
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15212
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15243
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15274
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15336
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
15403
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
Compilation\SemanticModelGetSemanticInfoTests_LateBound.cs (17)
142
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
168
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
203
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
381
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
420
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
516
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
553
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
588
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
616
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
653
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
680
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
708
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
743
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
772
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
799
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
827
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
858
Assert.Equal(
ConversionKind
.Identity, semanticInfo.ImplicitConversion.Kind);
Symbols\ConversionTests.cs (41)
76
const
ConversionKind
Non =
ConversionKind
.NoConversion;
77
const
ConversionKind
Idn =
ConversionKind
.Identity;
78
const
ConversionKind
Inm =
ConversionKind
.ImplicitNumeric;
79
const
ConversionKind
Inl =
ConversionKind
.ImplicitNullable;
80
const
ConversionKind
Irf =
ConversionKind
.ImplicitReference;
81
const
ConversionKind
Box =
ConversionKind
.Boxing;
82
const
ConversionKind
Xrf =
ConversionKind
.ExplicitReference;
83
const
ConversionKind
Ubx =
ConversionKind
.Unboxing;
84
const
ConversionKind
Xnl =
ConversionKind
.ExplicitNullable;
85
const
ConversionKind
Xnm =
ConversionKind
.ExplicitNumeric;
87
ConversionKind
[,] conversions =
182
var
kind = conversions[i, j];
320
Assert.Equal(
ConversionKind
.Identity, conv.ClassifyConversionFromType(typeIntArray, typeIntArrayWithCustomModifiers, ref useSiteDiagnostics).Kind);
323
Assert.Equal(
ConversionKind
.Identity, conv.ClassifyConversionFromType(typeIntArrayWithCustomModifiers, typeIntArray, ref useSiteDiagnostics).Kind);
326
Assert.Equal(
ConversionKind
.Identity, conv.ClassifyConversionFromType(typeIntArrayWithCustomModifiers, typeIntArrayWithCustomModifiers, ref useSiteDiagnostics).Kind);
351
Assert.Equal(
ConversionKind
.Identity, tuple.Item2.ClassifyConversion(tuple.Item1, comp.GetSpecialType(SpecialType.System_Boolean)).Kind);
488
Assert.Equal(
ConversionKind
.ExplicitUserDefined, conversion.Kind); // Unexpected: Should be NoConversion or possibly Identity for error case
489
Assert.Equal(
ConversionKind
.MethodGroup, conversion.UserDefinedFromConversion.Kind);
490
Assert.Equal(
ConversionKind
.Identity, conversion.UserDefinedToConversion.Kind);
523
Assert.Equal(
ConversionKind
.ExplicitUserDefined, conversion.Kind); // Unexpected: Should be NoConversion or possibly Identity for error case
524
Assert.Equal(
ConversionKind
.MethodGroup, conversion.UserDefinedFromConversion.Kind);
525
Assert.Equal(
ConversionKind
.Identity, conversion.UserDefinedToConversion.Kind);
559
Assert.Equal(
ConversionKind
.ExplicitUserDefined, conversion.Kind); // Unexpected: Should be NoConversion or possibly Identity for error case
560
Assert.Equal(
ConversionKind
.MethodGroup, conversion.UserDefinedFromConversion.Kind);
561
Assert.Equal(
ConversionKind
.Identity, conversion.UserDefinedToConversion.Kind);
595
Assert.Equal(
ConversionKind
.ExplicitUserDefined, conversion.Kind); // Unexpected: Should be NoConversion or possibly Identity for error case
596
Assert.Equal(
ConversionKind
.MethodGroup, conversion.UserDefinedFromConversion.Kind);
597
Assert.Equal(
ConversionKind
.Identity, conversion.UserDefinedToConversion.Kind);
629
Assert.Equal(
ConversionKind
.Identity, conversion.Kind);
664
Assert.Equal(
ConversionKind
.Identity, conversion.Kind);
689
Assert.Equal(
ConversionKind
.MethodGroup, conversion.Kind);
Microsoft.CodeAnalysis.CSharp.Test.Utilities (4)
FunctionPointerUtilities.cs (4)
185
var
expectedConversionKind = (expectedType, expectedConvertedType, expectedSymbol) switch
187
(null, null, _) =>
ConversionKind
.Identity,
188
(_, _, null) =>
ConversionKind
.NoConversion,
189
(_, _, _) =>
ConversionKind
.MethodGroup,