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>")))); }))) }))); }
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) }))); }
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())
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())); }