diff --git a/src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpUseImplicitTypeDiagnosticAnalyzer.cs b/src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpUseImplicitTypeDiagnosticAnalyzer.cs index a4619456c7af4f6dbfe5b194236d41b96d1b49ae..b35cbac85a6c585e32689864ebf8c5d5b7d43297 100644 --- a/src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpUseImplicitTypeDiagnosticAnalyzer.cs +++ b/src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpUseImplicitTypeDiagnosticAnalyzer.cs @@ -137,12 +137,8 @@ protected override bool TryAnalyzeVariableDeclaration(TypeSyntax typeName, Seman else if (typeName.Parent is ForEachStatementSyntax foreachStatement && IsExpressionSameAfterVarConversion(foreachStatement.Expression, semanticModel, cancellationToken)) { - var foreachStatementInfo = semanticModel.GetForEachStatementInfo(foreachStatement); - if (foreachStatementInfo.ElementConversion.IsIdentityOrImplicitReference()) - { - issueSpan = candidateIssueSpan; - return true; - } + issueSpan = candidateIssueSpan; + return true; } else if (typeName.Parent is DeclarationExpressionSyntax declarationExpression && TryAnalyzeDeclarationExpression(declarationExpression, semanticModel, optionSet, cancellationToken)) @@ -268,7 +264,7 @@ protected override bool TryAnalyzeVariableDeclaration(TypeSyntax typeName, Seman // and if we're replacing the declaration with 'var' we'd be changing the semantics by inferring type of // initializer expression and thereby losing the conversion. var conversion = semanticModel.GetConversion(expression, cancellationToken); - return conversion.Exists && conversion.IsImplicit && conversion.IsIdentity; + return conversion.IsIdentity; } protected override bool ShouldAnalyzeDeclarationExpression(DeclarationExpressionSyntax declaration, SemanticModel semanticModel, CancellationToken cancellationToken)