public SourceDocument( string name, string sourceText, SourceDocumentKind kind, string?hash = null, string?path = null) { Name = name; SourceText = sourceText; Kind = kind; Hash = hash; Path = path; }
private static void GenerateSingleCSharpDocument( IEnumerable <GeneratorResult> results, SourceDocumentKind kind, string fileName, ICollection <SourceDocument> documents) { var code = new StringBuilder(); // marker for style cop to ignore this code code.AppendLine("// <auto-generated/>"); // enable nullability settings code.AppendLine("#nullable enable"); CompilationUnitSyntax compilationUnit = CompilationUnit(); foreach (var group in results.GroupBy(t => t.Result.Namespace).OrderBy(t => t.Key)) { NamespaceDeclarationSyntax namespaceDeclaration = NamespaceDeclaration(IdentifierName(group.Key)); foreach (var item in group) { BaseTypeDeclarationSyntax typeDeclaration = item.Result.TypeDeclaration; #if DEBUG SyntaxTriviaList trivia = typeDeclaration .GetLeadingTrivia() .Insert(0, Comment("// " + item.Generator.FullName)); typeDeclaration = typeDeclaration.WithLeadingTrivia(trivia); #endif namespaceDeclaration = namespaceDeclaration.AddMembers(typeDeclaration); } compilationUnit = compilationUnit.AddMembers(namespaceDeclaration); } compilationUnit = compilationUnit.NormalizeWhitespace(elasticTrivia: true); code.AppendLine(); code.AppendLine(compilationUnit.ToFullString()); documents.Add(new( fileName, code.ToString(), kind)); }