Example #1
0
        private static SyntaxNode Normalize(SyntaxNode root, IEnumerable <SyntaxNode> members, Scope scope)
        {
            var appClass = root
                           .DescendantNodes()
                           .OfType <ClassDeclarationSyntax>()
                           .Where(@class => @class.Identifier.ToString() == "testclass")
                           .FirstOrDefault();

            if (appClass == null)
            {
                appClass = CSharp.ClassDeclaration("testclass");
            }

            return(CSharp.CompilationUnit()
                   .WithMembers(CSharp.List(new[] { (MemberDeclarationSyntax)
                                                    appClass
                                                    .WithMembers(CSharp.List(
                                                                     members.Select(
                                                                         member => {
                    var method = member as MethodDeclarationSyntax;
                    if (method == null)
                    {
                        return member;
                    }

                    return method.WithParameterList(
                        method
                        .ParameterList
                        .AddParameters(CSharp.Parameter(
                                           CSharp.ParseToken("result"))
                                       .WithType(CSharp.ParseTypeName("Dictionary<string, object>"))));
                }))) })));
        }
Example #2
0
 private SyntaxNode typeExtension(SyntaxNode node, SyntacticalExtension <SyntaxNode> extension)
 {
     return(CSharp.ClassDeclaration(extension.Identifier)
            .WithMembers(CSharp.List <MemberDeclarationSyntax>(new[] {
         CSharp.MethodDeclaration(CSharp.ParseTypeName("int"), "myMethod")
         .WithBody((BlockSyntax)extension.Body)
     })));
 }
Example #3
0
 public TypeDeclarationSyntax Build()
 {
     var res = (_kind switch
     {
         Kind.Class => (TypeDeclarationSyntax)SF.ClassDeclaration(_name),
         Kind.Interface => SF.InterfaceDeclaration(_name),
         Kind.Struct => SF.StructDeclaration(_name),
         _ => throw new InvalidOperationException()
     }).WithModifiers(_modifiers.Build())
Example #4
0
        public override ClassDeclarationSyntax Generate()
        {
            var decl = SF.ClassDeclaration(Basics.GenerateSerializerName(ClassSymbol));

            decl = decl.WithTypeParameterList(GetTypeParametersList());
            return(decl.WithBaseList(SF.BaseList(GetBaseList()))
                   .WithMembers(GenerateStaticNamesSpans())
                   .AddMembers(DeclareTryParseMethod()));
        }