Gu.Analyzers icon indicating copy to clipboard operation
Gu.Analyzers copied to clipboard

Return nullable

Open JohanLarsson opened this issue 5 years ago • 0 comments

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;
        }

JohanLarsson avatar Nov 09 '20 15:11 JohanLarsson