239 references to WriteLine
CSharpSyntaxGenerator (239)
AbstractFileWriter.cs (3)
71WriteLine(""); 121WriteLine("{"); 128WriteLine("}" + extra);
SourceWriter.cs (185)
31WriteLine("// <auto-generated />"); 33WriteLine("#nullable enable"); 35WriteLine("using System;"); 36WriteLine("using System.Collections.Generic;"); 37WriteLine("using System.Diagnostics.CodeAnalysis;"); 38WriteLine("using Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 39WriteLine("using Roslyn.Utilities;"); 40WriteLine("using CoreSyntax = Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 48WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax;"); 59WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax;"); 66WriteLine("namespace Microsoft.CodeAnalysis.CSharp;"); 67WriteLine("using System.Diagnostics.CodeAnalysis;"); 68WriteLine("using Microsoft.CodeAnalysis.CSharp.Syntax;"); 91WriteLine($"internal abstract partial class {node.Name} : {node.Base}"); 95WriteLine($"internal {node.Name}(SyntaxKind kind, DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 96WriteLine(" : base(kind, diagnostics, annotations)"); 100WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 105WriteLine($"internal {node.Name}(SyntaxKind kind)"); 106WriteLine(" : base(kind)"); 110WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 127WriteLine($"public abstract {(IsNew(field) ? "new " : "")}CoreSyntax.{field.Type} {field.Name} {{ get; }}"); 131WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{(GetFieldType(field, green: true))} {field.Name} {{ get; }}"); 141WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 150WriteLine($"internal sealed partial class {node.Name} : {node.Base}"); 159WriteLine($"internal readonly {type} {CamelCase(field.Name)};"); 164WriteLine($"internal readonly {field.Type} {CamelCase(field.Name)};"); 173WriteLine(", DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 174WriteLine(" : base(kind, diagnostics, annotations)"); 185WriteLine(", SyntaxFactoryContext context)"); 186WriteLine(" : base(kind)"); 188WriteLine("this.SetFactoryContext(context);"); 198WriteLine(")"); 199WriteLine(" : base(kind)"); 212WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 217WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(new CoreSyntax.SyntaxList<CSharpSyntaxNode>(this.{CamelCase(field.Name)}));"); 222WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 226WriteLine($"public {OverrideOrNewModifier(field)}{(GetFieldType(field, green: true))} {field.Name} => this.{CamelCase(field.Name)};"); 233WriteLine($"public {OverrideOrNewModifier(field)}{field.Type} {field.Name} => this.{CamelCase(field.Name)};"); 242WriteLine(" => null;"); 248WriteLine($"=> index == 0 ? this.{CamelCase(nodeFields[0].Name)} : null;"); 255WriteLine("=> index switch"); 260WriteLine($"{i} => this.{CamelCase(field.Name)},"); 262WriteLine("_ => null,"); 268WriteLine($"internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) => new CSharp.Syntax.{node.Name}(this, parent, position);"); 296WriteLine("SetFlags(NodeFlags.ContainsAttributes);"); 300WriteLine($"this.SlotCount = {nodeFields.Count};"); 306WriteLine($"if ({CamelCase(field.Name)} != null)"); 308WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 309WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 314WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 315WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 321WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 328WriteLine("internal override GreenNode SetAnnotations(SyntaxAnnotation[]? annotations)"); 335WriteLine(");"); 341WriteLine("internal override GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics)"); 348WriteLine(");"); 354WriteLine($"public override void Accept(CSharpSyntaxVisitor visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 355WriteLine($"public override TResult Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 369WriteLine("internal partial class CSharpSyntaxVisitor" + (withResult ? "<TResult>" : "")); 373WriteLine($"public virtual {(withResult ? "TResult" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 393WriteLine(")"); 410WriteLine(")"); 416WriteLine(");"); 417WriteLine("var diags = GetDiagnostics();"); 418WriteLine("if (diags?.Length > 0)"); 419WriteLine(" newNode = newNode.WithDiagnosticsGreen(diags);"); 420WriteLine("var annotations = GetAnnotations();"); 421WriteLine("if (annotations?.Length > 0)"); 422WriteLine(" newNode = newNode.WithAnnotationsGreen(annotations);"); 423WriteLine("return newNode;"); 428WriteLine("return this;"); 437WriteLine("internal partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<CSharpSyntaxNode>"); 447WriteLine($"public override CSharpSyntaxNode Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 452WriteLine("=> node;"); 466WriteLine(");"); 479WriteLine("internal partial class ContextAwareSyntax"); 482WriteLine("private SyntaxFactoryContext context;"); 485WriteLine("public ContextAwareSyntax(SyntaxFactoryContext context)"); 486WriteLine(" => this.context = context;"); 496WriteLine("internal static partial class SyntaxFactory"); 518WriteLine(")"); 524WriteLine("switch (kind)"); 529WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 531WriteLine("default: throw new ArgumentException(nameof(kind));"); 543WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 549WriteLine($"if ({CamelCase(field.Name)} != null)"); 555WriteLine($"if ({pname}.Kind != SyntaxKind.{field.Kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 559WriteLine($"switch ({pname}.Kind)"); 570WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 573WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 606WriteLine("int hash;"); 618WriteLine(", out hash);"); 620WriteLine($"if (cached != null) return ({nd.Name})cached;"); 626WriteLine(");"); 628WriteLine("if (hash >= 0)"); 632WriteLine("SyntaxNodeCache.AddNode(result, hash);"); 638WriteLine("return result;"); 645WriteLine(");"); 705WriteLine($"public abstract partial class {node.Name} : {node.Base}"); 707WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 708WriteLine(" : base(green, parent, position)"); 723WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{fieldType} {field.Name} {{ get; }}"); 724WriteLine($"public {node.Name} With{field.Name}({fieldType} {CamelCase(field.Name)}) => With{field.Name}Core({CamelCase(field.Name)});"); 725WriteLine($"internal abstract {node.Name} With{field.Name}Core({fieldType} {CamelCase(field.Name)});"); 731WriteLine($"public {node.Name} Add{field.Name}(params {argType}[] items) => Add{field.Name}Core(items);"); 732WriteLine($"internal abstract {node.Name} Add{field.Name}Core(params {argType}[] items);"); 746WriteLine($"public {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 747WriteLine($"internal abstract {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items);"); 759WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 773WriteLine($"public new {node.Name} With{baseField.Name}({GetRedFieldType(baseField)} {CamelCase(baseField.Name)}) => ({node.Name})With{baseField.Name}Core({CamelCase(baseField.Name)});"); 782WriteLine($"public new {node.Name} Add{baseField.Name}(params {argType}[] items) => ({node.Name})Add{baseField.Name}Core(items);"); 797WriteLine($"public new {baseType.Name} Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 821WriteLine($"public sealed partial class {node.Name} : {node.Base}"); 834WriteLine($"private SyntaxNode? {CamelCase(field.Name)};"); 839WriteLine($"private {type} {CamelCase(field.Name)};"); 846WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 847WriteLine(" : base(green, parent, position)"); 864WriteLine("get"); 866WriteLine($"var slot = ((Syntax.InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)};"); 867WriteLine($"return slot != null ? new SyntaxToken(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 873WriteLine($" => new SyntaxToken(this, ((InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)}, {GetChildPosition(i)}, {GetChildIndex(i)});"); 879WriteLine($"public {OverrideOrNewModifier(field)}SyntaxTokenList {field.Name}"); 881WriteLine("get"); 883WriteLine($"var slot = this.Green.GetSlot({i});"); 884WriteLine($"return slot != null ? new SyntaxTokenList(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 895WriteLine($" => new {field.Type}(GetRed(ref this.{CamelCase(field.Name)}, {i}));"); 901WriteLine("get"); 904WriteLine($"var red = GetRed(ref this.{CamelCase(field.Name)}, {i});"); 905WriteLine($"return red != null ? new {field.Type}(red, {GetChildIndex(i)}) : default;"); 918WriteLine($" => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix};"); 922WriteLine($" => GetRed(ref this.{CamelCase(field.Name)}, {i}){suffix};"); 932WriteLine($"{"public"} {OverrideOrNewModifier(field)}{field.Type} {field.Name} => ((InternalSyntax.{node.Name})this.Green).{field.Name};"); 944WriteLine(" => null;"); 954WriteLine($" => index == {index} ? {whenTrue}{suffix} : null;"); 960WriteLine("=> index switch"); 967WriteLine($"{index} => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix},"); 971WriteLine($"{index} => GetRed(ref this.{CamelCase(field.Name)}, {index}){suffix},"); 974WriteLine("_ => null,"); 990WriteLine(" => null;"); 995WriteLine($" => index == {index} ? this.{CamelCase(field.Name)} : null;"); 1001WriteLine("=> index switch"); 1005WriteLine($"{index} => this.{CamelCase(field.Name)},"); 1007WriteLine("_ => null,"); 1049WriteLine($"public override {(genericResult ? "TResult?" : "void")} Accept{genericArgs}(CSharpSyntaxVisitor{genericArgs} visitor){(genericResult ? " where TResult : default" : "")} => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 1064WriteLine("public partial class CSharpSyntaxVisitor" + genericArgs); 1073WriteLine($"public virtual {(genericResult ? "TResult?" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 1084WriteLine(")"); 1101WriteLine(")"); 1107WriteLine(");"); 1108WriteLine("var annotations = GetAnnotations();"); 1109WriteLine("return annotations?.Length > 0 ? newNode.WithAnnotations(annotations) : newNode;"); 1114WriteLine("return this;"); 1140WriteLine(");"); 1153WriteLine(");"); 1242WriteLine($"internal override {baseType.Name} Add{field.Name}Core(params {baseArgType}[] items) => Add{field.Name}(items);"); 1247WriteLine($"public{(isNew ? " new " : " ")}{node.Name} Add{field.Name}(params {argType}[] items) => With{StripPost(field.Name, "Opt")}(this.{field.Name}.AddRange(items));"); 1260WriteLine($"internal override {baseType.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(items);"); 1274WriteLine($"var {varName} = this.{field.Name} ?? SyntaxFactory.{factoryName}();"); 1275WriteLine($"return With{StripPost(field.Name, "Opt")}({varName}.With{StripPost(referencedNodeField.Name, "Opt")}({varName}.{referencedNodeField.Name}.AddRange(items)));"); 1280WriteLine($" => With{StripPost(field.Name, "Opt")}(this.{field.Name}.With{StripPost(referencedNodeField.Name, "Opt")}(this.{field.Name}.{referencedNodeField.Name}.AddRange(items)));"); 1289WriteLine("public partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<SyntaxNode?>"); 1298WriteLine($"public override SyntaxNode? Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 1302WriteLine(" => node;"); 1324WriteLine(");"); 1334WriteLine("public static partial class SyntaxFactory"); 1427WriteLine(")"); 1433WriteLine("switch (kind)"); 1438WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1440WriteLine("default: throw new ArgumentException(nameof(kind));"); 1462WriteLine($"if ({pname}.Kind() != SyntaxKind.{kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 1466WriteLine($"switch ({pname}.Kind())"); 1470WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1472WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 1479WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 1512WriteLine(").CreateRed();"); 1568WriteLine($"private static SyntaxKind Get{StripPost(nd.Name, "Syntax")}{StripPost(field.Name, "Opt")}Kind(SyntaxKind kind)"); 1570WriteLine("=> kind switch"); 1577WriteLine($"SyntaxKind.{nKind.Name} => SyntaxKind.{pKind.Name},"); 1580WriteLine("_ => throw new ArgumentOutOfRangeException(),"); 1614WriteLine(")"); 1623WriteLine(");"); 1720WriteLine(")"); 1749WriteLine(");"); 1799WriteLine($"/// {line.TrimStart()}"); 1817WriteLine($"{indent}/// {line.TrimStart()}");
TestWriter.cs (51)
26WriteLine("// <auto-generated />"); 28WriteLine("using Microsoft.CodeAnalysis.CSharp.Syntax;"); 29WriteLine("using Roslyn.Utilities;"); 30WriteLine("using Xunit;"); 31WriteLine("using InternalSyntaxFactory = Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxFactory;"); 34WriteLine("namespace Microsoft.CodeAnalysis.CSharp.UnitTests"); 38WriteLine("public partial class GreenNodeTests"); 41WriteLine("#region Green Generators"); 43WriteLine("#endregion Green Generators"); 46WriteLine("#region Green Factory and Property Tests"); 48WriteLine("#endregion Green Factory and Property Tests"); 51WriteLine("#region Green Rewriters"); 53WriteLine("#endregion Green Rewriters"); 58WriteLine("public partial class RedNodeTests"); 61WriteLine("#region Red Generators"); 63WriteLine("#endregion Red Generators"); 66WriteLine("#region Red Factory and Property Tests"); 68WriteLine("#endregion Red Factory and Property Tests"); 71WriteLine("#region Red Rewriters"); 73WriteLine("#endregion Red Rewriters"); 106WriteLine($"private static {csharpNamespace}{node.Name} Generate{strippedName}()"); 209WriteLine(");"); 234WriteLine("[Fact]"); 235WriteLine($"public void Test{strippedName}FactoryAndProperties()"); 238WriteLine($"var node = Generate{strippedName}();"); 251WriteLine($"Assert.Equal(SyntaxKind.None, node.{field.Name}.Kind());"); 255WriteLine($"Assert.Null(node.{field.Name});"); 263WriteLine($"Assert.Equal(SyntaxKind.{kind}, node.{field.Name}.Kind());"); 267WriteLine($"Assert.Equal(SyntaxKind.{kind}, node.{field.Name}.Kind);"); 274WriteLine($"Assert.NotEqual(default, node.{field.Name});"); 281WriteLine($"Assert.Equal(default, node.{field.Name});"); 285WriteLine($"Assert.NotNull(node.{field.Name});"); 297WriteLine($"Assert.Equal(new {field.Type}(), node.{field.Name});"); 306WriteLine($"var newNode = node{withStat};"); 307WriteLine("Assert.Equal(node, newNode);"); 314WriteLine("AttachAndCheckDiagnostics(node);"); 344WriteLine("[Fact]"); 345WriteLine($"public void Test{strippedName}TokenDeleteRewriter()"); 348WriteLine($"var oldNode = Generate{strippedName}();"); 349WriteLine("var rewriter = new TokenDeleteRewriter();"); 350WriteLine("var newNode = rewriter.Visit(oldNode);"); 353WriteLine("if(!oldNode.IsMissing)"); 355WriteLine("Assert.NotEqual(oldNode, newNode);"); 359WriteLine("Assert.NotNull(newNode);"); 360WriteLine("Assert.True(newNode.IsMissing, \"No tokens => missing\");"); 372WriteLine("[Fact]"); 373WriteLine($"public void Test{strippedName}IdentityRewriter()"); 376WriteLine($"var oldNode = Generate{strippedName}();"); 377WriteLine("var rewriter = new IdentityRewriter();"); 378WriteLine("var newNode = rewriter.Visit(oldNode);"); 382WriteLine("Assert.Same(oldNode, newNode);");