Gu.Analyzers
Gu.Analyzers copied to clipboard
Return nullable
Before:
internal static bool FindSingle(IFieldSymbol field, SemanticModel semanticModel, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? expression)
{
expression = null;
if (field.IsReadOnly &&
field.TrySingleDeclaration(cancellationToken, out VariableDeclarationSyntax? declaration) &&
declaration.Variables.TrySingle(out var variable))
{
using var walker = MutationWalker.For(field, semanticModel, cancellationToken);
if (walker.IsEmpty)
{
expression = variable.Initializer?.Value;
return expression != null;
}
if (variable.Initializer is null &&
walker.TrySingle(out var node) &&
node.Parent is AssignmentExpressionSyntax assignment)
{
expression = assignment.Right;
return expression != null;
}
return false;
}
return false;
}
After
internal static ExpressionSyntax? FindSingle(IFieldSymbol field, SemanticModel semanticModel, CancellationToken cancellationToken)
{
if (field.IsReadOnly &&
field.TrySingleDeclaration(cancellationToken, out VariableDeclarationSyntax? declaration) &&
declaration.Variables.TrySingle(out var variable))
{
using var walker = MutationWalker.For(field, semanticModel, cancellationToken);
if (walker.IsEmpty)
{
return variable.Initializer?.Value;
}
if (variable.Initializer is null &&
walker.TrySingle(out var node) &&
node.Parent is AssignmentExpressionSyntax assignment)
{
return assignment.Right;
}
return null;
}
return null;
}