Beispiel #1
0
        private static BlockSyntax GetMemberBody(MemberDeclarationSyntax memberDeclaration)
        {
            if (memberDeclaration != null)
            {
                switch (memberDeclaration.CSharpKind())
                {
                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)memberDeclaration).Body);

                case SyntaxKind.OperatorDeclaration:
                    return(((OperatorDeclarationSyntax)memberDeclaration).Body);

                case SyntaxKind.ConversionOperatorDeclaration:
                    return(((ConversionOperatorDeclarationSyntax)memberDeclaration).Body);

                case SyntaxKind.ConstructorDeclaration:
                    return(((ConstructorDeclarationSyntax)memberDeclaration).Body);

                case SyntaxKind.DestructorDeclaration:
                    return(((DestructorDeclarationSyntax)memberDeclaration).Body);
                }
            }

            return(null);
        }
        public static MemberDeclarationSyntax WithBody(
            this MemberDeclarationSyntax memberDeclaration,
            BlockSyntax body)
        {
            if (memberDeclaration != null)
            {
                switch (memberDeclaration.CSharpKind())
                {
                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)memberDeclaration).WithBody(body));

                case SyntaxKind.OperatorDeclaration:
                    return(((OperatorDeclarationSyntax)memberDeclaration).WithBody(body));

                case SyntaxKind.ConversionOperatorDeclaration:
                    return(((ConversionOperatorDeclarationSyntax)memberDeclaration).WithBody(body));

                case SyntaxKind.ConstructorDeclaration:
                    return(((ConstructorDeclarationSyntax)memberDeclaration).WithBody(body));

                case SyntaxKind.DestructorDeclaration:
                    return(((DestructorDeclarationSyntax)memberDeclaration).WithBody(body));
                }
            }

            return(null);
        }
        public static TypeSyntax GetMemberType(this MemberDeclarationSyntax member)
        {
            if (member != null)
            {
                switch (member.CSharpKind())
                {
                case SyntaxKind.DelegateDeclaration:
                    return(((DelegateDeclarationSyntax)member).ReturnType);

                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)member).ReturnType);

                case SyntaxKind.OperatorDeclaration:
                    return(((OperatorDeclarationSyntax)member).ReturnType);

                case SyntaxKind.PropertyDeclaration:
                    return(((PropertyDeclarationSyntax)member).Type);

                case SyntaxKind.IndexerDeclaration:
                    return(((IndexerDeclarationSyntax)member).Type);

                case SyntaxKind.EventDeclaration:
                    return(((EventDeclarationSyntax)member).Type);

                case SyntaxKind.EventFieldDeclaration:
                    return(((EventFieldDeclarationSyntax)member).Declaration.Type);

                case SyntaxKind.FieldDeclaration:
                    return(((FieldDeclarationSyntax)member).Declaration.Type);
                }
            }

            return(null);
        }
        public static MemberDeclarationSyntax WithParameterList(
            this MemberDeclarationSyntax member,
            BaseParameterListSyntax parameterList)
        {
            if (member != null)
            {
                switch (member.CSharpKind())
                {
                case SyntaxKind.DelegateDeclaration:
                    return(((DelegateDeclarationSyntax)member).WithParameterList((ParameterListSyntax)parameterList));

                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)member).WithParameterList((ParameterListSyntax)parameterList));

                case SyntaxKind.ConstructorDeclaration:
                    return(((ConstructorDeclarationSyntax)member).WithParameterList((ParameterListSyntax)parameterList));

                case SyntaxKind.IndexerDeclaration:
                    return(((IndexerDeclarationSyntax)member).WithParameterList((BracketedParameterListSyntax)parameterList));

                case SyntaxKind.OperatorDeclaration:
                    return(((OperatorDeclarationSyntax)member).WithParameterList((ParameterListSyntax)parameterList));

                case SyntaxKind.ConversionOperatorDeclaration:
                    return(((ConversionOperatorDeclarationSyntax)member).WithParameterList((ParameterListSyntax)parameterList));
                }
            }

            return(null);
        }
        public static MemberDeclarationSyntax WithAttributeLists(
            this MemberDeclarationSyntax member,
            SyntaxList <AttributeListSyntax> attributeLists)
        {
            if (member != null)
            {
                switch (member.CSharpKind())
                {
                case SyntaxKind.EnumDeclaration:
                    return(((EnumDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.EnumMemberDeclaration:
                    return(((EnumMemberDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.ClassDeclaration:
                case SyntaxKind.InterfaceDeclaration:
                case SyntaxKind.StructDeclaration:
                    return(((TypeDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.DelegateDeclaration:
                    return(((DelegateDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.FieldDeclaration:
                    return(((FieldDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.EventFieldDeclaration:
                    return(((EventFieldDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.ConstructorDeclaration:
                    return(((ConstructorDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.DestructorDeclaration:
                    return(((DestructorDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.PropertyDeclaration:
                    return(((PropertyDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.EventDeclaration:
                    return(((EventDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.IndexerDeclaration:
                    return(((IndexerDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.OperatorDeclaration:
                    return(((OperatorDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.ConversionOperatorDeclaration:
                    return(((ConversionOperatorDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)member).WithAttributeLists(attributeLists));

                case SyntaxKind.IncompleteMember:
                    return(((IncompleteMemberSyntax)member).WithAttributeLists(attributeLists));
                }
            }

            return(null);
        }
Beispiel #6
0
        private static MemberDeclarationSyntax AfterMember(
            SyntaxList<MemberDeclarationSyntax> members,
            MemberDeclarationSyntax eventDeclaration)
        {
            if (eventDeclaration.CSharpKind() == SyntaxKind.EventFieldDeclaration)
            {
                // Field style events go after the last field event, or after the last field.
                var lastEvent = members.LastOrDefault(m => m is EventFieldDeclarationSyntax);

                return lastEvent ?? LastField(members);
            }

            if (eventDeclaration.CSharpKind() == SyntaxKind.EventDeclaration)
            {
                // Property style events go after existing events, then after existing constructors.
                var lastEvent = members.LastOrDefault(m => m is EventDeclarationSyntax);

                return lastEvent ?? LastConstructor(members);
            }

            return null;
        }
Beispiel #7
0
        private static MemberDeclarationSyntax AfterMember(
            SyntaxList <MemberDeclarationSyntax> members,
            MemberDeclarationSyntax eventDeclaration)
        {
            if (eventDeclaration.CSharpKind() == SyntaxKind.EventFieldDeclaration)
            {
                // Field style events go after the last field event, or after the last field.
                var lastEvent = members.LastOrDefault(m => m is EventFieldDeclarationSyntax);

                return(lastEvent ?? LastField(members));
            }

            if (eventDeclaration.CSharpKind() == SyntaxKind.EventDeclaration)
            {
                // Property style events go after existing events, then after existing constructors.
                var lastEvent = members.LastOrDefault(m => m is EventDeclarationSyntax);

                return(lastEvent ?? LastConstructor(members));
            }

            return(null);
        }
Beispiel #8
0
        private static MemberDeclarationSyntax BeforeMember(
            SyntaxList<MemberDeclarationSyntax> members,
            MemberDeclarationSyntax eventDeclaration)
        {
            // If it's a field style event, then it goes before everything else if we don't have any
            // existing fields/events.
            if (eventDeclaration.CSharpKind() == SyntaxKind.FieldDeclaration)
            {
                return members.FirstOrDefault();
            }

            // Otherwise just place it before the methods.
            return FirstMethod(members);
        }
Beispiel #9
0
        private static MemberDeclarationSyntax BeforeMember(
            SyntaxList <MemberDeclarationSyntax> members,
            MemberDeclarationSyntax eventDeclaration)
        {
            // If it's a field style event, then it goes before everything else if we don't have any
            // existing fields/events.
            if (eventDeclaration.CSharpKind() == SyntaxKind.FieldDeclaration)
            {
                return(members.FirstOrDefault());
            }

            // Otherwise just place it before the methods.
            return(FirstMethod(members));
        }
Beispiel #10
0
        private static MemberDeclarationSyntax RemoveAllMembers(MemberDeclarationSyntax declaration)
        {
            switch (declaration.CSharpKind())
            {
            case SyntaxKind.EnumDeclaration:
                return(((EnumDeclarationSyntax)declaration).WithMembers(default(SeparatedSyntaxList <EnumMemberDeclarationSyntax>)));

            case SyntaxKind.StructDeclaration:
            case SyntaxKind.InterfaceDeclaration:
            case SyntaxKind.ClassDeclaration:
                return(((TypeDeclarationSyntax)declaration).WithMembers(default(SyntaxList <MemberDeclarationSyntax>)));

            default:
                return(declaration);
            }
        }
        public static bool HasMethodShape(this MemberDeclarationSyntax memberDeclaration)
        {
            if (memberDeclaration != null)
            {
                switch (memberDeclaration.CSharpKind())
                {
                case SyntaxKind.MethodDeclaration:
                case SyntaxKind.OperatorDeclaration:
                case SyntaxKind.ConversionOperatorDeclaration:
                case SyntaxKind.ConstructorDeclaration:
                case SyntaxKind.DestructorDeclaration:
                    return(true);
                }
            }

            return(false);
        }
        public static TypeParameterListSyntax GetTypeParameterList(this MemberDeclarationSyntax member)
        {
            if (member != null)
            {
                switch (member.CSharpKind())
                {
                case SyntaxKind.ClassDeclaration:
                case SyntaxKind.InterfaceDeclaration:
                case SyntaxKind.StructDeclaration:
                    return(((TypeDeclarationSyntax)member).TypeParameterList);

                case SyntaxKind.DelegateDeclaration:
                    return(((DelegateDeclarationSyntax)member).TypeParameterList);

                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)member).TypeParameterList);
                }
            }

            return(null);
        }
        public static int GetArity(this MemberDeclarationSyntax member)
        {
            if (member != null)
            {
                switch (member.CSharpKind())
                {
                case SyntaxKind.ClassDeclaration:
                case SyntaxKind.InterfaceDeclaration:
                case SyntaxKind.StructDeclaration:
                    return(((TypeDeclarationSyntax)member).Arity);

                case SyntaxKind.DelegateDeclaration:
                    return(((DelegateDeclarationSyntax)member).Arity);

                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)member).Arity);
                }
            }

            return(0);
        }
        public static SyntaxToken GetNameToken(this MemberDeclarationSyntax member)
        {
            if (member != null)
            {
                switch (member.CSharpKind())
                {
                case SyntaxKind.EnumDeclaration:
                    return(((EnumDeclarationSyntax)member).Identifier);

                case SyntaxKind.ClassDeclaration:
                case SyntaxKind.InterfaceDeclaration:
                case SyntaxKind.StructDeclaration:
                    return(((TypeDeclarationSyntax)member).Identifier);

                case SyntaxKind.DelegateDeclaration:
                    return(((DelegateDeclarationSyntax)member).Identifier);

                case SyntaxKind.FieldDeclaration:
                    return(((FieldDeclarationSyntax)member).Declaration.Variables.First().Identifier);

                case SyntaxKind.EventFieldDeclaration:
                    return(((EventFieldDeclarationSyntax)member).Declaration.Variables.First().Identifier);

                case SyntaxKind.PropertyDeclaration:
                    return(((PropertyDeclarationSyntax)member).Identifier);

                case SyntaxKind.EventDeclaration:
                    return(((EventDeclarationSyntax)member).Identifier);

                case SyntaxKind.MethodDeclaration:
                    return(((MethodDeclarationSyntax)member).Identifier);
                }
            }

            // Constructors, destructors, indexers and operators don't have names.
            return(default(SyntaxToken));
        }
        private static MemberDeclarationSyntax RemoveAllMembers(MemberDeclarationSyntax declaration)
        {
            switch (declaration.CSharpKind())
            {
                case SyntaxKind.EnumDeclaration:
                    return ((EnumDeclarationSyntax)declaration).WithMembers(default(SeparatedSyntaxList<EnumMemberDeclarationSyntax>));

                case SyntaxKind.StructDeclaration:
                case SyntaxKind.InterfaceDeclaration:
                case SyntaxKind.ClassDeclaration:
                    return ((TypeDeclarationSyntax)declaration).WithMembers(default(SyntaxList<MemberDeclarationSyntax>));

                default:
                    return declaration;
            }
        }
Beispiel #16
0
 public void AddMember(MemberDeclarationSyntax node)
 {
     switch (node.CSharpKind())
     {
         case SyntaxKind.ConstructorDeclaration:
             {
                 Add((ConstructorDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.FieldDeclaration:
             {
                 Add((FieldDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.EventFieldDeclaration:
             {
                 Add((EventFieldDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.PropertyDeclaration:
             {
                 Add((PropertyDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.MethodDeclaration:
             {
                 Add((MethodDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.EnumMemberDeclaration:
             {
                 Add((EnumMemberDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.IndexerDeclaration:
             {
                 Add((IndexerDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.ClassDeclaration:
             {
                 Add((ClassDeclarationSyntax)node);
                 return;
             }
             break;
         case SyntaxKind.StructDeclaration:
             {
                 Add((StructDeclarationSyntax)node);
                 return;
             }
             break;
     }
     throw new NotImplementedException(node.CSharpKind().ToString());
 }