public RichGenerationResult CreateResult() { return(new RichGenerationResult { Members = Members.Select(m => ChangeMember.AddMember(TransformationContext.ProcessingNode, m)).ToList(), Usings = SyntaxFactory.List(Usings), AttributeLists = SyntaxFactory.List(AttributeLists), Externs = SyntaxFactory.List(Externs), }); }
public async Task <RichGenerationResult> GenerateRichAsync(TransformationContext context, IProgress <Diagnostic> progress, CancellationToken cancellationToken) { var generatedMembers = await CodeGenerator.GenerateAsync(context, progress, CancellationToken.None); // Figure out ancestry for the generated type, including nesting types and namespaces. var wrappedMembers = context.ProcessingNode.Ancestors().Aggregate(generatedMembers, WrapInAncestor); return(new RichGenerationResult { Members = wrappedMembers.Select(m => ChangeMember.AddMember(null, m)).ToList() }); }
public async Task <RichGenerationResult> GenerateRichAsync(TransformationContext context, IProgress <Diagnostic> progress, CancellationToken cancellationToken) { var results = new List <ChangeMember>(); MemberDeclarationSyntax copy = null; var applyToClass = context.ProcessingNode as ClassDeclarationSyntax; if (applyToClass != null) { copy = applyToClass .WithIdentifier(SyntaxFactory.Identifier(applyToClass.Identifier.ValueText + this.suffix)); results.Add(ChangeMember.AddMember(context.ProcessingNode, copy)); //results.Add(ChangeMember.ReplaceMember(context.ProcessingNode, copy)); } var applyToField = context.ProcessingNode as FieldDeclarationSyntax; if (applyToField != null) { var oldDeclaration = applyToField.Declaration; copy = applyToField.WithDeclaration(SyntaxFactory.VariableDeclaration(oldDeclaration.Type).WithVariables(SyntaxFactory.SeparatedList <VariableDeclaratorSyntax>( oldDeclaration.Variables.Select(v => { if (v is VariableDeclaratorSyntax variableDeclaratorSyntax) { return(SyntaxFactory.VariableDeclarator(variableDeclaratorSyntax.Identifier.Text + suffix)); } return(v); }) ))); results.Add(ChangeMember.AddMember(context.ProcessingNode, copy)); } return(new RichGenerationResult { Members = results, Usings = SyntaxFactory.List <UsingDirectiveSyntax>(), AttributeLists = SyntaxFactory.List <AttributeListSyntax>(), Externs = SyntaxFactory.List <ExternAliasDirectiveSyntax>() }); }