77 instantiations of Conversion
Microsoft.CodeAnalysis.CSharp (77)
Binder\Binder_Deconstruct.cs (1)
343
conversion = new
Conversion
(ConversionKind.Deconstruction, deconstructMethod, nestedConversions.ToImmutableAndFree());
Binder\Semantics\Conversions\Conversion.cs (57)
135
return new
Conversion
(
142
return new
Conversion
(
225
return new
Conversion
(this.Kind, conversionMethod, isExtensionMethod: IsExtensionMethod);
233
return new
Conversion
(
291
return new
Conversion
(kind);
294
internal static Conversion UnsetConversion => new
Conversion
(ConversionKind.UnsetConversionKind);
295
internal static Conversion NoConversion => new
Conversion
(ConversionKind.NoConversion);
296
internal static Conversion Identity => new
Conversion
(ConversionKind.Identity);
297
internal static Conversion ImplicitConstant => new
Conversion
(ConversionKind.ImplicitConstant);
298
internal static Conversion ImplicitNumeric => new
Conversion
(ConversionKind.ImplicitNumeric);
299
internal static Conversion ImplicitReference => new
Conversion
(ConversionKind.ImplicitReference);
300
internal static Conversion ImplicitEnumeration => new
Conversion
(ConversionKind.ImplicitEnumeration);
301
internal static Conversion ImplicitThrow => new
Conversion
(ConversionKind.ImplicitThrow);
302
internal static Conversion ObjectCreation => new
Conversion
(ConversionKind.ObjectCreation);
303
internal static Conversion CollectionExpression => new
Conversion
(ConversionKind.CollectionExpression);
304
internal static Conversion AnonymousFunction => new
Conversion
(ConversionKind.AnonymousFunction);
305
internal static Conversion Boxing => new
Conversion
(ConversionKind.Boxing);
306
internal static Conversion NullLiteral => new
Conversion
(ConversionKind.NullLiteral);
307
internal static Conversion DefaultLiteral => new
Conversion
(ConversionKind.DefaultLiteral);
308
internal static Conversion NullToPointer => new
Conversion
(ConversionKind.ImplicitNullToPointer);
309
internal static Conversion PointerToVoid => new
Conversion
(ConversionKind.ImplicitPointerToVoid);
310
internal static Conversion PointerToPointer => new
Conversion
(ConversionKind.ExplicitPointerToPointer);
311
internal static Conversion PointerToInteger => new
Conversion
(ConversionKind.ExplicitPointerToInteger);
312
internal static Conversion IntegerToPointer => new
Conversion
(ConversionKind.ExplicitIntegerToPointer);
313
internal static Conversion Unboxing => new
Conversion
(ConversionKind.Unboxing);
314
internal static Conversion ExplicitReference => new
Conversion
(ConversionKind.ExplicitReference);
315
internal static Conversion IntPtr => new
Conversion
(ConversionKind.IntPtr);
316
internal static Conversion ExplicitEnumeration => new
Conversion
(ConversionKind.ExplicitEnumeration);
317
internal static Conversion ExplicitNumeric => new
Conversion
(ConversionKind.ExplicitNumeric);
318
internal static Conversion ImplicitDynamic => new
Conversion
(ConversionKind.ImplicitDynamic);
319
internal static Conversion ExplicitDynamic => new
Conversion
(ConversionKind.ExplicitDynamic);
320
internal static Conversion InterpolatedString => new
Conversion
(ConversionKind.InterpolatedString);
321
internal static Conversion InterpolatedStringHandler => new
Conversion
(ConversionKind.InterpolatedStringHandler);
322
internal static Conversion Deconstruction => new
Conversion
(ConversionKind.Deconstruction);
323
internal static Conversion PinnedObjectToPointer => new
Conversion
(ConversionKind.PinnedObjectToPointer);
324
internal static Conversion ImplicitPointer => new
Conversion
(ConversionKind.ImplicitPointer);
325
internal static Conversion FunctionType => new
Conversion
(ConversionKind.FunctionType);
326
internal static Conversion InlineArray => new
Conversion
(ConversionKind.InlineArray);
327
internal static Conversion ImplicitSpan => new
Conversion
(ConversionKind.ImplicitSpan);
328
internal static Conversion ExplicitSpan => new
Conversion
(ConversionKind.ExplicitSpan);
340
internal static readonly Conversion ExplicitNullableWithExplicitEnumerationUnderlying = new
Conversion
(ConversionKind.ExplicitNullable, ExplicitEnumerationUnderlying);
341
internal static readonly Conversion ExplicitNullableWithPointerToIntegerUnderlying = new
Conversion
(ConversionKind.ExplicitNullable, PointerToIntegerUnderlying);
342
internal static readonly Conversion ExplicitNullableWithIdentityUnderlying = new
Conversion
(ConversionKind.ExplicitNullable, IdentityUnderlying);
343
internal static readonly Conversion ExplicitNullableWithImplicitNumericUnderlying = new
Conversion
(ConversionKind.ExplicitNullable, ImplicitNumericUnderlying);
344
internal static readonly Conversion ExplicitNullableWithExplicitNumericUnderlying = new
Conversion
(ConversionKind.ExplicitNullable, ExplicitNumericUnderlying);
345
internal static readonly Conversion ExplicitNullableWithImplicitConstantUnderlying = new
Conversion
(ConversionKind.ExplicitNullable, ImplicitConstantUnderlying);
347
internal static readonly Conversion ImplicitNullableWithExplicitEnumerationUnderlying = new
Conversion
(ConversionKind.ImplicitNullable, ExplicitEnumerationUnderlying);
348
internal static readonly Conversion ImplicitNullableWithPointerToIntegerUnderlying = new
Conversion
(ConversionKind.ImplicitNullable, PointerToIntegerUnderlying);
349
internal static readonly Conversion ImplicitNullableWithIdentityUnderlying = new
Conversion
(ConversionKind.ImplicitNullable, IdentityUnderlying);
350
internal static readonly Conversion ImplicitNullableWithImplicitNumericUnderlying = new
Conversion
(ConversionKind.ImplicitNullable, ImplicitNumericUnderlying);
351
internal static readonly Conversion ImplicitNullableWithExplicitNumericUnderlying = new
Conversion
(ConversionKind.ImplicitNullable, ExplicitNumericUnderlying);
352
internal static readonly Conversion ImplicitNullableWithImplicitConstantUnderlying = new
Conversion
(ConversionKind.ImplicitNullable, ImplicitConstantUnderlying);
368
return new
Conversion
(ConversionKind.StackAllocToPointerType, ImmutableArray.Create(underlyingConversion));
373
return new
Conversion
(ConversionKind.StackAllocToSpanType, ImmutableArray.Create(underlyingConversion));
388
_ => new
Conversion
(kind, ImmutableArray.Create(nestedConversion)),
394
return new
Conversion
(ConversionKind.SwitchExpression, innerConversions);
399
return new
Conversion
(ConversionKind.ConditionalExpression, innerConversions);
Binder\Semantics\Conversions\Conversions.cs (1)
517
return new
Conversion
(ConversionKind.MethodGroup, method, isExtensionMethod: isExtensionMethod);
Binder\Semantics\Conversions\ConversionsBase.cs (10)
785
var result = new
Conversion
(conversionResult, isImplicit: true);
889
return new
Conversion
(conversionResult, isImplicit: false);
1191
return new
Conversion
(ConversionKind.ImplicitNullable, ImmutableArray.Create(underlyingConversion));
1327
return new
Conversion
(ConversionKind.ImplicitNullable, ImmutableArray.Create(underlyingTupleConversion));
1356
return new
Conversion
(ConversionKind.ExplicitNullable, ImmutableArray.Create(underlyingTupleConversion));
1763
return new
Conversion
(result, isImplicit: true);
2289
return new
Conversion
(ConversionKind.ImplicitNullable, ImmutableArray.Create(tupleConversion));
2371
return new
Conversion
(kind, argumentConversions.ToImmutableAndFree());
2450
return new
Conversion
(kind, nestedConversions.ToImmutableAndFree());
2492
return new
Conversion
(ConversionKind.ExplicitNullable, ImmutableArray.Create(tupleConversion));
Compilation\CSharpSemanticModel.cs (4)
2112
conversion = new
Conversion
(ConversionKind.AnonymousFunction, lambda.Symbol, false);
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);
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (4)
1200
var userDefinedConversion = new
Conversion
(conversionKind, method, false);
1852
var conversion = new
Conversion
(conversionKind, method, isExtensionMethod: false);
1900
var resultConversion = new
Conversion
(result, conversion.IsImplicit);
2007
return new
Conversion
(result, isImplicit);
1116 references to Conversion
ConfigurationSchemaGenerator (1)
RuntimeSource\Configuration.Binder\ConfigurationBindingGenerator.Parser.cs (1)
527
Conversion
conversion = _typeSymbols.Compilation.ClassifyConversion(source, dest);
Microsoft.AspNetCore.Components.Analyzers (3)
ComponentFacts.cs (1)
173
var
conversion = compilation.ClassifyConversion(symbols.IComponentType, type);
ComponentParameterAnalyzer.cs (1)
102
var
conversion = context.Compilation.ClassifyConversion(symbols.ParameterCaptureUnmatchedValuesRuntimeType, property.Type);
ComponentParameterUsageAnalyzer.cs (1)
89
var
conversion = context.Compilation.ClassifyConversion(propertyContainingType, assignmentContainingType);
Microsoft.AspNetCore.Components.SdkAnalyzers (3)
ComponentFacts.cs (1)
102
var
conversion = compilation.ClassifyConversion(symbols.IComponentType, type);
ComponentParameterAnalyzer.cs (1)
96
var
conversion = context.Compilation.ClassifyConversion(symbols.ParameterCaptureUnmatchedValuesRuntimeType, property.Type);
ComponentParameterUsageAnalyzer.cs (1)
89
var
conversion = context.Compilation.ClassifyConversion(propertyContainingType, assignmentContainingType);
Microsoft.CodeAnalysis.CSharp (958)
Binder\Binder.cs (1)
657
internal void ReportDiagnosticsIfObsolete(BindingDiagnosticBag diagnostics,
Conversion
conversion, SyntaxNodeOrToken node, bool hasBaseReceiver)
Binder\Binder.ValueChecks.cs (1)
4276
if (conversion.Conversion ==
Conversion
.ImplicitThrow)
Binder\Binder_Await.cs (4)
360
if (!isApplicableMethod(exprType, member, node, diagnostics, this, out MethodSymbol? method, out
Conversion
argumentConversion))
416
out
Conversion
conversion)
469
static bool isValidConversion(TypeSymbol exprType, MethodSymbol method, SyntaxNode node, BindingDiagnosticBag diagnostics, Binder @this, out
Conversion
conversion)
685
var
conversion = this.Conversions.ClassifyImplicitConversionFromType(awaiterType, INotifyCompletion, ref useSiteInfo);
Binder\Binder_Conversions.cs (46)
26
var
conversion = Conversions.ClassifyConversionFromExpression(source, destination, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
34
Conversion
conversion,
44
Conversion
conversion,
57
Conversion
conversion,
84
static bool filterConversion(
Conversion
conversion, BoundExpression result)
138
Conversion
conversion,
360
void reportUseSiteDiagnostics(SyntaxNode syntax,
Conversion
conversion, BoundExpression source, TypeSymbol destination, BindingDiagnosticBag diagnostics)
375
void ensureAllUnderlyingConversionsChecked(SyntaxNode syntax, BoundExpression source,
Conversion
conversion, bool wasCompilerGenerated, TypeSymbol destination, BindingDiagnosticBag diagnostics)
472
void checkConstraintLanguageVersionAndRuntimeSupportForConversion(SyntaxNode syntax,
Conversion
conversion, BoundExpression source, TypeSymbol destination, BindingDiagnosticBag diagnostics)
819
SyntaxNode syntax, BoundUnconvertedObjectCreationExpression node,
Conversion
conversion, bool isCast, TypeSymbol destination,
841
expr is BoundBadExpression ?
Conversion
.NoConversion : conversion,
888
Conversion
conversion,
906
Conversion
conversion,
912
private readonly
Conversion
_conversion = conversion;
1165
var
elementConversion = elementConversions[i];
1188
ref readonly CollectionExpressionConverter @this, BoundCollectionExpressionSpreadElement element, TypeSymbol elementType,
Conversion
elementConversion)
1598
var
conversion = Conversions.ClassifyImplicitConversionFromType(elementTypeOriginalDefinition, elementType, ref candidateUseSiteInfo);
2154
var
conversion = conversions.ConvertExtensionMethodThisArg(constructed.Parameters[0].Type, receiverType, ref useSiteInfo, isMethodGroupConversion: false);
2416
Conversion
elementConversion = Conversions.GetCollectionExpressionSpreadElementConversion(spreadElement, elementType, ref useSiteInfo);
2426
Conversion
elementConversion = Conversions.ClassifyImplicitConversionFromExpression((BoundExpression)element, elementType, ref useSiteInfo);
2451
Conversion
? conversionIfTargetTyped,
2457
var
conversion = conversionIfTargetTyped.GetValueOrDefault();
2458
ImmutableArray<
Conversion
> underlyingConversions = conversion.UnderlyingConversions;
2491
private BoundExpression ConvertSwitchExpression(BoundUnconvertedSwitchExpression source, TypeSymbol destination,
Conversion
? conversionIfTargetTyped, BindingDiagnosticBag diagnostics, bool hasErrors = false)
2494
Conversion
conversion = conversionIfTargetTyped ??
Conversion
.Identity;
2496
ImmutableArray<
Conversion
> underlyingConversions = conversion.UnderlyingConversions;
2521
Conversion
conversion,
2600
Conversion
toParameterTypeConversion = Conversions.ClassifyStandardConversion(convertedOperand.Type, conversionParameterType, ref useSiteInfo);
2621
Conversion
toConversion = conversion.UserDefinedToConversion;
2652
Conversion
fromReturnTypeConversion = Conversions.ClassifyStandardConversion(conversionReturnType, conversionToType, ref useSiteInfo);
2710
Conversion
conversion,
2837
SyntaxNode syntax, BoundExpression source,
Conversion
conversion, bool isCast,
2898
SyntaxNode syntax, BoundExpression source,
Conversion
conversion, bool isCast,
2929
SyntaxNode syntax, BoundExpression source,
Conversion
conversion, bool isCast,
3090
SyntaxNode syntax, BoundExpression source,
Conversion
conversion, bool isCast,
3126
var
underlyingConversion = conversion.UnderlyingConversions.Single();
3131
SyntaxNode syntax, BoundTupleLiteral sourceTuple,
Conversion
conversion, bool isCast,
3143
var
conversionWithoutNullable = conversion;
3198
var
elementConversion = underlyingConversions[i];
3236
Conversion
.Identity,
3258
private BoundMethodGroup FixMethodGroupWithTypeOrValue(BoundMethodGroup group,
Conversion
conversion, BindingDiagnosticBag diagnostics)
3709
Conversion
conversion,
3777
out
Conversion
conversion)
3781
conversion =
Conversion
.NoConversion;
3809
Conversion
conversion,
Binder\Binder_Deconstruct.cs (5)
132
new BoundConversion(boundRHS.Syntax, boundRHS,
Conversion
.Deconstruction, @checked: false, explicitCastInCode: false,
139
Conversion
conversion;
249
out
Conversion
conversion)
253
conversion =
Conversion
.Deconstruction;
301
Conversion
nestedConversion;
Binder\Binder_Expressions.cs (19)
184
return FixMethodGroupWithTypeOrValue(methodGroup,
Conversion
.NoConversion, BindingDiagnosticBag.Discarded);
1261
Conversion
conversion = this.Conversions.ClassifyConversionFromExpression(argument, typedReferenceType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
1310
Conversion
conversion = this.Conversions.ClassifyConversionFromExpression(argument, typedReferenceType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
2705
Conversion
conversion = this.Conversions.ClassifyImplicitConversionFromExpression(boundOperand, intType, ref useSiteInfo);
2811
Conversion
conversion = this.Conversions.ClassifyImplicitConversionFromExpression(boundOperand, indexType, ref useSiteInfo);
2826
Conversion
conversion = this.Conversions.ClassifyConversionFromExpression(operand, targetType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo, forCast: true);
2843
Conversion
conversion,
2984
var
elementConversion = Conversions.ClassifyConversionFromExpression(argument, targetElementType, isChecked: CheckOverflowAtRuntime, ref discardedUseSiteInfo);
3010
var
underlyingConversion = Conversions.ClassifyBuiltInConversion(operand.Type, underlyingTargetTypeWithAnnotations.Type, isChecked: CheckOverflowAtRuntime, ref discardedUseSiteInfo);
3569
var
kind = result.ConversionForArg(arg);
3751
var
interpolatedStringConversion = result.ConversionForArg(interpolatedStringArgNum);
5413
var
conversion = @this.Conversions.ClassifyConversionFromExpression(expression, collectionType, isChecked: @this.CheckOverflowAtRuntime, ref useSiteInfo);
5564
var
conversion = this.Conversions.ClassifyConversionFromExpression(unboundLambda, type, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
5604
Conversion
conversion;
5637
Conversion
conv = Conversions.MethodGroupConversion(argument.Syntax, methodGroup, type, ref useSiteInfo);
7159
Conversion
conversion = this.Conversions.ClassifyConversionFromExpression(classCreation, interfaceType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo, forCast: true);
9235
Conversion
.ImplicitNumeric,
10095
Conversion
failedConversion = this.Conversions.ClassifyConversionFromExpression(index, int32, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
10150
Conversion
conversion = this.Conversions.ClassifyImplicitConversionFromExpression(expr, targetType, ref useSiteInfo);
Binder\Binder_Invocation.cs (2)
1747
Conversion
conversion = Conversions.ClassifyConversionFromExpression(defaultValue, parameterType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
1869
Conversion
conversion = Conversions.ClassifyImplicitConversionFromExpression(unconvertedCollection, collectionType, ref useSiteInfo);
Binder\Binder_Operators.cs (16)
76
var
finalDynamicConversion = this.Compilation.Conversions.ClassifyConversionFromExpression(placeholder, left.Type, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
294
Conversion
rightToLeftConversion = this.Conversions.ClassifyConversionFromExpression(right, leftType, isChecked: checkOverflowAtRuntime, ref useSiteInfo);
498
Conversion
conversion = overloadResolutionResult.ValidResult.Result.ConversionForArg(0);
702
Conversion
argumentConversion = this.Conversions.ClassifyConversionFromExpression(right, delegateType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
1313
var
conversion = this.Conversions.ClassifyConversionFromExpression(right, left.Type, isChecked: CheckOverflowAtRuntime, ref discardedUseSiteInfo);
1605
var
implicitConversion = Conversions.ClassifyImplicitConversionFromExpression(left, booleanType, ref useSiteInfo);
3604
Conversion
conversion = overloadResolutionResult.ValidResult.Result.ConversionForArg(0);
4986
Conversion
conv = Conversions.ClassifyConversionFromExpression(operand, targetType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
5007
Conversion
conversion = Conversions.ClassifyBuiltInConversion(inputType, targetType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
5465
Conversion
.NullLiteral,
5504
Conversion
conversion = Conversions.ClassifyBuiltInConversion(operandType, targetType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
5747
var
rightConversion = Conversions.ClassifyImplicitConversionFromExpression(rightOperand, optLeftType0, ref useSiteInfo);
5765
var
rightConversion = Conversions.ClassifyImplicitConversionFromExpression(rightOperand, optLeftType, ref useSiteInfo);
5802
Conversion
leftConversionClassification;
5880
var
underlyingRightConversion = Conversions.ClassifyImplicitConversionFromExpression(rightOperand, underlyingLeftType, ref useSiteInfo);
5894
var
rightConversion = Conversions.ClassifyImplicitConversionFromExpression(rightOperand, leftType, ref useSiteInfo);
Binder\Binder_Patterns.cs (22)
228
Conversion
bestMatchConversion =
Conversion
.NoConversion;
280
ref
Conversion
bestMatchConversion
290
Conversion
conversion = conversions.ClassifyBuiltInConversion(type, candidate.Parameters[0].Type, isChecked: false, ref discardedUseSiteInfo);
892
var convertedExpression = BindExpressionOrTypeForPattern(unionType, inputType, innerExpression, ref hasErrors, diagnostics, out var constantValueOpt, out bool wasExpression, out
Conversion
patternConversion, out BoundExpression originalExpression);
946
private bool ShouldBlockINumberBaseConversion(
Conversion
patternConversion, TypeSymbol inputType)
998
out
Conversion
patternExpressionConversion,
1012
patternExpressionConversion =
Conversion
.NoConversion;
1028
out
Conversion
patternExpressionConversion,
1035
patternExpressionConversion =
Conversion
.NoConversion;
1047
out
Conversion
patternExpressionConversion)
1093
out
Conversion
patternExpressionConversion)
1139
patternExpressionConversion =
Conversion
.NoConversion;
1146
patternExpressionConversion =
Conversion
.NoConversion;
1175
patternExpressionConversion =
Conversion
.NoConversion;
1311
Conversion
conversion;
1339
bool reportBadMatch(SyntaxNode typeSyntax, TypeSymbol inputType, TypeSymbol patternType, ConstantValue matchPossible,
Conversion
conversion, BindingDiagnosticBag diagnostics)
1372
out
Conversion
conversion,
1377
conversion =
Conversion
.NoConversion;
1407
out
Conversion
conversion,
1417
conversion =
Conversion
.Identity;
2316
BoundExpression value = BindExpressionForPattern(unionType, inputType, node.Expression, ref hasErrors, diagnostics, out var constantValueOpt, out _, out
Conversion
patternConversion, originalExpression: out _);
Binder\Binder_Statements.cs (11)
1372
Conversion
elementConversionClassification = this.Conversions.ClassifyConversionFromType(pointerType, declType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
1965
internal BoundExpression GenerateConversionForAssignment(TypeSymbol targetType, BoundExpression expression, BindingDiagnosticBag diagnostics, out
Conversion
conversion, ConversionForAssignmentFlags flags = ConversionForAssignmentFlags.None)
2278
Conversion
conversion, TypeSymbol sourceType, TypeSymbol targetType, ConstantValue sourceConstantValueOpt = null)
2348
Conversion
conversion,
2470
var
conversion = this.Conversions.ClassifyImplicitConversionFromExpression(expr, targetType, ref useSiteInfo);
2570
var
elementConversion = Conversions.ClassifyImplicitConversionFromExpression(argument, targetElementType, ref discardedUseSiteInfo);
2693
return BoundConversion.Synthesized(node, BindToTypeForErrorRecovery(expr),
Conversion
.NoConversion, false, explicitCastInCode: false, conversionGroupOpt: null, InConversionGroupFlags.Unspecified, ConstantValue.NotAvailable, boolean, hasErrors: true);
2718
var
conversion = this.Conversions.ClassifyConversionFromExpression(expr, boolean, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
2761
return BoundConversion.Synthesized(node, expr,
Conversion
.NoConversion, false, explicitCastInCode: false, conversionGroupOpt: null, InConversionGroupFlags.Unspecified, ConstantValue.NotAvailable, boolean, hasErrors: true);
3184
Conversion
conversion;
3194
conversion =
Conversion
.NoConversion;
Binder\Binder_TupleOperators.cs (1)
133
Conversion
conversion = this.Conversions.ClassifyImplicitConversionFromType(type, boolean, ref useSiteInfo);
Binder\DecisionDagBuilder.cs (2)
835
Conversion
conversion = _conversions.ClassifyBuiltInConversion(inputType, type, isChecked: false, ref useSiteInfo);
2680
ConstantValue result = Binder.ExpressionOfTypeMatchesPatternType(conversions, expressionType, patternType, ref useSiteInfo, out
Conversion
conversion);
Binder\ForEachLoopBinder.cs (5)
484
Conversion
elementConversionClassification = this.Conversions.ClassifyConversionFromType(inferredType.Type, iterationVariableType.Type, isChecked: CheckOverflowAtRuntime, ref useSiteInfo, forCast: true);
538
Conversion
collectionConversionClassification = this.Conversions.ClassifyConversionFromExpression(collectionExpr, builder.CollectionType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
539
Conversion
currentConversionClassification = this.Conversions.ClassifyConversionFromType(builder.CurrentPropertyGetter.ReturnType, builder.ElementType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
642
Conversion
collectionConversionClassification,
1562
var
collectionConversion = this.Conversions.ClassifyConversionFromExpression(collectionExpr, result.Parameters[0].Type, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
Binder\RefSafetyAnalysis.cs (2)
1130
private void VisitDeconstructionArguments(ArrayBuilder<DeconstructionVariable> variables, SyntaxNode syntax,
Conversion
conversion, BoundExpression right)
1201
var
underlyingConversion = BoundNode.GetConversion(placeholderConversion, placeholder);
Binder\Semantics\Conversions\Conversion.cs (118)
20
public readonly struct Conversion : IEquatable<
Conversion
>, IConvertibleConversion
84
public NestedUncommonData(ImmutableArray<
Conversion
> nestedConversions)
89
internal readonly ImmutableArray<
Conversion
> _nestedConversionsOpt;
113
ImmutableArray<
Conversion
> elementConversions) :
130
internal static
Conversion
CreateCollectionExpressionConversion(
133
ImmutableArray<
Conversion
> elementConversions)
140
internal static
Conversion
CreateUnionConversion(UserDefinedConversionResult conversionResult)
197
internal Conversion(ConversionKind kind, ImmutableArray<
Conversion
> nestedConversions)
216
internal
Conversion
SetConversionMethod(MethodSymbol conversionMethod)
228
internal
Conversion
SetArrayIndexConversionForDynamic()
288
internal static
Conversion
GetTrivialConversion(ConversionKind kind)
294
internal static
Conversion
UnsetConversion => new Conversion(ConversionKind.UnsetConversionKind);
295
internal static
Conversion
NoConversion => new Conversion(ConversionKind.NoConversion);
296
internal static
Conversion
Identity => new Conversion(ConversionKind.Identity);
297
internal static
Conversion
ImplicitConstant => new Conversion(ConversionKind.ImplicitConstant);
298
internal static
Conversion
ImplicitNumeric => new Conversion(ConversionKind.ImplicitNumeric);
299
internal static
Conversion
ImplicitReference => new Conversion(ConversionKind.ImplicitReference);
300
internal static
Conversion
ImplicitEnumeration => new Conversion(ConversionKind.ImplicitEnumeration);
301
internal static
Conversion
ImplicitThrow => new Conversion(ConversionKind.ImplicitThrow);
302
internal static
Conversion
ObjectCreation => new Conversion(ConversionKind.ObjectCreation);
303
internal static
Conversion
CollectionExpression => new Conversion(ConversionKind.CollectionExpression);
304
internal static
Conversion
AnonymousFunction => new Conversion(ConversionKind.AnonymousFunction);
305
internal static
Conversion
Boxing => new Conversion(ConversionKind.Boxing);
306
internal static
Conversion
NullLiteral => new Conversion(ConversionKind.NullLiteral);
307
internal static
Conversion
DefaultLiteral => new Conversion(ConversionKind.DefaultLiteral);
308
internal static
Conversion
NullToPointer => new Conversion(ConversionKind.ImplicitNullToPointer);
309
internal static
Conversion
PointerToVoid => new Conversion(ConversionKind.ImplicitPointerToVoid);
310
internal static
Conversion
PointerToPointer => new Conversion(ConversionKind.ExplicitPointerToPointer);
311
internal static
Conversion
PointerToInteger => new Conversion(ConversionKind.ExplicitPointerToInteger);
312
internal static
Conversion
IntegerToPointer => new Conversion(ConversionKind.ExplicitIntegerToPointer);
313
internal static
Conversion
Unboxing => new Conversion(ConversionKind.Unboxing);
314
internal static
Conversion
ExplicitReference => new Conversion(ConversionKind.ExplicitReference);
315
internal static
Conversion
IntPtr => new Conversion(ConversionKind.IntPtr);
316
internal static
Conversion
ExplicitEnumeration => new Conversion(ConversionKind.ExplicitEnumeration);
317
internal static
Conversion
ExplicitNumeric => new Conversion(ConversionKind.ExplicitNumeric);
318
internal static
Conversion
ImplicitDynamic => new Conversion(ConversionKind.ImplicitDynamic);
319
internal static
Conversion
ExplicitDynamic => new Conversion(ConversionKind.ExplicitDynamic);
320
internal static
Conversion
InterpolatedString => new Conversion(ConversionKind.InterpolatedString);
321
internal static
Conversion
InterpolatedStringHandler => new Conversion(ConversionKind.InterpolatedStringHandler);
322
internal static
Conversion
Deconstruction => new Conversion(ConversionKind.Deconstruction);
323
internal static
Conversion
PinnedObjectToPointer => new Conversion(ConversionKind.PinnedObjectToPointer);
324
internal static
Conversion
ImplicitPointer => new Conversion(ConversionKind.ImplicitPointer);
325
internal static
Conversion
FunctionType => new Conversion(ConversionKind.FunctionType);
326
internal static
Conversion
InlineArray => new Conversion(ConversionKind.InlineArray);
327
internal static
Conversion
ImplicitSpan => new Conversion(ConversionKind.ImplicitSpan);
328
internal static
Conversion
ExplicitSpan => new Conversion(ConversionKind.ExplicitSpan);
332
internal static ImmutableArray<
Conversion
> IdentityUnderlying => ConversionSingletons.IdentityUnderlying;
333
internal static ImmutableArray<
Conversion
> ImplicitConstantUnderlying => ConversionSingletons.ImplicitConstantUnderlying;
334
internal static ImmutableArray<
Conversion
> ImplicitNumericUnderlying => ConversionSingletons.ImplicitNumericUnderlying;
335
internal static ImmutableArray<
Conversion
> ExplicitNumericUnderlying => ConversionSingletons.ExplicitNumericUnderlying;
336
internal static ImmutableArray<
Conversion
> ExplicitEnumerationUnderlying => ConversionSingletons.ExplicitEnumerationUnderlying;
337
internal static ImmutableArray<
Conversion
> PointerToIntegerUnderlying => ConversionSingletons.PointerToIntegerUnderlying;
340
internal static readonly
Conversion
ExplicitNullableWithExplicitEnumerationUnderlying = new Conversion(ConversionKind.ExplicitNullable, ExplicitEnumerationUnderlying);
341
internal static readonly
Conversion
ExplicitNullableWithPointerToIntegerUnderlying = new Conversion(ConversionKind.ExplicitNullable, PointerToIntegerUnderlying);
342
internal static readonly
Conversion
ExplicitNullableWithIdentityUnderlying = new Conversion(ConversionKind.ExplicitNullable, IdentityUnderlying);
343
internal static readonly
Conversion
ExplicitNullableWithImplicitNumericUnderlying = new Conversion(ConversionKind.ExplicitNullable, ImplicitNumericUnderlying);
344
internal static readonly
Conversion
ExplicitNullableWithExplicitNumericUnderlying = new Conversion(ConversionKind.ExplicitNullable, ExplicitNumericUnderlying);
345
internal static readonly
Conversion
ExplicitNullableWithImplicitConstantUnderlying = new Conversion(ConversionKind.ExplicitNullable, ImplicitConstantUnderlying);
347
internal static readonly
Conversion
ImplicitNullableWithExplicitEnumerationUnderlying = new Conversion(ConversionKind.ImplicitNullable, ExplicitEnumerationUnderlying);
348
internal static readonly
Conversion
ImplicitNullableWithPointerToIntegerUnderlying = new Conversion(ConversionKind.ImplicitNullable, PointerToIntegerUnderlying);
349
internal static readonly
Conversion
ImplicitNullableWithIdentityUnderlying = new Conversion(ConversionKind.ImplicitNullable, IdentityUnderlying);
350
internal static readonly
Conversion
ImplicitNullableWithImplicitNumericUnderlying = new Conversion(ConversionKind.ImplicitNullable, ImplicitNumericUnderlying);
351
internal static readonly
Conversion
ImplicitNullableWithExplicitNumericUnderlying = new Conversion(ConversionKind.ImplicitNullable, ExplicitNumericUnderlying);
352
internal static readonly
Conversion
ImplicitNullableWithImplicitConstantUnderlying = new Conversion(ConversionKind.ImplicitNullable, ImplicitConstantUnderlying);
358
internal static ImmutableArray<
Conversion
> IdentityUnderlying = ImmutableArray.Create(Identity);
359
internal static ImmutableArray<
Conversion
> ImplicitConstantUnderlying = ImmutableArray.Create(ImplicitConstant);
360
internal static ImmutableArray<
Conversion
> ImplicitNumericUnderlying = ImmutableArray.Create(ImplicitNumeric);
361
internal static ImmutableArray<
Conversion
> ExplicitNumericUnderlying = ImmutableArray.Create(ExplicitNumeric);
362
internal static ImmutableArray<
Conversion
> ExplicitEnumerationUnderlying = ImmutableArray.Create(ExplicitEnumeration);
363
internal static ImmutableArray<
Conversion
> PointerToIntegerUnderlying = ImmutableArray.Create(PointerToInteger);
366
internal static
Conversion
MakeStackAllocToPointerType(
Conversion
underlyingConversion)
371
internal static
Conversion
MakeStackAllocToSpanType(
Conversion
underlyingConversion)
376
internal static
Conversion
MakeNullableConversion(ConversionKind kind,
Conversion
nestedConversion)
392
internal static
Conversion
MakeSwitchExpression(ImmutableArray<
Conversion
> innerConversions)
397
internal static
Conversion
MakeConditionalExpression(ImmutableArray<
Conversion
> innerConversions)
426
internal ImmutableArray<
Conversion
> UnderlyingConversions
432
default(ImmutableArray<
Conversion
>);
453
foreach (
var
underlying in underlyingConversions)
497
foreach (
var
underlying in underlyingConversions)
613
foreach (
var
conv in nestedConversions)
1131
internal
Conversion
UserDefinedFromConversion
1136
return best == null ?
Conversion
.NoConversion : best.SourceConversion;
1143
internal
Conversion
UserDefinedToConversion
1148
return best == null ?
Conversion
.NoConversion : best.TargetConversion;
1213
/// This is a lossy conversion; it is not possible to recover the original <see cref="
Conversion
"/>
1233
/// Determines whether the specified <see cref="
Conversion
"/> object is equal to the current <see cref="
Conversion
"/> object.
1235
/// <param name="obj">The <see cref="
Conversion
"/> object to compare with the current <see cref="
Conversion
"/> object.</param>
1236
/// <returns>true if the specified <see cref="
Conversion
"/> object is equal to the current <see cref="
Conversion
"/> object; otherwise, false.</returns>
1239
return obj is
Conversion
&& this.Equals((
Conversion
)obj);
1243
/// Determines whether the specified <see cref="
Conversion
"/> object is equal to the current <see cref="
Conversion
"/> object.
1245
/// <param name="other">The <see cref="
Conversion
"/> object to compare with the current <see cref="
Conversion
"/> object.</param>
1246
/// <returns>true if the specified <see cref="
Conversion
"/> object is equal to the current <see cref="
Conversion
"/> object; otherwise, false.</returns>
1247
public bool Equals(
Conversion
other)
1253
/// Returns a hash code for the current <see cref="
Conversion
"/> object.
1255
/// <returns>A hash code for the current <see cref="
Conversion
"/> object.</returns>
1262
/// Returns true if the specified <see cref="
Conversion
"/> objects are equal and false otherwise.
1264
/// <param name="left">The first <see cref="
Conversion
"/> object.</param>
1265
/// <param name="right">The second <see cref="
Conversion
"/> object.</param>
1267
public static bool operator ==(
Conversion
left,
Conversion
right)
1273
/// Returns false if the specified <see cref="
Conversion
"/> objects are equal and true otherwise.
1275
/// <param name="left">The first <see cref="
Conversion
"/> object.</param>
1276
/// <param name="right">The second <see cref="
Conversion
"/> object.</param>
1278
public static bool operator !=(
Conversion
left,
Conversion
right)
1288
TreeDumperNode Dump(
Conversion
self)
Binder\Semantics\Conversions\Conversions.cs (41)
44
public override
Conversion
GetMethodGroupDelegateConversion(BoundMethodGroup source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
49
return
Conversion
.NoConversion;
55
return
Conversion
.NoConversion;
107
var
conversion = (resolution.IsEmpty || resolution.HasAnyErrors) ?
108
Conversion
.NoConversion :
115
public override
Conversion
GetMethodGroupFunctionPointerConversion(BoundMethodGroup source, FunctionPointerTypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
124
var
conversion = (resolution.IsEmpty || resolution.HasAnyErrors) ?
125
Conversion
.NoConversion :
131
protected override
Conversion
GetInterpolatedStringConversion(BoundExpression source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
137
return
Conversion
.NoConversion;
142
return
Conversion
.InterpolatedStringHandler;
147
return
Conversion
.NoConversion;
155
?
Conversion
.InterpolatedString :
Conversion
.NoConversion;
159
protected override
Conversion
GetCollectionExpressionConversion(
170
return
Conversion
.NoConversion;
179
return
Conversion
.NoConversion;
196
return
Conversion
.NoConversion;
202
return
Conversion
.NoConversion;
206
var builder = ArrayBuilder<
Conversion
>.GetInstance(elements.Length);
209
Conversion
elementConversion = convertElement(element, elementType, ref useSiteInfo);
213
return
Conversion
.NoConversion;
219
return
Conversion
.CreateCollectionExpressionConversion(collectionTypeKind, elementType, constructor, isExpanded, builder.ToImmutableAndFree());
221
Conversion
convertElement(BoundNode element, TypeSymbol elementType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
231
internal
Conversion
GetCollectionExpressionSpreadElementConversion(
239
return
Conversion
.NoConversion;
247
protected override
Conversion
AnalyzeImplicitUnionConversions(BoundExpression sourceExpression, TypeSymbol source, TypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
253
return
Conversion
.NoConversion;
408
public
Conversion
MethodGroupConversion(SyntaxNode syntax, MethodGroup methodGroup, NamedTypeSymbol delegateType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
427
var
conversion = ToConversion(result, methodGroup, delegateType.DelegateInvokeMethod.ParameterCount);
459
private static
Conversion
ToConversion(OverloadResolutionResult<MethodSymbol> result, MethodGroup methodGroup, int parameterCount)
479
return
Conversion
.NoConversion;
488
return
Conversion
.NoConversion;
495
return
Conversion
.NoConversion;
500
return
Conversion
.NoConversion;
520
public override
Conversion
GetStackAllocConversion(BoundStackAllocArrayCreation sourceExpression, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
528
var
pointerConversion = ClassifyImplicitConversionFromType(sourceAsPointer, destination, ref useSiteInfo);
532
return
Conversion
.MakeStackAllocToPointerType(pointerConversion);
540
var
spanConversion = ClassifyImplicitConversionFromType(spanType_T, destination, ref useSiteInfo);
544
return
Conversion
.MakeStackAllocToSpanType(spanConversion);
550
return
Conversion
.NoConversion;
Binder\Semantics\Conversions\ConversionsBase.cs (223)
67
public abstract
Conversion
GetMethodGroupDelegateConversion(BoundMethodGroup source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo);
69
public abstract
Conversion
GetMethodGroupFunctionPointerConversion(BoundMethodGroup source, FunctionPointerTypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo);
71
public abstract
Conversion
GetStackAllocConversion(BoundStackAllocArrayCreation sourceExpression, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo);
75
protected abstract
Conversion
GetInterpolatedStringConversion(BoundExpression source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo);
78
protected abstract
Conversion
GetCollectionExpressionConversion(BoundUnconvertedCollectionExpression source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo);
98
public
Conversion
ClassifyImplicitConversionFromExpression(BoundExpression sourceExpression, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
109
return
Conversion
.Identity;
112
Conversion
conversion = ClassifyImplicitBuiltInConversionFromExpression(sourceExpression, sourceType, destination, ref useSiteInfo);
121
Conversion
fastConversion = FastClassifyConversion(sourceType, destination);
142
return
Conversion
.FunctionType;
169
public
Conversion
ClassifyImplicitConversionFromType(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
177
return
Conversion
.Identity;
181
Conversion
fastConversion = FastClassifyConversion(source, destination);
184
return fastConversion.IsImplicit ? fastConversion :
Conversion
.NoConversion;
188
Conversion
conversion = ClassifyImplicitBuiltInConversionSlow(source, destination, ref useSiteInfo);
204
public
Conversion
ClassifyImplicitConversionFromTypeWhenNeitherOrBothFunctionTypes(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
217
Conversion
.FunctionType :
218
Conversion
.NoConversion;
222
return
Conversion
.NoConversion;
234
public
Conversion
ClassifyConversionFromExpressionType(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
242
return
Conversion
.ImplicitDynamic;
248
private static bool TryGetVoidConversion(TypeSymbol source, TypeSymbol destination, out
Conversion
conversion)
259
conversion =
Conversion
.Identity;
266
conversion =
Conversion
.NoConversion;
283
public
Conversion
ClassifyConversionFromExpression(BoundExpression sourceExpression, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast = false)
289
if (TryGetVoidConversion(sourceExpression.Type, destination, out
var
conversion))
299
var
result = ClassifyImplicitConversionFromExpression(sourceExpression, destination, ref useSiteInfo);
317
public
Conversion
ClassifyConversionFromType(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast = false)
322
if (TryGetVoidConversion(source, destination, out
var
voidConversion))
333
Conversion
fastConversion = FastClassifyConversion(source, destination);
340
Conversion
conversion1 = ClassifyImplicitBuiltInConversionSlow(source, destination, ref useSiteInfo);
347
Conversion
conversion = GetImplicitUserDefinedOrUnionConversion(source, destination, ref useSiteInfo);
375
private
Conversion
ClassifyConversionFromExpressionForCast(BoundExpression source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
381
Conversion
implicitConversion = ClassifyImplicitConversionFromExpression(source, destination, ref useSiteInfo);
387
Conversion
explicitConversion = ClassifyExplicitOnlyConversionFromExpression(source, destination, isChecked: isChecked, ref useSiteInfo, forCast: true);
429
private
Conversion
ClassifyConversionFromTypeForCast(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
435
Conversion
fastConversion = FastClassifyConversion(source, destination);
441
Conversion
implicitBuiltInConversion = ClassifyImplicitBuiltInConversionSlow(source, destination, ref useSiteInfo);
447
Conversion
explicitBuiltInConversion = ClassifyExplicitBuiltInOnlyConversion(source, destination, isChecked: isChecked, ref useSiteInfo, forCast: true);
474
var
conversion = GetExplicitUserDefinedConversion(source, destination, isChecked: isChecked, ref useSiteInfo);
488
public static
Conversion
FastClassifyConversion(TypeSymbol source, TypeSymbol target)
493
return
Conversion
.GetTrivialConversion(convKind);
496
return
Conversion
.MakeNullableConversion(convKind, FastClassifyConversion(source.StrippedType(), target.StrippedType()));
499
public
Conversion
ClassifyBuiltInConversion(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
505
Conversion
fastConversion = FastClassifyConversion(source, destination);
512
Conversion
conversion = ClassifyImplicitBuiltInConversionSlow(source, destination, ref useSiteInfo);
529
public
Conversion
ClassifyStandardConversion(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
541
public
Conversion
ClassifyStandardConversion(BoundExpression sourceExpression, TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
569
Conversion
conversion = ClassifyStandardImplicitConversion(sourceExpression, source, destination, ref useSiteInfo);
580
return
Conversion
.NoConversion;
605
private
Conversion
ClassifyStandardImplicitConversion(BoundExpression sourceExpression, TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
642
Conversion
conversion = ClassifyImplicitBuiltInConversionFromExpression(sourceExpression, source, destination, ref useSiteInfo);
656
return
Conversion
.NoConversion;
658
static bool isImplicitCollectionExpressionConversion(
Conversion
conversion)
695
private
Conversion
ClassifyStandardImplicitConversion(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
697
var
conversion = classifyConversion(source, destination, ref useSiteInfo);
701
Conversion
classifyConversion(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
708
return
Conversion
.Identity;
713
return
Conversion
.ImplicitNumeric;
716
var
nullableConversion = ClassifyImplicitNullableConversion(source, destination, ref useSiteInfo);
725
return
Conversion
.NoConversion;
730
return
Conversion
.ImplicitReference;
735
return
Conversion
.Boxing;
740
return
Conversion
.PointerToVoid;
745
return
Conversion
.ImplicitPointer;
748
var
tupleConversion = ClassifyImplicitTupleConversion(source, destination, ref useSiteInfo);
756
return
Conversion
.ImplicitSpan;
759
return
Conversion
.NoConversion;
763
private
Conversion
ClassifyImplicitBuiltInConversionSlow(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
770
return
Conversion
.NoConversion;
773
Conversion
conversion = ClassifyStandardImplicitConversion(source, destination, ref useSiteInfo);
779
return
Conversion
.NoConversion;
782
private
Conversion
GetImplicitUserDefinedOrUnionConversion(BoundExpression sourceExpression, TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
785
var
result = new Conversion(conversionResult, isImplicit: true);
792
Conversion
unionConversion = AnalyzeImplicitUnionConversions(sourceExpression, source, destination, ref useSiteInfo);
802
private
Conversion
GetImplicitUserDefinedOrUnionConversion(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
807
private
Conversion
ClassifyExplicitBuiltInOnlyConversion(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast)
814
return
Conversion
.NoConversion;
828
return
Conversion
.IntPtr;
833
return
Conversion
.ExplicitEnumeration;
836
var
nullableConversion = ClassifyExplicitNullableConversion(source, destination, isChecked: isChecked, ref useSiteInfo, forCast);
844
return (source.Kind == SymbolKind.DynamicType) ?
Conversion
.ExplicitDynamic :
Conversion
.ExplicitReference;
849
return
Conversion
.Unboxing;
852
var
tupleConversion = ClassifyExplicitTupleConversion(source, destination, isChecked: isChecked, ref useSiteInfo, forCast);
860
return
Conversion
.PointerToPointer;
865
return
Conversion
.PointerToInteger;
870
return
Conversion
.IntegerToPointer;
875
return
Conversion
.ExplicitDynamic;
880
return
Conversion
.ExplicitSpan;
883
return
Conversion
.NoConversion;
886
private
Conversion
GetExplicitUserDefinedConversion(BoundExpression sourceExpression, TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
892
private
Conversion
GetExplicitUserDefinedConversion(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
897
private
Conversion
DeriveStandardExplicitFromOppositeStandardImplicitConversion(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
899
var
oppositeConversion = ClassifyStandardImplicitConversion(destination, source, ref useSiteInfo);
900
Conversion
impliedExplicitConversion;
905
impliedExplicitConversion =
Conversion
.Identity;
908
impliedExplicitConversion =
Conversion
.ExplicitNumeric;
911
impliedExplicitConversion =
Conversion
.ExplicitReference;
914
impliedExplicitConversion =
Conversion
.Unboxing;
917
impliedExplicitConversion =
Conversion
.NoConversion;
920
impliedExplicitConversion =
Conversion
.PointerToPointer;
926
impliedExplicitConversion =
Conversion
.NoConversion;
932
var
underlyingConversion = DeriveStandardExplicitFromOppositeStandardImplicitConversion(strippedSource, strippedDestination, ref useSiteInfo);
937
Conversion
.MakeNullableConversion(ConversionKind.ExplicitNullable, underlyingConversion) :
938
Conversion
.NoConversion;
943
impliedExplicitConversion =
Conversion
.NoConversion;
1024
private static bool ExplicitConversionMayDifferFromImplicit(
Conversion
implicitConversion)
1044
private
Conversion
ClassifyImplicitBuiltInConversionFromExpression(BoundExpression sourceExpression, TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1053
return
Conversion
.ImplicitDynamic;
1060
return
Conversion
.NoConversion;
1065
return
Conversion
.ImplicitEnumeration;
1068
var
constantConversion = ClassifyImplicitConstantExpressionConversion(sourceExpression, destination);
1077
var
nullLiteralConversion = ClassifyNullLiteralConversion(sourceExpression, destination);
1085
return
Conversion
.DefaultLiteral;
1090
var
innerConversion = ClassifyImplicitBuiltInConversionFromExpression(innerExpression, innerExpression.Type, destination, ref useSiteInfo);
1098
var
tupleConversion = ClassifyImplicitTupleLiteralConversion((BoundTupleLiteral)sourceExpression, destination, ref useSiteInfo);
1108
return
Conversion
.AnonymousFunction;
1113
Conversion
methodGroupConversion = GetMethodGroupDelegateConversion((BoundMethodGroup)sourceExpression, destination, ref useSiteInfo);
1122
Conversion
interpolatedStringConversion = GetInterpolatedStringConversion(sourceExpression, destination, ref useSiteInfo);
1129
var
stackAllocConversion = GetStackAllocConversion((BoundStackAllocArrayCreation)sourceExpression, destination, ref useSiteInfo);
1137
var
addressOfConversion = GetMethodGroupFunctionPointerConversion(((BoundUnconvertedAddressOfOperator)sourceExpression).Operand, funcPtrType, ref useSiteInfo);
1145
return
Conversion
.ImplicitThrow;
1148
return
Conversion
.ObjectCreation;
1151
var
collectionExpressionConversion = GetImplicitCollectionExpressionConversion((BoundUnconvertedCollectionExpression)sourceExpression, destination, ref useSiteInfo);
1167
return
Conversion
.InlineArray;
1170
return
Conversion
.NoConversion;
1174
private
Conversion
GetImplicitCollectionExpressionConversion(BoundUnconvertedCollectionExpression collectionExpression, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1176
var
collectionExpressionConversion = GetCollectionExpressionConversion(collectionExpression, destination, ref useSiteInfo);
1188
var
underlyingConversion = GetCollectionExpressionConversion(collectionExpression, underlyingDestination, ref useSiteInfo);
1195
return
Conversion
.NoConversion;
1199
private
Conversion
GetSwitchExpressionConversion(BoundExpression source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1207
return
Conversion
.NoConversion;
1209
var innerConversions = ArrayBuilder<
Conversion
>.GetInstance(switchExpression.SwitchArms.Length);
1212
var
nestedConversion = this.ClassifyImplicitConversionFromExpression(arm.Value, destination, ref useSiteInfo);
1216
return
Conversion
.NoConversion;
1222
return
Conversion
.MakeSwitchExpression(innerConversions.ToImmutableAndFree());
1224
return
Conversion
.NoConversion;
1228
private
Conversion
GetConditionalExpressionConversion(BoundExpression source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1233
return
Conversion
.NoConversion;
1235
var
trueConversion = this.ClassifyImplicitConversionFromExpression(conditionalOperator.Consequence, destination, ref useSiteInfo);
1237
return
Conversion
.NoConversion;
1239
var
falseConversion = this.ClassifyImplicitConversionFromExpression(conditionalOperator.Alternative, destination, ref useSiteInfo);
1241
return
Conversion
.NoConversion;
1243
return
Conversion
.MakeConditionalExpression(ImmutableArray.Create(trueConversion, falseConversion));
1246
private static
Conversion
ClassifyNullLiteralConversion(BoundExpression source, TypeSymbol destination)
1253
return
Conversion
.NoConversion;
1261
return
Conversion
.NullLiteral;
1271
return
Conversion
.ImplicitReference;
1279
return
Conversion
.NullToPointer;
1282
return
Conversion
.NoConversion;
1285
private static
Conversion
ClassifyImplicitConstantExpressionConversion(BoundExpression source, TypeSymbol destination)
1289
return
Conversion
.ImplicitConstant;
1301
return
Conversion
.ImplicitNullableWithImplicitConstantUnderlying;
1305
return
Conversion
.NoConversion;
1308
private
Conversion
ClassifyImplicitTupleLiteralConversion(BoundTupleLiteral source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1312
var
tupleConversion = GetImplicitTupleLiteralConversion(source, destination, ref useSiteInfo);
1324
var
underlyingTupleConversion = GetImplicitTupleLiteralConversion(source, underlyingDestination, ref useSiteInfo);
1331
return
Conversion
.NoConversion;
1334
private
Conversion
ClassifyExplicitTupleLiteralConversion(BoundTupleLiteral source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast)
1338
var
tupleConversion = GetExplicitTupleLiteralConversion(source, destination, isChecked: isChecked, ref useSiteInfo, forCast);
1352
var
underlyingTupleConversion = GetExplicitTupleLiteralConversion(source, underlyingDestination, isChecked: isChecked, ref useSiteInfo, forCast);
1361
return
Conversion
.NoConversion;
1416
private
Conversion
ClassifyExplicitOnlyConversionFromExpression(BoundExpression sourceExpression, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast)
1427
Conversion
tupleConversion = ClassifyExplicitTupleLiteralConversion((BoundTupleLiteral)sourceExpression, destination, isChecked: isChecked, ref useSiteInfo, forCast);
1438
Conversion
fastConversion = FastClassifyConversion(sourceType, destination);
1445
var
conversion = ClassifyExplicitBuiltInOnlyConversion(sourceType, destination, isChecked: isChecked, ref useSiteInfo, forCast);
1734
internal
Conversion
ClassifyImplicitUserDefinedConversionForV6SwitchGoverningType(TypeSymbol sourceType, out TypeSymbol switchGoverningType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1766
internal
Conversion
GetCallerLineNumberConversion(TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1779
return
Conversion
.ImplicitEnumeration;
1782
var
constantConversion = ClassifyImplicitConstantExpressionConversion(intMaxValueLiteral, destination);
1799
Conversion
conversion = ClassifyStandardImplicitConversion(expectedAttributeType, destination, ref useSiteInfo);
1908
Conversion
conversion = ClassifyImplicitConversionFromType(source.Type, destination.Type, ref discardedUseSiteInfo);
1926
public
Conversion
ConvertExtensionMethodThisArg(TypeSymbol parameterType, TypeSymbol thisType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool isMethodGroupConversion)
1929
var
conversion = this.ClassifyImplicitExtensionMethodThisArgConversion(sourceExpressionOpt: null, thisType, parameterType, ref useSiteInfo, isMethodGroupConversion);
1930
return IsValidExtensionMethodThisArgConversion(conversion) ? conversion :
Conversion
.NoConversion;
1936
public
Conversion
ClassifyImplicitExtensionMethodThisArgConversion(BoundExpression sourceExpressionOpt, TypeSymbol sourceType, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool isMethodGroupConversion)
1946
return
Conversion
.Identity;
1951
return
Conversion
.Boxing;
1956
return
Conversion
.ImplicitReference;
1961
return
Conversion
.ImplicitSpan;
1970
var
tupleConversion = GetTupleLiteralConversion(
1987
var
tupleConversion = ClassifyTupleConversion(
1996
return
Conversion
.NoConversion;
2008
return
Conversion
.NoConversion;
2017
public static bool IsValidExtensionMethodThisArgConversion(
Conversion
conversion)
2030
foreach (
var
elementConversion in conversion.UnderlyingConversions)
2252
private
Conversion
ClassifyImplicitNullableConversion(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2265
return
Conversion
.NoConversion;
2273
return
Conversion
.NoConversion;
2278
return
Conversion
.ImplicitNullableWithIdentityUnderlying;
2283
return
Conversion
.ImplicitNullableWithImplicitNumericUnderlying;
2286
var
tupleConversion = ClassifyImplicitTupleConversion(unwrappedSource, unwrappedDestination, ref useSiteInfo);
2292
return
Conversion
.NoConversion;
2295
private delegate
Conversion
ClassifyConversionFromExpressionDelegate(ConversionsBase conversions, BoundExpression sourceExpression, TypeWithAnnotations destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast);
2296
private delegate
Conversion
ClassifyConversionFromTypeDelegate(ConversionsBase conversions, TypeWithAnnotations source, TypeWithAnnotations destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast);
2298
private
Conversion
GetImplicitTupleLiteralConversion(BoundTupleLiteral source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2316
private
Conversion
GetExplicitTupleLiteralConversion(BoundTupleLiteral source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast)
2334
private
Conversion
GetTupleLiteralConversion(
2350
return
Conversion
.NoConversion;
2357
var argumentConversions = ArrayBuilder<
Conversion
>.GetInstance(arguments.Length);
2361
var
result = classifyConversion(this, argument, targetElementTypes[i], isChecked: isChecked, ref useSiteInfo, forCast: forCast);
2365
return
Conversion
.NoConversion;
2374
private
Conversion
ClassifyImplicitTupleConversion(TypeSymbol source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2383
Conversion
conversion = conversions.ClassifyImplicitConversionFromType(s.Type, d.Type, ref u);
2387
return
Conversion
.NoConversion;
2396
private
Conversion
ClassifyExplicitTupleConversion(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast)
2405
Conversion
conversion = conversions.ClassifyConversionFromType(s.Type, d.Type, isChecked: isChecked, ref u, forCast);
2409
return
Conversion
.NoConversion;
2418
private
Conversion
ClassifyTupleConversion(
2434
return
Conversion
.NoConversion;
2437
var nestedConversions = ArrayBuilder<
Conversion
>.GetInstance(sourceTypes.Length);
2440
var
conversion = classifyConversion(this, sourceTypes[i], destTypes[i], isChecked: isChecked, ref useSiteInfo, forCast);
2444
return
Conversion
.NoConversion;
2453
private
Conversion
ClassifyExplicitNullableConversion(TypeSymbol source, TypeSymbol destination, bool isChecked, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool forCast)
2468
return
Conversion
.NoConversion;
2476
return
Conversion
.ExplicitNullableWithIdentityUnderlying;
2481
return
Conversion
.ExplicitNullableWithImplicitNumericUnderlying;
2486
return
Conversion
.ExplicitNullableWithExplicitNumericUnderlying;
2489
var
tupleConversion = ClassifyExplicitTupleConversion(unwrappedSource, unwrappedDestination, isChecked: isChecked, ref useSiteInfo, forCast);
2497
return
Conversion
.ExplicitNullableWithExplicitEnumerationUnderlying;
2502
return
Conversion
.ExplicitNullableWithPointerToIntegerUnderlying;
2505
return
Conversion
.NoConversion;
Binder\Semantics\Conversions\TypeConversions.cs (5)
36
public override
Conversion
GetMethodGroupDelegateConversion(BoundMethodGroup source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
42
public override
Conversion
GetMethodGroupFunctionPointerConversion(BoundMethodGroup source, FunctionPointerTypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
48
public override
Conversion
GetStackAllocConversion(BoundStackAllocArrayCreation sourceExpression, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
54
protected override
Conversion
GetInterpolatedStringConversion(BoundExpression source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
60
protected override
Conversion
GetCollectionExpressionConversion(BoundUnconvertedCollectionExpression source, TypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
Binder\Semantics\Conversions\UserDefinedConversionAnalysis.cs (8)
26
public readonly
Conversion
SourceConversion;
27
public readonly
Conversion
TargetConversion;
33
Conversion
sourceConversion,
34
Conversion
targetConversion,
51
Conversion
sourceConversion,
52
Conversion
targetConversion,
70
Conversion
sourceConversion,
71
Conversion
targetConversion,
Binder\Semantics\Conversions\UserDefinedExplicitConversions.cs (8)
273
Conversion
fromConversion = EncompassingExplicitConversion(sourceExpression, source, convertsFrom, ref useSiteInfo);
274
Conversion
toConversion = EncompassingExplicitConversion(convertsTo, target, ref useSiteInfo);
325
Conversion
liftedFromConversion = EncompassingExplicitConversion(sourceExpression, source, nullableFrom, ref useSiteInfo);
326
Conversion
liftedToConversion = EncompassingExplicitConversion(nullableTo, target, ref useSiteInfo);
479
private
Conversion
EncompassingExplicitConversion(BoundExpression expr, TypeSymbol a, TypeSymbol b, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
498
var
result = ClassifyStandardConversion(expr, a, b, ref useSiteInfo);
499
return result.IsEnumeration ?
Conversion
.NoConversion : result;
502
private
Conversion
EncompassingExplicitConversion(TypeSymbol a, TypeSymbol b, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (18)
302
Conversion
fromConversion = EncompassingImplicitConversion(sourceExpression, source, convertsFrom, ref useSiteInfo);
303
Conversion
toConversion = allowAnyTarget ?
Conversion
.Identity :
324
toConversion = allowAnyTarget ?
Conversion
.Identity :
350
Conversion
liftedFromConversion = EncompassingImplicitConversion(sourceExpression, source, nullableFrom, ref useSiteInfo);
351
Conversion
liftedToConversion = !allowAnyTarget ?
353
Conversion
.Identity;
594
private
Conversion
EncompassingImplicitConversion(BoundExpression aExpr, TypeSymbol a, TypeSymbol b, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
605
var
result = ClassifyStandardImplicitConversion(aExpr, a, b, ref useSiteInfo);
606
return IsEncompassingImplicitConversionKind(result.Kind) ? result :
Conversion
.NoConversion;
609
private
Conversion
EncompassingImplicitConversion(TypeSymbol a, TypeSymbol b, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
984
protected virtual
Conversion
AnalyzeImplicitUnionConversions(
996
return
Conversion
.NoConversion;
1006
return
Conversion
.NoConversion;
1016
return
Conversion
.CreateUnionConversion(UserDefinedConversionResult.Ambiguous(u));
1019
return
Conversion
.CreateUnionConversion(UserDefinedConversionResult.Valid(u, best));
1034
Conversion
fromConversion = EncompassingImplicitConversion(sourceExpression, source, convertsFrom, ref localUseSiteInfo);
1035
Conversion
targetConversion = EncompassingImplicitConversion(declaringType, target, ref localUseSiteInfo);
Binder\Semantics\Operators\BinaryOperatorAnalysisResult.cs (8)
17
public readonly
Conversion
LeftConversion;
18
public readonly
Conversion
RightConversion;
22
private BinaryOperatorAnalysisResult(OperatorAnalysisResultKind kind, BinaryOperatorSignature signature,
Conversion
leftConversion,
Conversion
rightConversion)
55
public static BinaryOperatorAnalysisResult Applicable(BinaryOperatorSignature signature,
Conversion
leftConversion,
Conversion
rightConversion)
60
public static BinaryOperatorAnalysisResult Inapplicable(BinaryOperatorSignature signature,
Conversion
leftConversion,
Conversion
rightConversion)
Binder\Semantics\Operators\BinaryOperatorEasyOut.cs (2)
314
Conversion
leftConversion = Conversions.FastClassifyConversion(leftType, signature.LeftType);
315
Conversion
rightConversion = Conversions.FastClassifyConversion(rightType, signature.RightType);
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (6)
741
var
convLeft = getOperandConversionForAllowByRefLikeNullCheck(isChecked, left, op.LeftType, ref useSiteInfo);
742
var
convRight = getOperandConversionForAllowByRefLikeNullCheck(isChecked, right, op.RightType, ref useSiteInfo);
790
Conversion
getOperandConversionForAllowByRefLikeNullCheck(bool isChecked, BoundExpression operand, TypeSymbol objectType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
792
return (operand.Type is TypeParameterSymbol { AllowsRefLikeType: true }) ?
Conversion
.Boxing : Conversions.ClassifyConversionFromExpression(operand, objectType, isChecked: isChecked, ref useSiteInfo);
813
var
convLeft = Conversions.ClassifyConversionFromExpression(left, op.LeftType, isChecked: isChecked, ref useSiteInfo);
814
var
convRight = Conversions.ClassifyConversionFromExpression(right, op.RightType, isChecked: isChecked, ref useSiteInfo);
Binder\Semantics\Operators\UnaryOperatorAnalysisResult.cs (4)
16
public readonly
Conversion
Conversion;
19
private UnaryOperatorAnalysisResult(OperatorAnalysisResultKind kind, UnaryOperatorSignature signature,
Conversion
conversion)
39
public static UnaryOperatorAnalysisResult Applicable(UnaryOperatorSignature signature,
Conversion
conversion)
44
public static UnaryOperatorAnalysisResult Inapplicable(UnaryOperatorSignature signature,
Conversion
conversion)
Binder\Semantics\Operators\UnaryOperatorEasyOut.cs (1)
114
Conversion
? conversion = Conversions.FastClassifyConversion(operandType, signature.OperandType);
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (1)
534
var
conversion = Conversions.ClassifyConversionFromExpression(operand, op.OperandType, isChecked: isChecked, ref useSiteInfo);
Binder\Semantics\OverloadResolution\MemberAnalysisResult.cs (10)
26
private readonly ImmutableArray<
Conversion
> _conversionsOpt;
27
public ImmutableArray<
Conversion
> ConversionsOpt
123
ImmutableArray<
Conversion
> conversionsOpt = default,
154
public
Conversion
ConversionForArg(int arg)
158
return
Conversion
.Identity;
323
public static MemberAnalysisResult BadArgumentConversions(ImmutableArray<int> argsToParamsOpt, BitVector badArguments, ImmutableArray<
Conversion
> conversions, TypeWithAnnotations definitionParamsElementTypeOpt, TypeWithAnnotations paramsElementTypeOpt)
378
public static MemberAnalysisResult NormalForm(ImmutableArray<int> argsToParamsOpt, ImmutableArray<
Conversion
> conversions, bool hasAnyRefOmittedArgument)
383
public static MemberAnalysisResult ExpandedForm(ImmutableArray<int> argsToParamsOpt, ImmutableArray<
Conversion
> conversions, bool hasAnyRefOmittedArgument, TypeWithAnnotations definitionParamsElementType, TypeWithAnnotations paramsElementType)
461
static ImmutableArray<
Conversion
> adjustConversions(ImmutableArray<
Conversion
> conversions)
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (1)
3051
Conversion
conversion = conversions.ClassifyImplicitConversionFromTypeWhenNeitherOrBothFunctionTypes(source, destination, ref useSiteInfo);
Binder\Semantics\OverloadResolution\OverloadResolution.cs (37)
2636
var
c1 = m1.Result.ConversionForArg(i);
2637
var
c2 = m2.Result.ConversionForArg(i);
2889
Conversion
conv1,
2892
Conversion
conv2,
2942
private BetterResult BetterConversionFromExpression(BoundExpression node, TypeSymbol t1,
Conversion
conv1, TypeSymbol t2,
Conversion
conv2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool okToDowngradeToNeither)
3051
TypeSymbol t1,
Conversion
conv1,
3052
TypeSymbol t2,
Conversion
conv2,
3085
TypeSymbol t1, CollectionExpressionTypeKind kind1, TypeSymbol elementType1, ImmutableArray<
Conversion
> underlyingElementConversions1,
3086
TypeSymbol t2, CollectionExpressionTypeKind kind2, TypeSymbol elementType2, ImmutableArray<
Conversion
> underlyingElementConversions2,
3137
var
conversionToE1 = underlyingElementConversions1[i];
3138
var
conversionToE2 = underlyingElementConversions2[i];
3465
return BetterConversionTargetCore(null, type1, default(
Conversion
), type2, default(
Conversion
), ref useSiteInfo, out okToDowngradeToNeither, betterConversionTargetRecursionLimit - 1);
3471
Conversion
conv1,
3473
Conversion
conv2,
3483
Conversion
conv1,
3485
Conversion
conv2,
3675
private bool IsMethodGroupConversionIncompatibleWithDelegate(BoundMethodGroup node, NamedTypeSymbol delegateType,
Conversion
conv)
3768
currentResult == BetterConversionTargetCore(null, type1, default(
Conversion
), type2, default(
Conversion
), ref useSiteInfo, out _, BetterConversionTargetRecursionLimit));
4549
ArrayBuilder<
Conversion
> conversions = null;
4554
Conversion
conversion;
4561
conversion =
Conversion
.Identity;
4571
conversion =
Conversion
.NoConversion;
4662
conversions = ArrayBuilder<
Conversion
>.GetInstance(paramCount);
4663
conversions.AddMany(
Conversion
.Identity, argumentPosition);
4674
var conversionsArray = conversions != null ? conversions.ToImmutableAndFree() : default(ImmutableArray<
Conversion
>);
4696
private
Conversion
CheckArgumentForApplicability(
4718
return
Conversion
.NoConversion;
4730
return
Conversion
.ImplicitDynamic;
4741
return
Conversion
.Identity;
4746
var
conversion = forExtensionMethodThisArg ?
4750
Conversion
.ImplicitDynamic);
4757
return
Conversion
.NoConversion;
4765
return
Conversion
.Identity;
4769
return
Conversion
.NoConversion;
Binder\SwitchBinder.cs (2)
258
Conversion
conversion = Conversions.ClassifyConversionFromExpression(caseExpression, SwitchGoverningType, isChecked: CheckOverflowAtRuntime, ref useSiteInfo);
434
Conversion
conversion = binder.Conversions.ClassifyImplicitUserDefinedConversionForV6SwitchGoverningType(switchGoverningType, out resultantGoverningType, ref useSiteInfo);
BoundTree\BoundConversion.cs (1)
179
var
sourceConversion = ConversionGroupOpt.Conversion.BestUnionConversionAnalysis.SourceConversion;
BoundTree\BoundExpressionExtensions.cs (2)
250
public static
Conversion
GetConversion(this BoundExpression boundNode)
259
return
Conversion
.Identity;
BoundTree\BoundNode.cs (3)
443
public static
Conversion
GetConversion(BoundExpression? conversion, BoundValuePlaceholder? placeholder)
448
return
Conversion
.NoConversion;
533
return
Conversion
.Identity;
BoundTree\Constructors.cs (3)
335
public static BoundConversion SynthesizedNonUserDefined(SyntaxNode syntax, BoundExpression operand,
Conversion
conversion, TypeSymbol type, ConstantValue? constantValueOpt = null)
359
Conversion
conversion,
387
Conversion
conversion,
BoundTree\ConversionGroup.cs (2)
19
internal ConversionGroup(
Conversion
conversion, TypeWithAnnotations explicitType = default)
34
internal readonly
Conversion
Conversion;
Compilation\BuiltInOperators.cs (2)
933
var
leftConversion = Conversions.ClassifyConversionFromType(leftType, rightType, isChecked: false, ref useSiteInfo);
939
var
rightConversion = Conversions.ClassifyConversionFromType(rightType, leftType, isChecked: false, ref useSiteInfo);
Compilation\CSharpCompilation.cs (6)
2392
/// <returns>A <see cref="
Conversion
"/> that classifies the conversion from the
2394
public
Conversion
ClassifyConversion(ITypeSymbol source, ITypeSymbol destination)
2440
return
Conversion
.NoConversion;
2451
return
Conversion
.NullLiteral;
2454
return
Conversion
.NoConversion;
2457
Conversion
result = ClassifyConversion(sourceType, destination);
Compilation\CSharpSemanticModel.cs (23)
982
return new CSharpTypeInfo(declarationTypeSymbol, declarationTypeSymbol, nullabilityInfo, nullabilityInfo,
Conversion
.Identity);
986
return new CSharpTypeInfo(declarationInfo.Type, declarationInfo.Type, declarationInfo.Nullability, declarationInfo.Nullability,
Conversion
.Identity);
1024
public
Conversion
GetConversion(SyntaxNode expression, CancellationToken cancellationToken = default(CancellationToken))
1085
public
Conversion
GetSpeculativeConversion(int position, ExpressionSyntax expression, SpeculativeBindingOption bindingOption)
2045
return new CSharpTypeInfo(member.Type, member.Type, nullability: default, convertedNullability: default,
Conversion
.Identity);
2099
Conversion
conversion;
2148
conversion = convertedSwitchConversion.IsValid ? convertedSwitchConversion :
Conversion
.NoConversion;
2155
conversion =
Conversion
.Identity;
2166
conversion =
Conversion
.MakeConditionalExpression(ImmutableArray<
Conversion
>.Empty);
2173
conversion =
Conversion
.Identity;
2196
conversion =
Conversion
.Identity;
2204
conversion =
Conversion
.Identity;
2249
conversion =
Conversion
.Identity;
2268
conversion =
Conversion
.Identity;
2366
return new CSharpTypeInfo(type, type, default, default,
Conversion
.Identity);
2819
public abstract
Conversion
ClassifyConversion(ExpressionSyntax expression, ITypeSymbol destination, bool isExplicitInSource = false);
2837
public
Conversion
ClassifyConversion(int position, ExpressionSyntax expression, ITypeSymbol destination, bool isExplicitInSource = false)
2849
return
Conversion
.NoConversion;
2875
return
Conversion
.NoConversion;
2890
internal abstract
Conversion
ClassifyConversionForCast(ExpressionSyntax expression, TypeSymbol destination);
2906
internal
Conversion
ClassifyConversionForCast(int position, ExpressionSyntax expression, TypeSymbol destination)
2927
return
Conversion
.NoConversion;
Compilation\DeconstructionInfo.cs (4)
29
private readonly
Conversion
_conversion;
47
public
Conversion
? Conversion
53
: (
Conversion
?)_conversion;
77
internal DeconstructionInfo(
Conversion
conversion)
Compilation\ForEachStatementInfo.cs (4)
65
public
Conversion
ElementConversion { get; }
70
public
Conversion
CurrentConversion { get; }
83
Conversion
elementConversion,
84
Conversion
currentConversion)
Compilation\MemberSemanticModel.cs (5)
430
public override
Conversion
ClassifyConversion(
445
return
Conversion
.NoConversion;
479
return
Conversion
.NoConversion;
487
internal override
Conversion
ClassifyConversionForCast(
503
return
Conversion
.NoConversion;
Compilation\SpeculativeSemanticModelWithMemberModel.cs (2)
220
public override
Conversion
ClassifyConversion(
228
internal override
Conversion
ClassifyConversionForCast(
Compilation\SyntaxTreeSemanticModel.cs (5)
520
public override
Conversion
ClassifyConversion(ExpressionSyntax expression, ITypeSymbol destination, bool isExplicitInSource = false)
527
return
Conversion
.NoConversion;
552
return
Conversion
.NoConversion;
558
internal override
Conversion
ClassifyConversionForCast(ExpressionSyntax expression, TypeSymbol destination)
573
return
Conversion
.NoConversion;
Compilation\TypeInfo.cs (3)
15
internal static readonly CSharpTypeInfo None = new CSharpTypeInfo(type: null, convertedType: null, nullability: default, convertedNullability: default,
Conversion
.Identity);
39
public readonly
Conversion
ImplicitConversion;
41
internal CSharpTypeInfo(TypeSymbol type, TypeSymbol convertedType, NullabilityInfo nullability, NullabilityInfo convertedNullability,
Conversion
implicitConversion)
Compiler\AnonymousTypeMethodBodySynthesizer.cs (2)
125
Conversion
c = F.ClassifyEmitConversion(boundLocal, manager.System_Object);
277
Conversion
.ImplicitReference);
Compiler\MethodBodySynthesizer.cs (4)
128
Conversion
.ExplicitReference,
158
Conversion
.ExplicitReference,
405
conversion:
Conversion
.ExplicitReference,
470
conversion:
Conversion
.ExplicitReference,
Compiler\MethodBodySynthesizer.Lowered.cs (2)
102
Conversion
.ImplicitNumeric),
191
Conversion
.ImplicitNumeric),
CSharpExtensions.cs (23)
438
public static
Conversion
ClassifyConversion(this Compilation? compilation, ITypeSymbol source, ITypeSymbol destination)
447
return
Conversion
.NoConversion;
764
public static
Conversion
GetConversion(this SemanticModel? semanticModel, SyntaxNode expression, CancellationToken cancellationToken = default(CancellationToken))
773
return
Conversion
.NoConversion;
778
/// Gets the underlying <see cref="
Conversion
"/> information from this <see cref="IConversionOperation"/>. This
782
/// <returns>The underlying <see cref="
Conversion
"/>.</returns>
784
public static
Conversion
GetConversion(this IConversionOperation conversionExpression)
793
return (
Conversion
)((ConversionOperation)conversionExpression).ConversionConvertible;
804
/// Gets the underlying <see cref="
Conversion
"/> information from this <see cref="ICompoundAssignmentOperation"/>. This
810
public static
Conversion
GetInConversion(this ICompoundAssignmentOperation compoundAssignment)
819
return (
Conversion
)((CompoundAssignmentOperation)compoundAssignment).InConversionConvertible;
830
/// Gets the underlying <see cref="
Conversion
"/> information from this <see cref="ICompoundAssignmentOperation"/>. This
836
public static
Conversion
GetOutConversion(this ICompoundAssignmentOperation compoundAssignment)
845
return (
Conversion
)((CompoundAssignmentOperation)compoundAssignment).OutConversionConvertible;
856
/// Gets the underlying element <see cref="
Conversion
"/> information from this <see cref="ISpreadOperation"/>.
861
public static
Conversion
GetElementConversion(this ISpreadOperation spread)
870
return (
Conversion
)((SpreadOperation)spread).ElementConversionConvertible;
878
public static
Conversion
GetSpeculativeConversion(this SemanticModel? semanticModel, int position, ExpressionSyntax expression, SpeculativeBindingOption bindingOption)
887
return
Conversion
.NoConversion;
1330
public static
Conversion
ClassifyConversion(this SemanticModel? semanticModel, ExpressionSyntax expression, ITypeSymbol destination, bool isExplicitInSource = false)
1341
return
Conversion
.NoConversion;
1350
public static
Conversion
ClassifyConversion(this SemanticModel? semanticModel, int position, ExpressionSyntax expression, ITypeSymbol destination, bool isExplicitInSource = false)
1359
return
Conversion
.NoConversion;
FlowAnalysis\AbstractFlowPass.cs (2)
3058
BoundConversion { Conversion:
Conversion
conversion, Operand: BoundConditionalAccess ca } when CanPropagateStateWhenNotNull(conversion) => ca,
3080
protected static bool CanPropagateStateWhenNotNull(
Conversion
conversion)
FlowAnalysis\NullableWalker.cs (71)
272
/// The delegate is invoked by <see cref="VisitConversion(BoundConversion, BoundExpression,
Conversion
, TypeWithAnnotations, TypeWithState, bool, bool, bool, AssignmentKind, ParameterSymbol, bool, bool, bool, bool, Optional<LocalState>,bool, int, Location, ArrayBuilder<VisitResult>)"/>.
2900
var
conversion = conversionsWithoutNullability.ClassifyImplicitConversionFromType(actualType, targetType, ref discardedUseSiteInfo);
4124
Conversion
.Identity, // as only a nullable reinference is being done we expect an identity conversion
5137
var conversions = ArrayBuilder<
Conversion
>.GetInstance(n);
5143
(BoundExpression expressionNoConversion,
Conversion
conversion) = RemoveConversion(expression, includeExplicitConversions: false);
5186
_ = VisitConversion(conversionOpt: null, conversionOperand: expressionsNoConversions[i],
Conversion
.Identity, targetTypeWithNullability: inferredType, operandType: expressionTypes[i],
5288
Conversion
conversion = conversionsWithoutNullability.ClassifyConversionFromExpression(placeholder, bestType, isChecked: returns[i].isChecked, ref discardedUseSiteInfo);
5483
leftConversion =
Conversion
.Identity;
5503
leftConversion =
Conversion
.Identity;
5605
Conversion
leftConversion,
5608
Conversion
rightConversion,
5623
Conversion
leftConversion,
5627
Conversion
rightConversion,
5660
Conversion
conversion,
5761
var
conversion = _conversions.ClassifyBuiltInConversion(derivedType, baseType, isChecked: false, ref discardedUseSiteInfo);
5771
BoundExpression expr, BoundExpression operand,
Conversion
conversion, ParameterSymbol parameter, TypeWithState operandType, bool isLifted,
5795
private void VisitBinaryOperatorOperandConversionAndPostConditions(BoundExpression expr, BoundExpression operand,
Conversion
conversion, ParameterSymbol parameter, TypeWithState operandType, bool isLifted)
5810
Conversion
leftConversion,
6256
var
conversion = GenerateConversionForConditionalOperator(node.LeftOperand, leftType, rightType, reportMismatch: true, isChecked: node.Checked);
6530
(var consequence,
var
consequenceConversion, consequenceRValue) = visitConditionalOperand(consequenceState, originalConsequence);
6535
(var alternative,
var
alternativeConversion, alternativeRValue) = visitConditionalOperand(alternativeState, originalAlternative);
6610
TypeWithState consequenceRValue, TypeWithState alternativeRValue, BoundExpression consequence,
Conversion
consequenceConversion, bool consequenceEndReachable,
6611
BoundExpression alternative,
Conversion
alternativeConversion, bool alternativeEndReachable, TypeWithAnnotations resultTypeWithAnnotations, bool wasTargetTyped)
6661
Conversion
consequenceConversion,
6664
Conversion
alternativeConversion,
6677
(BoundExpression,
Conversion
, TypeWithState) visitConditionalOperand(LocalState state, BoundExpression operand)
6679
Conversion
conversion;
6710
Conversion
conversion,
7585
(ImmutableArray<BoundExpression> argumentsNoConversions, ImmutableArray<
Conversion
> conversions) = RemoveArgumentConversions(arguments, refKindsOpt);
7601
ImmutableArray<
Conversion
> conversions,
7704
conversions.IsDefault || i >= conversions.Length ?
Conversion
.Identity : conversions[i],
7794
ImmutableArray<
Conversion
> conversions,
8194
Conversion
conversion,
8603
private (ImmutableArray<BoundExpression> arguments, ImmutableArray<
Conversion
> conversions) RemoveArgumentConversions(
8608
var conversions = default(ImmutableArray<
Conversion
>);
8612
var conversionsBuilder = ArrayBuilder<
Conversion
>.GetInstance(n);
8618
var
conversion =
Conversion
.Identity;
9005
private static (BoundExpression expression,
Conversion
conversion) RemoveConversion(BoundExpression expr, bool includeExplicitConversions)
9024
return (expr,
Conversion
.Identity);
9039
return (expr, group?.Conversion ??
Conversion
.Identity);
9043
private
Conversion
GenerateConversionForConditionalOperator(BoundExpression sourceExpression, TypeSymbol? sourceType, TypeSymbol destinationType, bool reportMismatch, bool isChecked)
9045
var
conversion = GenerateConversion(_conversions, sourceExpression, sourceType, destinationType, fromExplicitCast: false, extensionMethodThisArgument: false, isChecked: isChecked);
9054
private
Conversion
GenerateConversion(Conversions conversions, BoundExpression? sourceExpression, TypeSymbol? sourceType, TypeSymbol destinationType, bool fromExplicitCast, bool extensionMethodThisArgument, bool isChecked)
9238
(BoundExpression operand,
Conversion
conversion) = RemoveConversion(node, includeExplicitConversions: true);
9293
(BoundExpression operand,
Conversion
conversion) = RemoveConversion(expr, includeExplicitConversions: false);
9304
Conversion
conversion, TypeWithState operandType,
9336
Func<TypeWithAnnotations, TypeWithState> visitConversionAsContinuation(BoundExpression expr, bool useLegacyWarnings, bool trackMembers, AssignmentKind assignmentKind, BoundExpression operand,
Conversion
conversion, TypeWithState operandType)
9489
Conversion
conversion,
9518
void trackConvertedValue(FieldSymbol targetField,
Conversion
conversion, FieldSymbol valueField)
9801
Conversion
conversion,
9835
conversion =
Conversion
.MakeNullableConversion(ConversionKind.ImplicitNullable,
Conversion
.Identity);
10160
Conversion
generated = GenerateConversion(_conversions, conversionOperand, operandType.Type, targetType, fromExplicitCast, extensionMethodThisArgument, isChecked: conversionOpt?.Checked ?? false);
10169
Conversion
generated = GenerateConversion(_conversions, conversionOperand, operandType.Type, targetType, fromExplicitCast, extensionMethodThisArgument, isChecked: conversionOpt?.Checked ?? false);
10421
Conversion
conversion,
10573
Conversion
conversion,
10822
var
conversion = _conversions.ClassifyStandardConversion(operandType.Type, targetType.Type, ref discardedUseSiteInfo);
11106
CheckExtensionMethodThisNullability(receiverOpt,
Conversion
.Identity, receiverParameter, receiverType);
11418
private void VisitDeconstructionArguments(ArrayBuilder<DeconstructionVariable> variables,
Conversion
conversion, BoundExpression right, TypeWithState? rightResultOpt = null)
11432
private void VisitDeconstructMethodArguments(ArrayBuilder<DeconstructionVariable> variables,
Conversion
conversion, BoundExpression right, TypeWithState? rightResultOpt)
11489
var
argConversion = RemoveConversion(invocation.Arguments[0], includeExplicitConversions: false).conversion;
11500
var
underlyingConversion = BoundNode.GetConversion(placeholderConversion, placeholder);
11542
var
underlyingConversion = BoundNode.GetConversion(placeholderConversion, placeholder);
12366
Conversion
conversion,
12624
Conversion
conversion = BoundNode.GetConversion(node.ElementConversion, node.ElementPlaceholder);
12887
Conversion
leftConversion =
Conversion
.Identity;
12925
leftConversion =
Conversion
.Identity;
12955
void afterLeftChildOfBoundUserDefinedConditionalLogicalOperatorHasBeenVisited(BoundUserDefinedConditionalLogicalOperator binary, BoundExpression leftOperand,
Conversion
leftConversion)
13445
private void CheckExtensionMethodThisNullability(BoundExpression expr,
Conversion
conversion, ParameterSymbol parameter, TypeWithState result)
FlowAnalysis\NullableWalker_Patterns.cs (4)
1015
var conversions = ArrayBuilder<
Conversion
>.GetInstance(numSwitchArms);
1033
(BoundExpression expression,
Conversion
conversion) = RemoveConversion(arm.Value, includeExplicitConversions: false);
1090
ArrayBuilder<
Conversion
> conversions,
1135
ArrayBuilder<
Conversion
> conversions,
Generated\BoundNodes.xml.Generated.cs (3)
3003
public BoundConversion(SyntaxNode syntax, BoundExpression operand,
Conversion
conversion, bool isBaseConversion, bool @checked, bool explicitCastInCode, ConstantValue? constantValueOpt, ConversionGroup? conversionGroupOpt, InConversionGroupFlags inConversionGroupFlags, TypeSymbol type, bool hasErrors = false)
3026
public
Conversion
Conversion { get; }
3037
public BoundConversion Update(BoundExpression operand,
Conversion
conversion, bool isBaseConversion, bool @checked, bool explicitCastInCode, ConstantValue? constantValueOpt, ConversionGroup? conversionGroupOpt, InConversionGroupFlags inConversionGroupFlags, TypeSymbol type)
Lowering\AsyncRewriter\AsyncExceptionHandlerRewriter.cs (2)
619
Conversion
c = _F.ClassifyEmitConversion(carchTempRef, pendingCaughtExceptionType);
741
Conversion
c = _F.ClassifyEmitConversion(pendingExceptionRef, rewrittenSourceType);
Lowering\AsyncRewriter\AsyncMethodToStateMachineRewriter.cs (3)
495
Conversion
c = F.ClassifyEmitConversion(awaiterTempRef, awaiterFieldType);
537
Conversion
c = F.ClassifyEmitConversion(awaiterFieldRef, awaiterTemp.Type);
606
F.Convert(notifyCompletionTemp.Type, F.Local(awaiterTemp),
Conversion
.ExplicitReference)),
Lowering\BoundTreeToDifferentEnclosingContextRewriter.cs (1)
171
var
conversion = node.Conversion;
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (8)
177
Conversion
c = _bound.ClassifyEmitConversion(result, ExpressionType);
776
Conversion
c = _bound.ClassifyEmitConversion(receiver, _objectType);
938
Conversion
c = _bound.ClassifyEmitConversion(fieldInfo, MemberInfoType);
948
Conversion
c = _bound.ClassifyEmitConversion(fieldInfo, MemberInfoType);
965
Conversion
c = _bound.ClassifyEmitConversion(fieldInfo, MemberInfoType);
975
Conversion
c = _bound.ClassifyEmitConversion(fieldInfo, MemberInfoType);
1112
Conversion
c = _bound.ClassifyEmitConversion(args, iEnumerableType);
1256
Conversion
c = _bound.ClassifyEmitConversion(node, _objectType);
Lowering\Instrumentation\LocalStateTracingInstrumenter.cs (1)
489
Conversion
c = _factory.ClassifyEmitConversion(value, parameter.Type);
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (4)
211
void visitConversion(
Conversion
conversion)
225
foreach (
var
underlying in conversion.UnderlyingConversions)
793
Conversion
c = _factory.ClassifyEmitConversion(input, int64Type);
803
Conversion
c = _factory.ClassifyEmitConversion(input, uint64Type);
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (6)
221
input = _factory.Convert(inputType, input,
Conversion
.Identity);
228
Conversion
conversion = _factory.Compilation.Conversions.ClassifyBuiltInConversion(inputType, output.Type, isChecked: false, ref useSiteInfo);
407
_factory.Convert(operandType, rewrittenExpr,
Conversion
.PointerToVoid),
408
_factory.Convert(operandType, new BoundLiteral(syntax, ConstantValue.Null, objectType),
Conversion
.NullToPointer),
454
Conversion
c = _factory.ClassifyEmitConversion(input, comparisonType);
519
_factory.Compilation.Conversions.ClassifyBuiltInConversion(test.Input.Type, typeEvaluation2.Type, isChecked: false, ref useSiteInfo) is
Conversion
conv &&
Lowering\LocalRewriter\LocalRewriter_AsOperator.cs (1)
49
var
conversion = BoundNode.GetConversion(operandConversion, operandPlaceholder);
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (11)
746
var
conversion = _compilation.Conversions.ClassifyConversionFromExpression(loweredLeft, boolean, isChecked: false, ref useSiteInfo);
2052
MakeConversionNode(syntax, call,
Conversion
.ExplicitReference, type, @checked: false) :
2123
rewrittenExpr = MakeConversionNode(syntax, rewrittenExpr,
Conversion
.Boxing, objectType, @checked: false);
2389
: _factory.Convert(_factory.SpecialType(destinationType), numericOperand,
Conversion
.IntegerToPointer);
2406
numericOperand = _factory.Convert(nativeIntType, numericOperand,
Conversion
.IntegerToPointer, isChecked);
2418
numericOperand = _factory.Convert(longType, numericOperand,
Conversion
.ExplicitNumeric, isChecked);
2419
sizeOfExpression = _factory.Convert(longType, sizeOfExpression,
Conversion
.ExplicitNumeric, isChecked);
2431
sizeOfExpression = _factory.Convert(longType, sizeOfExpression,
Conversion
.ExplicitNumeric, isChecked);
2443
sizeOfExpression = _factory.Convert(ulongType, sizeOfExpression,
Conversion
.ExplicitNumeric, isChecked);
2462
: _factory.Convert(convertedMultiplicationResultType, multiplication,
Conversion
.IntegerToPointer); // NOTE: for some reason, dev10 doesn't check this conversion.
2492
Conversion
.PointerToInteger);
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (5)
29
private BoundExpression RewriteCollectionExpressionConversion(
Conversion
conversion, BoundCollectionExpression node)
206
Conversion
conversion;
560
Conversion
c = _factory.ClassifyEmitConversion(arrayOrList, collectionType);
763
var
spreadElementConversion = expressionStatement.Expression is BoundConversion { Conversion: var actualConversion } ? actualConversion :
Conversion
.Identity;
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
901
Conversion
.Boxing,
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (44)
264
Conversion
conversion,
283
Conversion
.Identity,
300
Conversion
conversion,
427
conversion =
Conversion
.ExplicitNumeric;
478
var
outerConversion =
Conversion
.ImplicitNullableWithIdentityUnderlying;
644
Conversion
c = _factory.ClassifyEmitConversion(rewrittenOperand, parameterType);
808
Conversion
conversion = MakeConversion(rewrittenOperand, rewrittenType, @checked: @checked, _compilation, _diagnostics, acceptFailingConversion);
824
private static
Conversion
MakeConversion(
834
Conversion
conversion = compilation.Conversions.ClassifyConversionFromType(rewrittenOperand.Type, rewrittenType, isChecked: @checked, ref useSiteInfo);
858
Conversion
conversion,
1018
Conversion
conversion,
1106
Conversion
conversion,
1162
Conversion
conversion,
1187
rewrittenOperand = BoundConversion.SynthesizedNonUserDefined(syntax, rewrittenOperand,
Conversion
.ImplicitEnumeration, rewrittenOperandType);
1200
var
userDefinedConversion = new Conversion(conversionKind, method, false);
1215
Conversion
conversion,
1277
Conversion
conversion,
1309
Conversion
conversion,
1349
Conversion
conversion,
1411
Conversion
conversion,
1467
Conversion
conversion,
1474
Conversion
conv = TryMakeConversion(syntax, conversion, rewrittenOperand.Type, rewrittenType, @checked: @checked);
1557
Conversion
conversion)
1596
Conversion
conversion,
1852
var
conversion = new Conversion(conversionKind, method, isExtensionMethod: false);
1869
private
Conversion
TryMakeConversion(SyntaxNode syntax,
Conversion
conversion, TypeSymbol fromType, TypeSymbol toType, bool @checked)
1879
Conversion
fromConversion = TryMakeConversion(syntax, conversion.UserDefinedFromConversion, fromType, meth.Parameters[0].Type, @checked: @checked);
1882
return
Conversion
.NoConversion;
1885
Conversion
toConversion = TryMakeConversion(syntax, conversion.UserDefinedToConversion, meth.ReturnType, toType, @checked: @checked);
1888
return
Conversion
.NoConversion;
1900
var
resultConversion = new Conversion(result, conversion.IsImplicit);
1919
return
Conversion
.NoConversion;
1933
return
Conversion
.NoConversion;
1950
return
Conversion
.NoConversion;
1963
return
Conversion
.NoConversion;
1977
private
Conversion
TryMakeConversion(SyntaxNode syntax, TypeSymbol fromType, TypeSymbol toType, bool @checked)
1980
var
result = TryMakeConversion(syntax, _compilation.Conversions.ClassifyConversionFromType(fromType, toType, isChecked: @checked, ref useSiteInfo), fromType, toType, @checked: @checked);
1988
private
Conversion
TryMakeUserDefinedConversion(SyntaxNode syntax, MethodSymbol meth, TypeSymbol fromType, TypeSymbol toType, bool @checked, bool isImplicit)
1992
Conversion
fromConversion = TryMakeConversion(syntax, fromType, meth.Parameters[0].Type, @checked: @checked);
1995
return
Conversion
.NoConversion;
1998
Conversion
toConversion = TryMakeConversion(syntax, meth.ReturnType, toType, @checked: @checked);
2001
return
Conversion
.NoConversion;
Lowering\LocalRewriter\LocalRewriter_DeconstructionAssignmentOperator.cs (4)
37
private BoundExpression? RewriteDeconstruction(BoundTupleExpression left,
Conversion
conversion, BoundExpression right, bool isUsed)
57
Conversion
conversion,
213
Conversion
conversion,
277
private ImmutableArray<BoundExpression> GetRightParts(BoundExpression right,
Conversion
conversion,
Lowering\LocalRewriter\LocalRewriter_Event.cs (2)
312
Conversion
c0 = _factory.ClassifyEmitConversion(rewrittenReceiver, parameters0Type);
318
Conversion
c1 = _factory.ClassifyEmitConversion(rewrittenArgument, parameters1Type);
Lowering\LocalRewriter\LocalRewriter_FixedStatement.cs (1)
467
Conversion
.PinnedObjectToPointer);
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (5)
363
Conversion
receiverConversion = enumeratorType.IsStructType() ?
364
Conversion
.Boxing :
365
Conversion
.ImplicitReference;
505
private BoundExpression ConvertReceiverForInvocation(CSharpSyntaxNode syntax, BoundExpression receiver, MethodSymbol method,
Conversion
receiverConversion, TypeSymbol convertedReceiverType)
1224
private static BoundExpression GetUnconvertedCollectionExpression(BoundForEachStatement node, out
Conversion
collectionConversion)
Lowering\LocalRewriter\LocalRewriter_LockStatement.cs (1)
93
Conversion
.Boxing,
Lowering\LocalRewriter\LocalRewriter_ObjectCreationExpression.cs (2)
190
Conversion
c = _factory.ClassifyEmitConversion(clone, type);
422
Conversion
c = _factory.ClassifyEmitConversion(instance, node.Type);
Lowering\LocalRewriter\LocalRewriter_StackAlloc.cs (3)
134
return _factory.Convert(uintPtrType, _factory.Literal((uint)folded),
Conversion
.IntegerToPointer);
139
BoundExpression convertedCount = _factory.Convert(uintType, countExpression,
Conversion
.ExplicitNumeric);
140
convertedCount = _factory.Convert(uintPtrType, convertedCount,
Conversion
.IntegerToPointer);
Lowering\LocalRewriter\LocalRewriter_SwitchExpression.cs (3)
128
if (tryGetImplicitConversion(savedInputExpression, objectType) is
Conversion
c &&
155
Conversion
? tryGetImplicitConversion(BoundExpression expression, TypeSymbol type)
158
Conversion
c = _localRewriter._compilation.Conversions.ClassifyConversionFromExpression(expression, type, isChecked: false, ref discardedUseSiteInfo);
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (5)
68
var
elementConversion = underlyingConversions[i];
214
var
conversion =
Conversion
.MakeNullableConversion(ConversionKind.ImplicitNullable,
Conversion
.Identity);
479
BoundExpression MakeBoundConversion(BoundExpression expr,
Conversion
conversion, TypeWithAnnotations type, BoundConversion enclosing)
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (1)
162
return MakeConversionNode(newNode.Syntax, newNode,
Conversion
.ExplicitEnumeration, type, @checked: false);
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (2)
171
Conversion
.ImplicitDynamic,
247
Conversion
.ImplicitDynamic,
Lowering\SyntheticBoundNodeFactory.cs (10)
574
var
conversion = Compilation.Conversions.ClassifyConversionFromType(expression.Type, CurrentFunction.ReturnType, isChecked: false, ref useSiteInfo);
663
Conversion
c = Compilation.Conversions.ClassifyBuiltInConversion(operand.Type, type, isChecked: false, ref discardedUseSiteInfo);
695
Conversion
c;
698
c =
Conversion
.Boxing;
1273
? BoundConversion.SynthesizedNonUserDefined(syntax, nullLiteral,
Conversion
.NullToPointer, type)
1503
/// and then calls <see cref="Convert(TypeSymbol, BoundExpression,
Conversion
, bool, bool)"/>.
1507
public
Conversion
ClassifyEmitConversion(BoundExpression arg, TypeSymbol destination)
1510
Conversion
c = Compilation.Conversions.ClassifyConversionFromExpression(arg, destination, isChecked: false, ref useSiteInfo);
1520
public BoundExpression Convert(TypeSymbol type, BoundExpression arg,
Conversion
conversion, bool isChecked = false, bool explicitCastInCode = true)
1795
rewrittenExpr = Convert(objectType, rewrittenExpr,
Conversion
.Boxing);
Operations\CSharpOperationFactory.cs (8)
1118
Conversion
conversion = boundConversion.Conversion;
1183
Conversion
conversion = BoundNode.GetConversion(boundAsOperator.OperandConversion, boundAsOperator.OperandPlaceholder);
1349
var
elementConversion = BoundNode.GetConversion(iteratorItem, element.ElementPlaceholder);
1435
Conversion
inConversion = BoundNode.GetConversion(boundCompoundAssignmentOperator.LeftConversion, boundCompoundAssignmentOperator.LeftPlaceholder);
1436
Conversion
outConversion = BoundNode.GetConversion(boundCompoundAssignmentOperator.FinalConversion, boundCompoundAssignmentOperator.FinalPlaceholder);
1659
Conversion
valueConversion = BoundNode.GetConversion(boundNullCoalescingOperator.LeftConversion, boundNullCoalescingOperator.LeftPlaceholder);
1664
valueConversion =
Conversion
.Identity;
1972
inlineArrayConversion: enumeratorInfoOpt.InlineArraySpanType is WellKnownType.Unknown ? null :
Conversion
.InlineArray,
Symbols\ReducedExtensionMethodSymbol.cs (1)
53
var
conversion = conversions.ConvertExtensionMethodThisArg(method.Parameters[0].Type, receiverType, ref useSiteInfo, isMethodGroupConversion: false);
Symbols\Source\ParameterHelpers.cs (1)
948
Conversion
conversion = binder.Conversions.ClassifyImplicitConversionFromExpression(defaultExpression, parameterType, ref useSiteInfo);
Symbols\Source\SourceMemberContainerSymbol.cs (1)
5006
Conversion
c = compilation.Conversions.ClassifyImplicitConversionFromType(parameterType.Type, compilation.GetSpecialType(SpecialType.System_Object), ref useSiteInfo);
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (1)
1207
Conversion
conversion = conversions.ConvertExtensionMethodThisArg(parameterType: result.ContainingType.ExtensionParameter.Type, receiverType, ref discardedUseSiteInfo, isMethodGroupConversion: false);
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListEnumeratorTypeSymbol.cs (1)
62
Conversion
c = f.ClassifyEmitConversion(itemFieldReference, method.ReturnType);
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListTypeSymbol.cs (7)
489
Conversion
c = f.ClassifyEmitConversion(fieldReference, interfaceType);
545
Conversion
c = f.ClassifyEmitConversion(thisRef, returnType);
588
Conversion
c = f.ClassifyEmitConversion(fieldReference, interfaceType);
630
Conversion
c = f.ClassifyEmitConversion(fieldReference, objectType);
654
Conversion
c = f.ClassifyEmitConversion(fieldReference, interfaceType);
738
Conversion
c = f.ClassifyEmitConversion(fieldReference, interfaceType);
792
Conversion
c = f.ClassifyEmitConversion(parameterReference, fieldType);
Symbols\Synthesized\Records\SynthesizedRecordBaseEquals.cs (1)
67
Conversion
c = F.ClassifyEmitConversion(parameterRef, objectType);
Symbols\Synthesized\Records\SynthesizedRecordEquals.cs (1)
124
Conversion
c = F.ClassifyEmitConversion(other, baseType);
Symbols\Synthesized\Records\SynthesizedRecordObjEquals.cs (1)
63
Conversion
c = F.ClassifyEmitConversion(paramAccess, ContainingType);
Symbols\Synthesized\Records\SynthesizedRecordPrintMembers.cs (1)
220
Conversion
c = F.ClassifyEmitConversion(value, objectType);
Symbols\Synthesized\SynthesizedUnionCtor.cs (2)
49
Conversion
c = F.Compilation.Conversions.ClassifyImplicitConversionFromType(parameter.Type, valueProperty.Type, ref useSiteInfo);
66
public static bool IsValidParameterTypeConversion(
Conversion
c)
Microsoft.CodeAnalysis.CSharp.CodeStyle (47)
src\roslyn\src\Analyzers\CSharp\Analyzers\HiddenExplicitCast\CSharpHiddenExplicitCastDiagnosticAnalyzer.cs (2)
90
var
outerConversion = outerConversionOperation.GetConversion();
103
var
innerConversion = innerConversionOperation.GetConversion();
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
364
var
conversion = conversionOperation.GetConversion();
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryLambdaExpression\CSharpRemoveUnnecessaryLambdaExpressionDiagnosticAnalyzer.cs (1)
275
var
conversion = compilation.ClassifyConversion(type1, type2);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCoalesceExpression\UseCoalesceExpressionHelpers.cs (1)
14
var
conversion = semanticModel.GetConversion(conditional, cancellationToken);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCollectionExpression\UseCollectionExpressionHelpers.cs (2)
166
var
conversion = speculationAnalyzer.SpeculativeSemanticModel.GetConversion(speculationAnalyzer.ReplacedExpression, cancellationToken);
292
var
conversion = compilation.ClassifyConversion(type, convertedType);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseDeconstruction\CSharpUseDeconstructionDiagnosticAnalyzer.cs (3)
108
var
initializerConversion = semanticModel.GetConversion(initializerValue, cancellationToken);
127
var
elementConversion = semanticModel.GetForEachStatementInfo(forEachStatement).ElementConversion;
139
Conversion
conversion,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ConversionExtensions.cs (2)
11
public static bool IsIdentityOrImplicitReference(this
Conversion
conversion)
14
public static bool IsImplicitUserDefinedConversion(this
Conversion
conversion)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (19)
233
var
conversion = conversionOperation.GetConversion();
297
var
originalConversion = originalConversionOperation.GetConversion();
407
var
originalParentConversion = originalParentConversionOperation.GetConversion();
711
var
conversion = semanticModel.GetConversion(castedExpressionNode, cancellationToken);
766
var
innerOriginalConversion = originalConversionOperation.GetConversion();
777
var
outerOriginalConversion = outerOriginalConversionOperation.GetConversion();
804
var
originalConversion = originalConversionOperation.GetConversion();
830
var
rewrittenBitwiseNotConversion = rewrittenBitwiseNotConversionOperation.GetConversion();
937
var
originalConversion = conversionOperation.GetConversion();
1022
var
outerConversion = rewrittenSemanticModel.GetConversion(rewrittenConditionalOrSwitchExpression, cancellationToken);
1156
Conversion
conversion,
1215
var
conversion = semanticModel.GetConversion(castedExpressionNode, cancellationToken);
1243
var
parentConversion = semanticModel.GetConversion(castNode, cancellationToken);
1291
var
conversion = semanticModel.GetConversion(current, cancellationToken);
1401
var
oldConversion = oldForEachInfo.ElementConversion;
1402
var
newConversion = newForEachInfo.ElementConversion;
1659
private static (ITypeSymbol? rewrittenConvertedType,
Conversion
rewrittenConversion) GetRewrittenInfo(
1662
Conversion
originalConversion, ITypeSymbol originalConvertedType,
1678
var
rewrittenConversion = rewrittenSemanticModel.GetConversion(rewrittenExpression, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (15)
38
Conversion
>
409
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(originalOtherPartOfConditional, originalExpressionType);
410
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newOtherPartOfConditional, newExpressionType);
444
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(oldSwitchStatement.Expression, originalCaseType);
445
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newSwitchStatement.Expression, newCaseType);
547
var
originalConvertedTypeConversion = this.OriginalSemanticModel.ClassifyConversion(previousOriginalNode, originalExpressionTypeInfo.ConvertedType);
548
var
newExpressionConvertedTypeConversion = this.SpeculativeSemanticModel.ClassifyConversion(previousReplacedNode, newExpressionTypeInfo.ConvertedType);
710
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(originalIsOrAsExpression.Left, originalConvertedType, isExplicitInSource: true);
711
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newIsOrAsExpression.Left, newConvertedType, isExplicitInSource: true);
815
var
originalConversion = originalModel.GetConversion(originalExpression);
816
var
newConversion = newModel.GetConversion(newExpression);
853
private bool ConversionsAreCompatible(
Conversion
originalConversion,
Conversion
newConversion)
934
protected override
Conversion
ClassifyConversion(SemanticModel model, ExpressionSyntax expression, ITypeSymbol targetType)
937
protected override
Conversion
ClassifyConversion(SemanticModel model, ITypeSymbol originalType, ITypeSymbol targetType)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\TypeStyle\CSharpUseImplicitTypeHelper.cs (1)
292
var
conversion = semanticModel.GetConversion(expression, cancellationToken);
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (3)
src\roslyn\src\Analyzers\CSharp\CodeFixes\AddExplicitCast\CSharpAddExplicitCastCodeFixProvider.cs (1)
102
var
conversion = semanticModel.Compilation.ClassifyConversion(rightType, leftType);
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertSwitchStatementToExpression\ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs (1)
197
var
conversion = _semanticModel.Compilation.ClassifyConversion(typeInfo.Type, typeInfo.ConvertedType);
src\roslyn\src\Analyzers\CSharp\CodeFixes\GenerateParameterizedMember\CSharpGenerateParameterizedMemberService.cs (1)
141
var
conversion = compilation.ClassifyConversion(sourceType, targetType);
Microsoft.CodeAnalysis.CSharp.Features (16)
ExtractMethod\CSharpSelectionResult.ExpressionResult.cs (2)
100
var
conv = semanticModel.GetConversion(expression, cancellationToken);
133
private static bool IsCoClassImplicitConversion(TypeInfo info,
Conversion
conversion, INamedTypeSymbol? coclassSymbol)
src\roslyn\src\Analyzers\CSharp\Analyzers\HiddenExplicitCast\CSharpHiddenExplicitCastDiagnosticAnalyzer.cs (2)
90
var
outerConversion = outerConversionOperation.GetConversion();
103
var
innerConversion = innerConversionOperation.GetConversion();
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
364
var
conversion = conversionOperation.GetConversion();
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryLambdaExpression\CSharpRemoveUnnecessaryLambdaExpressionDiagnosticAnalyzer.cs (1)
275
var
conversion = compilation.ClassifyConversion(type1, type2);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCoalesceExpression\UseCoalesceExpressionHelpers.cs (1)
14
var
conversion = semanticModel.GetConversion(conditional, cancellationToken);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCollectionExpression\UseCollectionExpressionHelpers.cs (2)
166
var
conversion = speculationAnalyzer.SpeculativeSemanticModel.GetConversion(speculationAnalyzer.ReplacedExpression, cancellationToken);
292
var
conversion = compilation.ClassifyConversion(type, convertedType);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseDeconstruction\CSharpUseDeconstructionDiagnosticAnalyzer.cs (3)
108
var
initializerConversion = semanticModel.GetConversion(initializerValue, cancellationToken);
127
var
elementConversion = semanticModel.GetForEachStatementInfo(forEachStatement).ElementConversion;
139
Conversion
conversion,
src\roslyn\src\Analyzers\CSharp\CodeFixes\AddExplicitCast\CSharpAddExplicitCastCodeFixProvider.cs (1)
102
var
conversion = semanticModel.Compilation.ClassifyConversion(rightType, leftType);
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertSwitchStatementToExpression\ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs (1)
197
var
conversion = _semanticModel.Compilation.ClassifyConversion(typeInfo.Type, typeInfo.ConvertedType);
src\roslyn\src\Analyzers\CSharp\CodeFixes\GenerateParameterizedMember\CSharpGenerateParameterizedMemberService.cs (1)
141
var
conversion = compilation.ClassifyConversion(sourceType, targetType);
UseNamedArguments\CSharpUseNamedArgumentsCodeRefactoringProvider.cs (1)
49
var
conversion = semanticModel.Compilation.ClassifyConversion(argType, parameters[0].Type);
Microsoft.CodeAnalysis.CSharp.Workspaces (37)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ConversionExtensions.cs (2)
11
public static bool IsIdentityOrImplicitReference(this
Conversion
conversion)
14
public static bool IsImplicitUserDefinedConversion(this
Conversion
conversion)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (19)
233
var
conversion = conversionOperation.GetConversion();
297
var
originalConversion = originalConversionOperation.GetConversion();
407
var
originalParentConversion = originalParentConversionOperation.GetConversion();
711
var
conversion = semanticModel.GetConversion(castedExpressionNode, cancellationToken);
766
var
innerOriginalConversion = originalConversionOperation.GetConversion();
777
var
outerOriginalConversion = outerOriginalConversionOperation.GetConversion();
804
var
originalConversion = originalConversionOperation.GetConversion();
830
var
rewrittenBitwiseNotConversion = rewrittenBitwiseNotConversionOperation.GetConversion();
937
var
originalConversion = conversionOperation.GetConversion();
1022
var
outerConversion = rewrittenSemanticModel.GetConversion(rewrittenConditionalOrSwitchExpression, cancellationToken);
1156
Conversion
conversion,
1215
var
conversion = semanticModel.GetConversion(castedExpressionNode, cancellationToken);
1243
var
parentConversion = semanticModel.GetConversion(castNode, cancellationToken);
1291
var
conversion = semanticModel.GetConversion(current, cancellationToken);
1401
var
oldConversion = oldForEachInfo.ElementConversion;
1402
var
newConversion = newForEachInfo.ElementConversion;
1659
private static (ITypeSymbol? rewrittenConvertedType,
Conversion
rewrittenConversion) GetRewrittenInfo(
1662
Conversion
originalConversion, ITypeSymbol originalConvertedType,
1678
var
rewrittenConversion = rewrittenSemanticModel.GetConversion(rewrittenExpression, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (15)
38
Conversion
>
409
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(originalOtherPartOfConditional, originalExpressionType);
410
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newOtherPartOfConditional, newExpressionType);
444
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(oldSwitchStatement.Expression, originalCaseType);
445
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newSwitchStatement.Expression, newCaseType);
547
var
originalConvertedTypeConversion = this.OriginalSemanticModel.ClassifyConversion(previousOriginalNode, originalExpressionTypeInfo.ConvertedType);
548
var
newExpressionConvertedTypeConversion = this.SpeculativeSemanticModel.ClassifyConversion(previousReplacedNode, newExpressionTypeInfo.ConvertedType);
710
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(originalIsOrAsExpression.Left, originalConvertedType, isExplicitInSource: true);
711
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newIsOrAsExpression.Left, newConvertedType, isExplicitInSource: true);
815
var
originalConversion = originalModel.GetConversion(originalExpression);
816
var
newConversion = newModel.GetConversion(newExpression);
853
private bool ConversionsAreCompatible(
Conversion
originalConversion,
Conversion
newConversion)
934
protected override
Conversion
ClassifyConversion(SemanticModel model, ExpressionSyntax expression, ITypeSymbol targetType)
937
protected override
Conversion
ClassifyConversion(SemanticModel model, ITypeSymbol originalType, ITypeSymbol targetType)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\TypeStyle\CSharpUseImplicitTypeHelper.cs (1)
292
var
conversion = semanticModel.GetConversion(expression, cancellationToken);
Microsoft.Extensions.Logging.Generators (1)
LoggerMessageGenerator.Parser.cs (1)
826
Conversion
conversion = compilation.ClassifyConversion(source, dest);
Microsoft.Extensions.Options.SourceGeneration (2)
Parser.cs (1)
730
var
conversion = _compilation.ClassifyConversion(source, dest);
ParserUtilities.cs (1)
54
var
conversion = comp.ClassifyConversion(source, dest);
Microsoft.Gen.BuildMetadata (1)
src\Generators\Shared\ParserUtilities.cs (1)
59
var
conversion = comp.ClassifyConversion(source, dest);
Microsoft.Gen.ComplianceReports (1)
Parser.cs (1)
287
var
conversion = _compilation.ClassifyConversion(source, dest);
Microsoft.Gen.Logging (1)
src\Generators\Shared\ParserUtilities.cs (1)
59
var
conversion = comp.ClassifyConversion(source, dest);
Microsoft.Gen.MetadataExtractor (2)
src\Generators\Microsoft.Gen.ComplianceReports\Parser.cs (1)
287
var
conversion = _compilation.ClassifyConversion(source, dest);
src\Generators\Shared\ParserUtilities.cs (1)
59
var
conversion = comp.ClassifyConversion(source, dest);
Microsoft.Gen.Metrics (1)
src\Generators\Shared\ParserUtilities.cs (1)
59
var
conversion = comp.ClassifyConversion(source, dest);
Microsoft.Gen.MetricsReports (1)
src\Generators\Shared\ParserUtilities.cs (1)
59
var
conversion = comp.ClassifyConversion(source, dest);
Roslyn.Diagnostics.CSharp.Analyzers (37)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ConversionExtensions.cs (2)
11
public static bool IsIdentityOrImplicitReference(this
Conversion
conversion)
14
public static bool IsImplicitUserDefinedConversion(this
Conversion
conversion)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (19)
233
var
conversion = conversionOperation.GetConversion();
297
var
originalConversion = originalConversionOperation.GetConversion();
407
var
originalParentConversion = originalParentConversionOperation.GetConversion();
711
var
conversion = semanticModel.GetConversion(castedExpressionNode, cancellationToken);
766
var
innerOriginalConversion = originalConversionOperation.GetConversion();
777
var
outerOriginalConversion = outerOriginalConversionOperation.GetConversion();
804
var
originalConversion = originalConversionOperation.GetConversion();
830
var
rewrittenBitwiseNotConversion = rewrittenBitwiseNotConversionOperation.GetConversion();
937
var
originalConversion = conversionOperation.GetConversion();
1022
var
outerConversion = rewrittenSemanticModel.GetConversion(rewrittenConditionalOrSwitchExpression, cancellationToken);
1156
Conversion
conversion,
1215
var
conversion = semanticModel.GetConversion(castedExpressionNode, cancellationToken);
1243
var
parentConversion = semanticModel.GetConversion(castNode, cancellationToken);
1291
var
conversion = semanticModel.GetConversion(current, cancellationToken);
1401
var
oldConversion = oldForEachInfo.ElementConversion;
1402
var
newConversion = newForEachInfo.ElementConversion;
1659
private static (ITypeSymbol? rewrittenConvertedType,
Conversion
rewrittenConversion) GetRewrittenInfo(
1662
Conversion
originalConversion, ITypeSymbol originalConvertedType,
1678
var
rewrittenConversion = rewrittenSemanticModel.GetConversion(rewrittenExpression, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (15)
38
Conversion
>
409
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(originalOtherPartOfConditional, originalExpressionType);
410
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newOtherPartOfConditional, newExpressionType);
444
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(oldSwitchStatement.Expression, originalCaseType);
445
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newSwitchStatement.Expression, newCaseType);
547
var
originalConvertedTypeConversion = this.OriginalSemanticModel.ClassifyConversion(previousOriginalNode, originalExpressionTypeInfo.ConvertedType);
548
var
newExpressionConvertedTypeConversion = this.SpeculativeSemanticModel.ClassifyConversion(previousReplacedNode, newExpressionTypeInfo.ConvertedType);
710
var
originalConversion = this.OriginalSemanticModel.ClassifyConversion(originalIsOrAsExpression.Left, originalConvertedType, isExplicitInSource: true);
711
var
newConversion = this.SpeculativeSemanticModel.ClassifyConversion(newIsOrAsExpression.Left, newConvertedType, isExplicitInSource: true);
815
var
originalConversion = originalModel.GetConversion(originalExpression);
816
var
newConversion = newModel.GetConversion(newExpression);
853
private bool ConversionsAreCompatible(
Conversion
originalConversion,
Conversion
newConversion)
934
protected override
Conversion
ClassifyConversion(SemanticModel model, ExpressionSyntax expression, ITypeSymbol targetType)
937
protected override
Conversion
ClassifyConversion(SemanticModel model, ITypeSymbol originalType, ITypeSymbol targetType)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\TypeStyle\CSharpUseImplicitTypeHelper.cs (1)
292
var
conversion = semanticModel.GetConversion(expression, cancellationToken);
System.Text.Json.SourceGeneration (1)
JsonSourceGenerator.Parser.cs (1)
1821
Conversion
conversion = _knownSymbols.Compilation.ClassifyConversion(dictionaryType, type);