public static PropertyDeclarationSyntax AddModifiers(this PropertyDeclarationSyntax cl, params SyntaxKind[] modifiers)
 {
     if (modifiers == null)
     {
         return(cl);
     }
     return(cl.AddModifiers(modifiers.Select(x => SyntaxFactory.Token(x)).ToArray()));
 }
        private static async Task <Document> AddVirtualKeywordAsync(Document document, PropertyDeclarationSyntax declaration, CancellationToken cancellationToken)
        {
            // Add virtual keyword
            PropertyDeclarationSyntax newDeclaration = declaration.AddModifiers(SyntaxFactory.Token(SyntaxKind.VirtualKeyword));

            // Tell it to be formatted
            PropertyDeclarationSyntax formatted = newDeclaration.WithAdditionalAnnotations(Formatter.Annotation);

            // Replace old declaration
            var oldRoot = await document.GetSyntaxRootAsync(cancellationToken);

            var newRoot = oldRoot.ReplaceNode(declaration, formatted);

            return(document.WithSyntaxRoot(newRoot));
        }
Exemple #3
0
        public CSharpSyntaxNode Convert(GetSetAccessor node)
        {
            PropertyDeclarationSyntax csProperty = SyntaxFactory.PropertyDeclaration(node.Type.ToCsNode <TypeSyntax>(), node.Name.Text);

            csProperty = csProperty.AddModifiers(node.Modifiers.ToCsNodes <SyntaxToken>());

            AccessorDeclarationSyntax csGetAccess = SyntaxFactory
                                                    .AccessorDeclaration(SyntaxKind.GetAccessorDeclaration)
                                                    .WithBody(node.GetAccessor.Body.ToCsNode <BlockSyntax>());

            AccessorDeclarationSyntax csSetAccess = SyntaxFactory
                                                    .AccessorDeclaration(SyntaxKind.SetAccessorDeclaration)
                                                    .WithBody(node.SetAccessor.Body.ToCsNode <BlockSyntax>());

            if (node.JsDoc.Count > 0)
            {
                csProperty = csProperty.WithLeadingTrivia(SyntaxFactory.Trivia(node.JsDoc[0].ToCsNode <DocumentationCommentTriviaSyntax>()));
            }

            return(csProperty.AddAccessorListAccessors(csGetAccess, csSetAccess));
        }
Exemple #4
0
 public static PropertyDeclarationSyntax AddModifiers(this PropertyDeclarationSyntax syntax, params SyntaxKind[] modifier)
 {
     return(syntax.AddModifiers(modifier.Select(Token).ToArray()));
 }
Exemple #5
0
        private IEnumerable <MemberDeclarationSyntax> getMembers(Type type, TypeNameResolver typeNameResolver)
        {
            // TODO: Add static members to a manager interface. (Daniel Potter, 11/8/2017)
            foreach (MemberInfo memberInfo in type.GetMembers(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly))
            {
                if (memberInfo.GetCustomAttribute(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute)) != null)
                {
                    continue;
                }

                MemberExtensionKind extensionKind;
                switch (memberInfo.MemberType)
                {
                case MemberTypes.Constructor:
                    // TODO: Constructors should be added to a manager interface. (Daniel
                    //       Potter, 11/8/2017)
                    break;

                case MemberTypes.Event:
                    var eventInfo = (EventInfo)memberInfo;

                    extensionKind = eventInfo.GetExtensionKind();
                    if (extensionKind == MemberExtensionKind.Override)
                    {
                        continue;
                    }

                    EventFieldDeclarationSyntax eventDeclaration = getEvent(eventInfo, typeNameResolver);

                    if (extensionKind == MemberExtensionKind.New)
                    {
                        eventDeclaration = eventDeclaration
                                           .AddModifiers(Token(SyntaxKind.NewKeyword));
                    }

                    yield return(eventDeclaration);

                    break;

                case MemberTypes.Field:
                    // TODO: Constants need to be handled somehow. (Daniel Potter, 11/8/2017)
                    break;

                case MemberTypes.Method:
                    var methodInfo = (MethodInfo)memberInfo;

                    if (methodInfo.IsSpecialName)
                    {
                        continue;
                    }

                    extensionKind = methodInfo.GetExtensionKind();
                    if (extensionKind == MemberExtensionKind.Override)
                    {
                        continue;
                    }

                    MethodDeclarationSyntax methodDeclaration = getMethod(methodInfo, typeNameResolver);

                    if (extensionKind == MemberExtensionKind.New)
                    {
                        methodDeclaration = methodDeclaration
                                            .AddModifiers(Token(SyntaxKind.NewKeyword));
                    }

                    yield return(methodDeclaration);

                    break;

                case MemberTypes.Property:
                    var propertyInfo = (PropertyInfo)memberInfo;

                    extensionKind = propertyInfo.GetExtensionKind();
                    if (extensionKind == MemberExtensionKind.Override)
                    {
                        continue;
                    }

                    if (propertyInfo.GetIndexParameters().Length > 0)
                    {
                        IndexerDeclarationSyntax indexerDeclaration = getIndexer(propertyInfo, typeNameResolver);

                        if (extensionKind == MemberExtensionKind.New)
                        {
                            indexerDeclaration = indexerDeclaration
                                                 .AddModifiers(Token(SyntaxKind.NewKeyword));
                        }

                        yield return(indexerDeclaration);
                    }
                    else
                    {
                        PropertyDeclarationSyntax propertyDeclaration = getProperty(propertyInfo, typeNameResolver);

                        if (extensionKind == MemberExtensionKind.New)
                        {
                            propertyDeclaration = propertyDeclaration
                                                  .AddModifiers(Token(SyntaxKind.NewKeyword));
                        }

                        yield return(propertyDeclaration);
                    }
                    break;

                case MemberTypes.NestedType:
                    // TODO: Nested types need to be handled somehow. (Daniel Potter, 11/8/2017)
                    break;

                default:
                    // TODO: Log these for diagnostics. (Daniel Potter, 11/8/2017)
                    break;
                }
            }
        }
Exemple #6
0
 public static PropertyDeclarationSyntax PublicModifier(this PropertyDeclarationSyntax prop)
 {
     return(prop.AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword)));
 }
Exemple #7
0
 public static PropertyDeclarationSyntax WithModifiers(this PropertyDeclarationSyntax node, params SyntaxKind[] modifiers)
 {
     return(node.AddModifiers(CreateModifiers(modifiers)));
 }