in ClrHeapAllocationsAnalyzer/TypeConversionAllocationAnalyzer.cs [189:202]
private static void CastExpressionCheck(SyntaxNode node, SemanticModel semanticModel, Action<Diagnostic> reportDiagnostic, string filePath, CancellationToken cancellationToken)
{
var castExpression = node as CastExpressionSyntax;
if (castExpression.Expression != null)
{
var castTypeInfo = semanticModel.GetTypeInfo(castExpression, cancellationToken);
var expressionTypeInfo = semanticModel.GetTypeInfo(castExpression.Expression, cancellationToken);
if (castTypeInfo.Type?.IsReferenceType == true && expressionTypeInfo.Type?.IsValueType == true)
{
reportDiagnostic(Diagnostic.Create(ValueTypeToReferenceTypeConversionRule, castExpression.Expression.GetLocation(), EmptyMessageArgs));
}
}
}