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;"); 140WriteLine("using System.Diagnostics.CodeAnalysis;"); 141WriteLine("using Microsoft.CodeAnalysis.CSharp.Syntax;"); 164WriteLine($"internal abstract partial class {node.Name} : {node.Base}"); 168WriteLine($"internal {node.Name}(SyntaxKind kind, DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 169WriteLine(" : base(kind, diagnostics, annotations)"); 173WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 178WriteLine($"internal {node.Name}(SyntaxKind kind)"); 179WriteLine(" : base(kind)"); 183WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 200WriteLine($"public abstract {(IsNew(field) ? "new " : "")}CoreSyntax.{field.Type} {field.Name} {{ get; }}"); 204WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{(GetFieldType(field, green: true))} {field.Name} {{ get; }}"); 214WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 223WriteLine($"internal sealed partial class {node.Name} : {node.Base}"); 232WriteLine($"internal readonly {type} {CamelCase(field.Name)};"); 237WriteLine($"internal readonly {field.Type} {CamelCase(field.Name)};"); 246WriteLine(", DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 247WriteLine(" : base(kind, diagnostics, annotations)"); 258WriteLine(", SyntaxFactoryContext context)"); 259WriteLine(" : base(kind)"); 261WriteLine("this.SetFactoryContext(context);"); 271WriteLine(")"); 272WriteLine(" : base(kind)"); 285WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 290WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(new CoreSyntax.SyntaxList<CSharpSyntaxNode>(this.{CamelCase(field.Name)}));"); 295WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 299WriteLine($"public {OverrideOrNewModifier(field)}{(GetFieldType(field, green: true))} {field.Name} => this.{CamelCase(field.Name)};"); 306WriteLine($"public {OverrideOrNewModifier(field)}{field.Type} {field.Name} => this.{CamelCase(field.Name)};"); 315WriteLine(" => null;"); 321WriteLine($"=> index == 0 ? this.{CamelCase(nodeFields[0].Name)} : null;"); 328WriteLine("=> index switch"); 333WriteLine($"{i} => this.{CamelCase(field.Name)},"); 335WriteLine("_ => null,"); 341WriteLine($"internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) => new CSharp.Syntax.{node.Name}(this, parent, position);"); 369WriteLine("SetFlags(NodeFlags.ContainsAttributes);"); 373WriteLine($"this.SlotCount = {nodeFields.Count};"); 379WriteLine($"if ({CamelCase(field.Name)} != null)"); 381WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 382WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 387WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 388WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 394WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 401WriteLine("internal override GreenNode SetAnnotations(SyntaxAnnotation[]? annotations)"); 408WriteLine(");"); 414WriteLine("internal override GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics)"); 421WriteLine(");"); 427WriteLine($"public override void Accept(CSharpSyntaxVisitor visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 428WriteLine($"public override TResult Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 442WriteLine("internal partial class CSharpSyntaxVisitor" + (withResult ? "<TResult>" : "")); 446WriteLine($"public virtual {(withResult ? "TResult" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 466WriteLine(")"); 483WriteLine(")"); 489WriteLine(");"); 490WriteLine("var diags = GetDiagnostics();"); 491WriteLine("if (diags?.Length > 0)"); 492WriteLine(" newNode = newNode.WithDiagnosticsGreen(diags);"); 493WriteLine("var annotations = GetAnnotations();"); 494WriteLine("if (annotations?.Length > 0)"); 495WriteLine(" newNode = newNode.WithAnnotationsGreen(annotations);"); 496WriteLine("return newNode;"); 501WriteLine("return this;"); 510WriteLine("internal partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<CSharpSyntaxNode>"); 520WriteLine($"public override CSharpSyntaxNode Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 525WriteLine("=> node;"); 539WriteLine(");"); 552WriteLine("internal partial class ContextAwareSyntax"); 555WriteLine("private SyntaxFactoryContext context;"); 558WriteLine("public ContextAwareSyntax(SyntaxFactoryContext context)"); 559WriteLine(" => this.context = context;"); 569WriteLine("internal static partial class SyntaxFactory"); 591WriteLine(")"); 597WriteLine("switch (kind)"); 602WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 604WriteLine("default: throw new ArgumentException(nameof(kind));"); 616WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 622WriteLine($"if ({CamelCase(field.Name)} != null)"); 628WriteLine($"if ({pname}.Kind != SyntaxKind.{field.Kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 632WriteLine($"switch ({pname}.Kind)"); 643WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 646WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 679WriteLine("int hash;"); 691WriteLine(", out hash);"); 693WriteLine($"if (cached != null) return ({nd.Name})cached;"); 699WriteLine(");"); 701WriteLine("if (hash >= 0)"); 705WriteLine("SyntaxNodeCache.AddNode(result, hash);"); 711WriteLine("return result;"); 718WriteLine(");"); 779WriteLine($"public abstract partial class {node.Name} : {node.Base}"); 781WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 782WriteLine(" : base(green, parent, position)"); 798WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{fieldType} {field.Name} {{ get; }}"); 799WriteLine($"public {node.Name} With{field.Name}({fieldType} {CamelCase(field.Name)}) => With{field.Name}Core({CamelCase(field.Name)});"); 800WriteLine($"internal abstract {node.Name} With{field.Name}Core({fieldType} {CamelCase(field.Name)});"); 806WriteLine($"public {node.Name} Add{field.Name}(params {argType}[] items) => Add{field.Name}Core(items);"); 807WriteLine($"internal abstract {node.Name} Add{field.Name}Core(params {argType}[] items);"); 821WriteLine($"public {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 822WriteLine($"internal abstract {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items);"); 835WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 849WriteLine($"public new {node.Name} With{baseField.Name}({GetRedFieldType(baseField)} {CamelCase(baseField.Name)}) => ({node.Name})With{baseField.Name}Core({CamelCase(baseField.Name)});"); 858WriteLine($"public new {node.Name} Add{baseField.Name}(params {argType}[] items) => ({node.Name})Add{baseField.Name}Core(items);"); 873WriteLine($"public new {baseType.Name} Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 898WriteLine($"public sealed partial class {node.Name} : {node.Base}"); 911WriteLine($"private SyntaxNode? {CamelCase(field.Name)};"); 916WriteLine($"private {type} {CamelCase(field.Name)};"); 923WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 924WriteLine(" : base(green, parent, position)"); 930WriteLine("Validate();"); 938WriteLine("private partial void Validate();"); 955WriteLine("get"); 957WriteLine($"var slot = ((Syntax.InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)};"); 958WriteLine($"return slot != null ? new SyntaxToken(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 964WriteLine($" => new SyntaxToken(this, ((InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)}, {GetChildPosition(i)}, {GetChildIndex(i)});"); 971WriteLine($"public {OverrideOrNewModifier(field)}SyntaxTokenList {field.Name}"); 973WriteLine("get"); 975WriteLine($"var slot = this.Green.GetSlot({i});"); 976WriteLine($"return slot != null ? new SyntaxTokenList(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 988WriteLine($" => new {field.Type}(GetRed(ref this.{CamelCase(field.Name)}, {i}));"); 994WriteLine("get"); 997WriteLine($"var red = GetRed(ref this.{CamelCase(field.Name)}, {i});"); 998WriteLine($"return red != null ? new {field.Type}(red, {GetChildIndex(i)}) : default;"); 1011WriteLine($" => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix};"); 1015WriteLine($" => GetRed(ref this.{CamelCase(field.Name)}, {i}){suffix};"); 1026WriteLine($"{"public"} {OverrideOrNewModifier(field)}{field.Type} {field.Name} => ((InternalSyntax.{node.Name})this.Green).{field.Name};"); 1038WriteLine(" => null;"); 1048WriteLine($" => index == {index} ? {whenTrue}{suffix} : null;"); 1054WriteLine("=> index switch"); 1061WriteLine($"{index} => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix},"); 1065WriteLine($"{index} => GetRed(ref this.{CamelCase(field.Name)}, {index}){suffix},"); 1068WriteLine("_ => null,"); 1084WriteLine(" => null;"); 1089WriteLine($" => index == {index} ? this.{CamelCase(field.Name)} : null;"); 1095WriteLine("=> index switch"); 1099WriteLine($"{index} => this.{CamelCase(field.Name)},"); 1101WriteLine("_ => null,"); 1148WriteLine($"public override {(genericResult ? "TResult?" : "void")} Accept{genericArgs}(CSharpSyntaxVisitor{genericArgs} visitor){(genericResult ? " where TResult : default" : "")} => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 1163WriteLine("public partial class CSharpSyntaxVisitor" + genericArgs); 1173WriteLine($"public virtual {(genericResult ? "TResult?" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 1185WriteLine(")"); 1202WriteLine(")"); 1208WriteLine(");"); 1209WriteLine("var annotations = GetAnnotations();"); 1210WriteLine("return annotations?.Length > 0 ? newNode.WithAnnotations(annotations) : newNode;"); 1215WriteLine("return this;"); 1241WriteLine(");"); 1255WriteLine(");"); 1344WriteLine($"internal override {baseType.Name} Add{field.Name}Core(params {baseArgType}[] items) => Add{field.Name}(items);"); 1350WriteLine($"public{(isNew ? " new " : " ")}{node.Name} Add{field.Name}(params {argType}[] items) => With{StripPost(field.Name, "Opt")}(this.{field.Name}.AddRange(items));"); 1363WriteLine($"internal override {baseType.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(items);"); 1378WriteLine($"var {varName} = this.{field.Name} ?? SyntaxFactory.{factoryName}();"); 1379WriteLine($"return With{StripPost(field.Name, "Opt")}({varName}.With{StripPost(referencedNodeField.Name, "Opt")}({varName}.{referencedNodeField.Name}.AddRange(items)));"); 1384WriteLine($" => With{StripPost(field.Name, "Opt")}(this.{field.Name}.With{StripPost(referencedNodeField.Name, "Opt")}(this.{field.Name}.{referencedNodeField.Name}.AddRange(items)));"); 1393WriteLine("public partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<SyntaxNode?>"); 1403WriteLine($"public override SyntaxNode? Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 1407WriteLine(" => node;"); 1429WriteLine(");"); 1439WriteLine("public static partial class SyntaxFactory"); 1533WriteLine(")"); 1539WriteLine("switch (kind)"); 1544WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1546WriteLine("default: throw new ArgumentException(nameof(kind));"); 1568WriteLine($"if ({pname}.Kind() != SyntaxKind.{kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 1572WriteLine($"switch ({pname}.Kind())"); 1576WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1578WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 1585WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 1618WriteLine(").CreateRed();"); 1674WriteLine($"private static SyntaxKind Get{StripPost(nd.Name, "Syntax")}{StripPost(field.Name, "Opt")}Kind(SyntaxKind kind)"); 1676WriteLine("=> kind switch"); 1683WriteLine($"SyntaxKind.{nKind.Name} => SyntaxKind.{pKind.Name},"); 1686WriteLine("_ => throw new ArgumentOutOfRangeException(),"); 1721WriteLine(")"); 1730WriteLine(");"); 1828WriteLine(")"); 1857WriteLine(");"); 1907WriteLine($"/// {line.TrimStart()}"); 1925WriteLine($"{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);");