private static Task <Document> RemoveNewLinesFromAccessorWithSingleLineExpressionAsync(
            Document document,
            AccessorDeclarationSyntax accessorDeclaration,
            CancellationToken cancellationToken)
        {
            AccessorDeclarationSyntax newAccessorDeclaration = accessorDeclaration
                                                               .RemoveWhitespace(accessorDeclaration.Span)
                                                               .WithFormatterAnnotation();

            return(document.ReplaceNodeAsync(accessorDeclaration, newAccessorDeclaration, cancellationToken));
        }
Example #2
0
        private static Task <Document> FormatAccessorBracesOnSingleLineAsync(
            Document document,
            AccessorDeclarationSyntax accessor,
            CancellationToken cancellationToken)
        {
            AccessorDeclarationSyntax newAccessorDeclaration = accessor
                                                               .RemoveWhitespace(accessor.Span)
                                                               .WithFormatterAnnotation();

            return(document.ReplaceNodeAsync(accessor, newAccessorDeclaration, cancellationToken));
        }
        public static async Task <Document> RefactorAsync(
            Document document,
            PropertyDeclarationSyntax propertyDeclaration,
            bool prefixIdentifierWithUnderscore = true,
            CancellationToken cancellationToken = default)
        {
            SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            string fieldName = StringUtility.ToCamelCase(
                propertyDeclaration.Identifier.ValueText,
                prefixWithUnderscore: prefixIdentifierWithUnderscore);

            fieldName = NameGenerator.Default.EnsureUniqueName(
                fieldName,
                semanticModel,
                propertyDeclaration.SpanStart);

            FieldDeclarationSyntax fieldDeclaration = FieldDeclaration(
                (propertyDeclaration.Modifiers.Contains(SyntaxKind.StaticKeyword)) ? Modifiers.Private_Static() : Modifiers.Private(),
                propertyDeclaration.Type,
                fieldName,
                propertyDeclaration.Initializer)
                                                      .WithFormatterAnnotation();

            IPropertySymbol propertySymbol = semanticModel.GetDeclaredSymbol(propertyDeclaration, cancellationToken);

            PropertyDeclarationSyntax newPropertyDeclaration = propertyDeclaration;

            AccessorDeclarationSyntax getter = propertyDeclaration.Getter();

            if (getter != null)
            {
                AccessorDeclarationSyntax newGetter = getter.Update(
                    getter.AttributeLists,
                    getter.Modifiers,
                    getter.Keyword,
                    Block(ReturnStatement(IdentifierName(fieldName))),
                    default(SyntaxToken));

                newPropertyDeclaration = newPropertyDeclaration
                                         .ReplaceAccessor(getter, newGetter.RemoveWhitespace())
                                         .WithInitializer(null)
                                         .WithSemicolonToken(default);
Example #4
0
        private static PropertyDeclarationSyntax ExpandAccessors(
            Document document,
            PropertyDeclarationSyntax propertyDeclaration,
            IPropertySymbol propertySymbol,
            string fieldName,
            SemanticModel semanticModel)
        {
            AccessorDeclarationSyntax getter = propertyDeclaration.Getter();

            if (getter != null)
            {
                AccessorDeclarationSyntax newGetter = getter.Update(
                    getter.AttributeLists,
                    getter.Modifiers,
                    getter.Keyword,
                    Block(ReturnStatement(IdentifierName(fieldName))),
                    default(SyntaxToken));

                propertyDeclaration = propertyDeclaration
                                      .ReplaceNode(getter, newGetter.RemoveWhitespace())
                                      .WithInitializer(null)
                                      .WithSemicolonToken(default);