提交 8589e25f 编写于 作者: J JieCarolHu

do semantic check after syntax check for the var conversion

上级 eca1ed52
......@@ -135,10 +135,15 @@ protected override bool TryAnalyzeVariableDeclaration(TypeSyntax typeName, Seman
}
}
else if (typeName.Parent is ForEachStatementSyntax foreachStatement &&
IsExpressionSameAfterVarConversion(foreachStatement.Expression, semanticModel, cancellationToken))
IsExpressionSyntaxSameAfterVarConversion(foreachStatement.Expression, semanticModel, cancellationToken))
{
issueSpan = candidateIssueSpan;
return true;
// Semantic check to see if the conversion changes expression
var foreachStatementInfo = semanticModel.GetForEachStatementInfo(foreachStatement);
if (foreachStatementInfo.ElementConversion.IsIdentityOrImplicitReference())
{
issueSpan = candidateIssueSpan;
return true;
}
}
else if (typeName.Parent is DeclarationExpressionSyntax declarationExpression &&
TryAnalyzeDeclarationExpression(declarationExpression, semanticModel, optionSet, cancellationToken))
......@@ -244,7 +249,7 @@ protected override bool TryAnalyzeVariableDeclaration(TypeSyntax typeName, Seman
return false;
}
if (!IsExpressionSameAfterVarConversion(expression, semanticModel, cancellationToken))
if (!IsExpressionSyntaxSameAfterVarConversion(expression, semanticModel, cancellationToken))
{
return false;
}
......@@ -254,7 +259,7 @@ protected override bool TryAnalyzeVariableDeclaration(TypeSyntax typeName, Seman
return declaredType.Equals(initializerType);
}
private static bool IsExpressionSameAfterVarConversion(
private static bool IsExpressionSyntaxSameAfterVarConversion(
ExpressionSyntax expression,
SemanticModel semanticModel,
CancellationToken cancellationToken)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册