242 references to WriteLine
CSharpSyntaxGenerator (242)
AbstractFileWriter.cs (3)
71WriteLine(""); 121WriteLine("{"); 128WriteLine("}" + extra);
SourceWriter.cs (188)
36WriteLine($"[Experimental(global::Microsoft.CodeAnalysis.RoslynExperiments.PreviewLanguageFeatureApi, UrlFormat = {QuoteString(experimentalUrl)})]"); 103WriteLine("// <auto-generated />"); 105WriteLine("#nullable enable"); 107WriteLine("using System;"); 108WriteLine("using System.Collections.Generic;"); 109WriteLine("using System.Diagnostics.CodeAnalysis;"); 110WriteLine("using Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 111WriteLine("using Roslyn.Utilities;"); 112WriteLine("using CoreSyntax = Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 120WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax;"); 131WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax;"); 138WriteLine("namespace Microsoft.CodeAnalysis.CSharp;"); 139WriteLine("using System.Diagnostics.CodeAnalysis;"); 140WriteLine("using Microsoft.CodeAnalysis.CSharp.Syntax;"); 163WriteLine($"internal abstract partial class {node.Name} : {node.Base}"); 167WriteLine($"internal {node.Name}(SyntaxKind kind, DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 168WriteLine(" : base(kind, diagnostics, annotations)"); 172WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 177WriteLine($"internal {node.Name}(SyntaxKind kind)"); 178WriteLine(" : base(kind)"); 182WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 199WriteLine($"public abstract {(IsNew(field) ? "new " : "")}CoreSyntax.{field.Type} {field.Name} {{ get; }}"); 203WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{(GetFieldType(field, green: true))} {field.Name} {{ get; }}"); 213WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 222WriteLine($"internal sealed partial class {node.Name} : {node.Base}"); 231WriteLine($"internal readonly {type} {CamelCase(field.Name)};"); 236WriteLine($"internal readonly {field.Type} {CamelCase(field.Name)};"); 245WriteLine(", DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 246WriteLine(" : base(kind, diagnostics, annotations)"); 257WriteLine(", SyntaxFactoryContext context)"); 258WriteLine(" : base(kind)"); 260WriteLine("this.SetFactoryContext(context);"); 270WriteLine(")"); 271WriteLine(" : base(kind)"); 284WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 289WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(new CoreSyntax.SyntaxList<CSharpSyntaxNode>(this.{CamelCase(field.Name)}));"); 294WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 298WriteLine($"public {OverrideOrNewModifier(field)}{(GetFieldType(field, green: true))} {field.Name} => this.{CamelCase(field.Name)};"); 305WriteLine($"public {OverrideOrNewModifier(field)}{field.Type} {field.Name} => this.{CamelCase(field.Name)};"); 314WriteLine(" => null;"); 320WriteLine($"=> index == 0 ? this.{CamelCase(nodeFields[0].Name)} : null;"); 327WriteLine("=> index switch"); 332WriteLine($"{i} => this.{CamelCase(field.Name)},"); 334WriteLine("_ => null,"); 340WriteLine($"internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) => new CSharp.Syntax.{node.Name}(this, parent, position);"); 368WriteLine("SetFlags(NodeFlags.ContainsAttributes);"); 372WriteLine($"this.SlotCount = {nodeFields.Count};"); 378WriteLine($"if ({CamelCase(field.Name)} != null)"); 380WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 381WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 386WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 387WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 393WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 400WriteLine("internal override GreenNode SetAnnotations(SyntaxAnnotation[]? annotations)"); 407WriteLine(");"); 413WriteLine("internal override GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics)"); 420WriteLine(");"); 426WriteLine($"public override void Accept(CSharpSyntaxVisitor visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 427WriteLine($"public override TResult Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 441WriteLine("internal partial class CSharpSyntaxVisitor" + (withResult ? "<TResult>" : "")); 445WriteLine($"public virtual {(withResult ? "TResult" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 465WriteLine(")"); 482WriteLine(")"); 488WriteLine(");"); 489WriteLine("var diags = GetDiagnostics();"); 490WriteLine("if (diags?.Length > 0)"); 491WriteLine(" newNode = newNode.WithDiagnosticsGreen(diags);"); 492WriteLine("var annotations = GetAnnotations();"); 493WriteLine("if (annotations?.Length > 0)"); 494WriteLine(" newNode = newNode.WithAnnotationsGreen(annotations);"); 495WriteLine("return newNode;"); 500WriteLine("return this;"); 509WriteLine("internal partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<CSharpSyntaxNode>"); 519WriteLine($"public override CSharpSyntaxNode Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 524WriteLine("=> node;"); 538WriteLine(");"); 551WriteLine("internal partial class ContextAwareSyntax"); 554WriteLine("private SyntaxFactoryContext context;"); 557WriteLine("public ContextAwareSyntax(SyntaxFactoryContext context)"); 558WriteLine(" => this.context = context;"); 568WriteLine("internal static partial class SyntaxFactory"); 590WriteLine(")"); 596WriteLine("switch (kind)"); 601WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 603WriteLine("default: throw new ArgumentException(nameof(kind));"); 615WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 621WriteLine($"if ({CamelCase(field.Name)} != null)"); 627WriteLine($"if ({pname}.Kind != SyntaxKind.{field.Kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 631WriteLine($"switch ({pname}.Kind)"); 642WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 645WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 678WriteLine("int hash;"); 690WriteLine(", out hash);"); 692WriteLine($"if (cached != null) return ({nd.Name})cached;"); 698WriteLine(");"); 700WriteLine("if (hash >= 0)"); 704WriteLine("SyntaxNodeCache.AddNode(result, hash);"); 710WriteLine("return result;"); 717WriteLine(");"); 778WriteLine($"public abstract partial class {node.Name} : {node.Base}"); 780WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 781WriteLine(" : base(green, parent, position)"); 797WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{fieldType} {field.Name} {{ get; }}"); 798WriteLine($"public {node.Name} With{field.Name}({fieldType} {CamelCase(field.Name)}) => With{field.Name}Core({CamelCase(field.Name)});"); 799WriteLine($"internal abstract {node.Name} With{field.Name}Core({fieldType} {CamelCase(field.Name)});"); 805WriteLine($"public {node.Name} Add{field.Name}(params {argType}[] items) => Add{field.Name}Core(items);"); 806WriteLine($"internal abstract {node.Name} Add{field.Name}Core(params {argType}[] items);"); 820WriteLine($"public {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 821WriteLine($"internal abstract {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items);"); 834WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 848WriteLine($"public new {node.Name} With{baseField.Name}({GetRedFieldType(baseField)} {CamelCase(baseField.Name)}) => ({node.Name})With{baseField.Name}Core({CamelCase(baseField.Name)});"); 857WriteLine($"public new {node.Name} Add{baseField.Name}(params {argType}[] items) => ({node.Name})Add{baseField.Name}Core(items);"); 872WriteLine($"public new {baseType.Name} Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 897WriteLine($"public sealed partial class {node.Name} : {node.Base}"); 910WriteLine($"private SyntaxNode? {CamelCase(field.Name)};"); 915WriteLine($"private {type} {CamelCase(field.Name)};"); 922WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 923WriteLine(" : base(green, parent, position)"); 929WriteLine("Validate();"); 937WriteLine("private partial void Validate();"); 954WriteLine("get"); 956WriteLine($"var slot = ((Syntax.InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)};"); 957WriteLine($"return slot != null ? new SyntaxToken(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 963WriteLine($" => new SyntaxToken(this, ((InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)}, {GetChildPosition(i)}, {GetChildIndex(i)});"); 970WriteLine($"public {OverrideOrNewModifier(field)}SyntaxTokenList {field.Name}"); 972WriteLine("get"); 974WriteLine($"var slot = this.Green.GetSlot({i});"); 975WriteLine($"return slot != null ? new SyntaxTokenList(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 987WriteLine($" => new {field.Type}(GetRed(ref this.{CamelCase(field.Name)}, {i}));"); 993WriteLine("get"); 996WriteLine($"var red = GetRed(ref this.{CamelCase(field.Name)}, {i});"); 997WriteLine($"return red != null ? new {field.Type}(red, {GetChildIndex(i)}) : default;"); 1010WriteLine($" => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix};"); 1014WriteLine($" => GetRed(ref this.{CamelCase(field.Name)}, {i}){suffix};"); 1025WriteLine($"{"public"} {OverrideOrNewModifier(field)}{field.Type} {field.Name} => ((InternalSyntax.{node.Name})this.Green).{field.Name};"); 1037WriteLine(" => null;"); 1047WriteLine($" => index == {index} ? {whenTrue}{suffix} : null;"); 1053WriteLine("=> index switch"); 1060WriteLine($"{index} => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix},"); 1064WriteLine($"{index} => GetRed(ref this.{CamelCase(field.Name)}, {index}){suffix},"); 1067WriteLine("_ => null,"); 1083WriteLine(" => null;"); 1088WriteLine($" => index == {index} ? this.{CamelCase(field.Name)} : null;"); 1094WriteLine("=> index switch"); 1098WriteLine($"{index} => this.{CamelCase(field.Name)},"); 1100WriteLine("_ => null,"); 1147WriteLine($"public override {(genericResult ? "TResult?" : "void")} Accept{genericArgs}(CSharpSyntaxVisitor{genericArgs} visitor){(genericResult ? " where TResult : default" : "")} => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 1162WriteLine("public partial class CSharpSyntaxVisitor" + genericArgs); 1172WriteLine($"public virtual {(genericResult ? "TResult?" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 1184WriteLine(")"); 1201WriteLine(")"); 1207WriteLine(");"); 1208WriteLine("var annotations = GetAnnotations();"); 1209WriteLine("return annotations?.Length > 0 ? newNode.WithAnnotations(annotations) : newNode;"); 1214WriteLine("return this;"); 1240WriteLine(");"); 1254WriteLine(");"); 1343WriteLine($"internal override {baseType.Name} Add{field.Name}Core(params {baseArgType}[] items) => Add{field.Name}(items);"); 1349WriteLine($"public{(isNew ? " new " : " ")}{node.Name} Add{field.Name}(params {argType}[] items) => With{StripPost(field.Name, "Opt")}(this.{field.Name}.AddRange(items));"); 1362WriteLine($"internal override {baseType.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(items);"); 1377WriteLine($"var {varName} = this.{field.Name} ?? SyntaxFactory.{factoryName}();"); 1378WriteLine($"return With{StripPost(field.Name, "Opt")}({varName}.With{StripPost(referencedNodeField.Name, "Opt")}({varName}.{referencedNodeField.Name}.AddRange(items)));"); 1383WriteLine($" => With{StripPost(field.Name, "Opt")}(this.{field.Name}.With{StripPost(referencedNodeField.Name, "Opt")}(this.{field.Name}.{referencedNodeField.Name}.AddRange(items)));"); 1392WriteLine("public partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<SyntaxNode?>"); 1402WriteLine($"public override SyntaxNode? Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 1406WriteLine(" => node;"); 1428WriteLine(");"); 1438WriteLine("public static partial class SyntaxFactory"); 1532WriteLine(")"); 1538WriteLine("switch (kind)"); 1543WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1545WriteLine("default: throw new ArgumentException(nameof(kind));"); 1567WriteLine($"if ({pname}.Kind() != SyntaxKind.{kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 1571WriteLine($"switch ({pname}.Kind())"); 1575WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1577WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 1584WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 1617WriteLine(").CreateRed();"); 1673WriteLine($"private static SyntaxKind Get{StripPost(nd.Name, "Syntax")}{StripPost(field.Name, "Opt")}Kind(SyntaxKind kind)"); 1675WriteLine("=> kind switch"); 1682WriteLine($"SyntaxKind.{nKind.Name} => SyntaxKind.{pKind.Name},"); 1685WriteLine("_ => throw new ArgumentOutOfRangeException(),"); 1720WriteLine(")"); 1729WriteLine(");"); 1827WriteLine(")"); 1856WriteLine(");"); 1906WriteLine($"/// {line.TrimStart()}"); 1924WriteLine($"{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);");