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)})]"); 42WriteLine("// <auto-generated />"); 44WriteLine("#nullable enable"); 46WriteLine("using System;"); 47WriteLine("using System.Collections.Generic;"); 48WriteLine("using System.Diagnostics.CodeAnalysis;"); 49WriteLine("using Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 50WriteLine("using Roslyn.Utilities;"); 51WriteLine("using CoreSyntax = Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 59WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax;"); 70WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax;"); 77WriteLine("namespace Microsoft.CodeAnalysis.CSharp;"); 78WriteLine("using System.Diagnostics.CodeAnalysis;"); 79WriteLine("using Microsoft.CodeAnalysis.CSharp.Syntax;"); 102WriteLine($"internal abstract partial class {node.Name} : {node.Base}"); 106WriteLine($"internal {node.Name}(SyntaxKind kind, DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 107WriteLine(" : base(kind, diagnostics, annotations)"); 111WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 116WriteLine($"internal {node.Name}(SyntaxKind kind)"); 117WriteLine(" : base(kind)"); 121WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 138WriteLine($"public abstract {(IsNew(field) ? "new " : "")}CoreSyntax.{field.Type} {field.Name} {{ get; }}"); 142WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{(GetFieldType(field, green: true))} {field.Name} {{ get; }}"); 152WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 161WriteLine($"internal sealed partial class {node.Name} : {node.Base}"); 170WriteLine($"internal readonly {type} {CamelCase(field.Name)};"); 175WriteLine($"internal readonly {field.Type} {CamelCase(field.Name)};"); 184WriteLine(", DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 185WriteLine(" : base(kind, diagnostics, annotations)"); 196WriteLine(", SyntaxFactoryContext context)"); 197WriteLine(" : base(kind)"); 199WriteLine("this.SetFactoryContext(context);"); 209WriteLine(")"); 210WriteLine(" : base(kind)"); 223WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 228WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(new CoreSyntax.SyntaxList<CSharpSyntaxNode>(this.{CamelCase(field.Name)}));"); 233WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 237WriteLine($"public {OverrideOrNewModifier(field)}{(GetFieldType(field, green: true))} {field.Name} => this.{CamelCase(field.Name)};"); 244WriteLine($"public {OverrideOrNewModifier(field)}{field.Type} {field.Name} => this.{CamelCase(field.Name)};"); 253WriteLine(" => null;"); 259WriteLine($"=> index == 0 ? this.{CamelCase(nodeFields[0].Name)} : null;"); 266WriteLine("=> index switch"); 271WriteLine($"{i} => this.{CamelCase(field.Name)},"); 273WriteLine("_ => null,"); 279WriteLine($"internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) => new CSharp.Syntax.{node.Name}(this, parent, position);"); 307WriteLine("SetFlags(NodeFlags.ContainsAttributes);"); 311WriteLine($"this.SlotCount = {nodeFields.Count};"); 317WriteLine($"if ({CamelCase(field.Name)} != null)"); 319WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 320WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 325WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 326WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 332WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 339WriteLine("internal override GreenNode SetAnnotations(SyntaxAnnotation[]? annotations)"); 346WriteLine(");"); 352WriteLine("internal override GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics)"); 359WriteLine(");"); 365WriteLine($"public override void Accept(CSharpSyntaxVisitor visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 366WriteLine($"public override TResult Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 380WriteLine("internal partial class CSharpSyntaxVisitor" + (withResult ? "<TResult>" : "")); 384WriteLine($"public virtual {(withResult ? "TResult" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 404WriteLine(")"); 421WriteLine(")"); 427WriteLine(");"); 428WriteLine("var diags = GetDiagnostics();"); 429WriteLine("if (diags?.Length > 0)"); 430WriteLine(" newNode = newNode.WithDiagnosticsGreen(diags);"); 431WriteLine("var annotations = GetAnnotations();"); 432WriteLine("if (annotations?.Length > 0)"); 433WriteLine(" newNode = newNode.WithAnnotationsGreen(annotations);"); 434WriteLine("return newNode;"); 439WriteLine("return this;"); 448WriteLine("internal partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<CSharpSyntaxNode>"); 458WriteLine($"public override CSharpSyntaxNode Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 463WriteLine("=> node;"); 477WriteLine(");"); 490WriteLine("internal partial class ContextAwareSyntax"); 493WriteLine("private SyntaxFactoryContext context;"); 496WriteLine("public ContextAwareSyntax(SyntaxFactoryContext context)"); 497WriteLine(" => this.context = context;"); 507WriteLine("internal static partial class SyntaxFactory"); 529WriteLine(")"); 535WriteLine("switch (kind)"); 540WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 542WriteLine("default: throw new ArgumentException(nameof(kind));"); 554WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 560WriteLine($"if ({CamelCase(field.Name)} != null)"); 566WriteLine($"if ({pname}.Kind != SyntaxKind.{field.Kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 570WriteLine($"switch ({pname}.Kind)"); 581WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 584WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 617WriteLine("int hash;"); 629WriteLine(", out hash);"); 631WriteLine($"if (cached != null) return ({nd.Name})cached;"); 637WriteLine(");"); 639WriteLine("if (hash >= 0)"); 643WriteLine("SyntaxNodeCache.AddNode(result, hash);"); 649WriteLine("return result;"); 656WriteLine(");"); 717WriteLine($"public abstract partial class {node.Name} : {node.Base}"); 719WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 720WriteLine(" : base(green, parent, position)"); 736WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{fieldType} {field.Name} {{ get; }}"); 737WriteLine($"public {node.Name} With{field.Name}({fieldType} {CamelCase(field.Name)}) => With{field.Name}Core({CamelCase(field.Name)});"); 738WriteLine($"internal abstract {node.Name} With{field.Name}Core({fieldType} {CamelCase(field.Name)});"); 744WriteLine($"public {node.Name} Add{field.Name}(params {argType}[] items) => Add{field.Name}Core(items);"); 745WriteLine($"internal abstract {node.Name} Add{field.Name}Core(params {argType}[] items);"); 759WriteLine($"public {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 760WriteLine($"internal abstract {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items);"); 773WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 787WriteLine($"public new {node.Name} With{baseField.Name}({GetRedFieldType(baseField)} {CamelCase(baseField.Name)}) => ({node.Name})With{baseField.Name}Core({CamelCase(baseField.Name)});"); 796WriteLine($"public new {node.Name} Add{baseField.Name}(params {argType}[] items) => ({node.Name})Add{baseField.Name}Core(items);"); 811WriteLine($"public new {baseType.Name} Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 836WriteLine($"public sealed partial class {node.Name} : {node.Base}"); 849WriteLine($"private SyntaxNode? {CamelCase(field.Name)};"); 854WriteLine($"private {type} {CamelCase(field.Name)};"); 861WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 862WriteLine(" : base(green, parent, position)"); 868WriteLine("Validate();"); 876WriteLine("private partial void Validate();"); 893WriteLine("get"); 895WriteLine($"var slot = ((Syntax.InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)};"); 896WriteLine($"return slot != null ? new SyntaxToken(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 902WriteLine($" => new SyntaxToken(this, ((InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)}, {GetChildPosition(i)}, {GetChildIndex(i)});"); 909WriteLine($"public {OverrideOrNewModifier(field)}SyntaxTokenList {field.Name}"); 911WriteLine("get"); 913WriteLine($"var slot = this.Green.GetSlot({i});"); 914WriteLine($"return slot != null ? new SyntaxTokenList(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 926WriteLine($" => new {field.Type}(GetRed(ref this.{CamelCase(field.Name)}, {i}));"); 932WriteLine("get"); 935WriteLine($"var red = GetRed(ref this.{CamelCase(field.Name)}, {i});"); 936WriteLine($"return red != null ? new {field.Type}(red, {GetChildIndex(i)}) : default;"); 949WriteLine($" => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix};"); 953WriteLine($" => GetRed(ref this.{CamelCase(field.Name)}, {i}){suffix};"); 964WriteLine($"{"public"} {OverrideOrNewModifier(field)}{field.Type} {field.Name} => ((InternalSyntax.{node.Name})this.Green).{field.Name};"); 976WriteLine(" => null;"); 986WriteLine($" => index == {index} ? {whenTrue}{suffix} : null;"); 992WriteLine("=> index switch"); 999WriteLine($"{index} => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix},"); 1003WriteLine($"{index} => GetRed(ref this.{CamelCase(field.Name)}, {index}){suffix},"); 1006WriteLine("_ => null,"); 1022WriteLine(" => null;"); 1027WriteLine($" => index == {index} ? this.{CamelCase(field.Name)} : null;"); 1033WriteLine("=> index switch"); 1037WriteLine($"{index} => this.{CamelCase(field.Name)},"); 1039WriteLine("_ => null,"); 1086WriteLine($"public override {(genericResult ? "TResult?" : "void")} Accept{genericArgs}(CSharpSyntaxVisitor{genericArgs} visitor){(genericResult ? " where TResult : default" : "")} => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 1101WriteLine("public partial class CSharpSyntaxVisitor" + genericArgs); 1111WriteLine($"public virtual {(genericResult ? "TResult?" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 1122WriteLine(")"); 1139WriteLine(")"); 1145WriteLine(");"); 1146WriteLine("var annotations = GetAnnotations();"); 1147WriteLine("return annotations?.Length > 0 ? newNode.WithAnnotations(annotations) : newNode;"); 1152WriteLine("return this;"); 1178WriteLine(");"); 1192WriteLine(");"); 1281WriteLine($"internal override {baseType.Name} Add{field.Name}Core(params {baseArgType}[] items) => Add{field.Name}(items);"); 1287WriteLine($"public{(isNew ? " new " : " ")}{node.Name} Add{field.Name}(params {argType}[] items) => With{StripPost(field.Name, "Opt")}(this.{field.Name}.AddRange(items));"); 1300WriteLine($"internal override {baseType.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(items);"); 1315WriteLine($"var {varName} = this.{field.Name} ?? SyntaxFactory.{factoryName}();"); 1316WriteLine($"return With{StripPost(field.Name, "Opt")}({varName}.With{StripPost(referencedNodeField.Name, "Opt")}({varName}.{referencedNodeField.Name}.AddRange(items)));"); 1321WriteLine($" => With{StripPost(field.Name, "Opt")}(this.{field.Name}.With{StripPost(referencedNodeField.Name, "Opt")}(this.{field.Name}.{referencedNodeField.Name}.AddRange(items)));"); 1330WriteLine("public partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<SyntaxNode?>"); 1340WriteLine($"public override SyntaxNode? Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 1344WriteLine(" => node;"); 1366WriteLine(");"); 1376WriteLine("public static partial class SyntaxFactory"); 1470WriteLine(")"); 1476WriteLine("switch (kind)"); 1481WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1483WriteLine("default: throw new ArgumentException(nameof(kind));"); 1505WriteLine($"if ({pname}.Kind() != SyntaxKind.{kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 1509WriteLine($"switch ({pname}.Kind())"); 1513WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1515WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 1522WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 1555WriteLine(").CreateRed();"); 1611WriteLine($"private static SyntaxKind Get{StripPost(nd.Name, "Syntax")}{StripPost(field.Name, "Opt")}Kind(SyntaxKind kind)"); 1613WriteLine("=> kind switch"); 1620WriteLine($"SyntaxKind.{nKind.Name} => SyntaxKind.{pKind.Name},"); 1623WriteLine("_ => throw new ArgumentOutOfRangeException(),"); 1658WriteLine(")"); 1667WriteLine(");"); 1765WriteLine(")"); 1794WriteLine(");"); 1844WriteLine($"/// {line.TrimStart()}"); 1862WriteLine($"{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);");