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)})]"); 70WriteLine("// <auto-generated />"); 72WriteLine("#nullable enable"); 74WriteLine("using System;"); 75WriteLine("using System.Collections.Generic;"); 76WriteLine("using System.Diagnostics.CodeAnalysis;"); 77WriteLine("using Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 78WriteLine("using Roslyn.Utilities;"); 79WriteLine("using CoreSyntax = Microsoft.CodeAnalysis.Syntax.InternalSyntax;"); 87WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax;"); 98WriteLine("namespace Microsoft.CodeAnalysis.CSharp.Syntax;"); 105WriteLine("namespace Microsoft.CodeAnalysis.CSharp;"); 106WriteLine("using System.Diagnostics.CodeAnalysis;"); 107WriteLine("using Microsoft.CodeAnalysis.CSharp.Syntax;"); 130WriteLine($"internal abstract partial class {node.Name} : {node.Base}"); 134WriteLine($"internal {node.Name}(SyntaxKind kind, DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 135WriteLine(" : base(kind, diagnostics, annotations)"); 139WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 144WriteLine($"internal {node.Name}(SyntaxKind kind)"); 145WriteLine(" : base(kind)"); 149WriteLine("SetFlags(NodeFlags.ContainsDirectives);"); 166WriteLine($"public abstract {(IsNew(field) ? "new " : "")}CoreSyntax.{field.Type} {field.Name} {{ get; }}"); 170WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{(GetFieldType(field, green: true))} {field.Name} {{ get; }}"); 180WriteLine($"public abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 189WriteLine($"internal sealed partial class {node.Name} : {node.Base}"); 198WriteLine($"internal readonly {type} {CamelCase(field.Name)};"); 203WriteLine($"internal readonly {field.Type} {CamelCase(field.Name)};"); 212WriteLine(", DiagnosticInfo[]? diagnostics, SyntaxAnnotation[]? annotations)"); 213WriteLine(" : base(kind, diagnostics, annotations)"); 224WriteLine(", SyntaxFactoryContext context)"); 225WriteLine(" : base(kind)"); 227WriteLine("this.SetFactoryContext(context);"); 237WriteLine(")"); 238WriteLine(" : base(kind)"); 251WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 256WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(new CoreSyntax.SyntaxList<CSharpSyntaxNode>(this.{CamelCase(field.Name)}));"); 261WriteLine($"public {OverrideOrNewModifier(field)}{type} {field.Name} => new {type}(this.{CamelCase(field.Name)});"); 265WriteLine($"public {OverrideOrNewModifier(field)}{(GetFieldType(field, green: true))} {field.Name} => this.{CamelCase(field.Name)};"); 272WriteLine($"public {OverrideOrNewModifier(field)}{field.Type} {field.Name} => this.{CamelCase(field.Name)};"); 281WriteLine(" => null;"); 287WriteLine($"=> index == 0 ? this.{CamelCase(nodeFields[0].Name)} : null;"); 294WriteLine("=> index switch"); 299WriteLine($"{i} => this.{CamelCase(field.Name)},"); 301WriteLine("_ => null,"); 307WriteLine($"internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) => new CSharp.Syntax.{node.Name}(this, parent, position);"); 335WriteLine("SetFlags(NodeFlags.ContainsAttributes);"); 339WriteLine($"this.SlotCount = {nodeFields.Count};"); 345WriteLine($"if ({CamelCase(field.Name)} != null)"); 347WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 348WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 353WriteLine($"this.AdjustFlagsAndWidth({CamelCase(field.Name)});"); 354WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 360WriteLine($"this.{CamelCase(field.Name)} = {CamelCase(field.Name)};"); 367WriteLine("internal override GreenNode SetAnnotations(SyntaxAnnotation[]? annotations)"); 374WriteLine(");"); 380WriteLine("internal override GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics)"); 387WriteLine(");"); 393WriteLine($"public override void Accept(CSharpSyntaxVisitor visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 394WriteLine($"public override TResult Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor) => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 408WriteLine("internal partial class CSharpSyntaxVisitor" + (withResult ? "<TResult>" : "")); 412WriteLine($"public virtual {(withResult ? "TResult" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 432WriteLine(")"); 449WriteLine(")"); 455WriteLine(");"); 456WriteLine("var diags = GetDiagnostics();"); 457WriteLine("if (diags?.Length > 0)"); 458WriteLine(" newNode = newNode.WithDiagnosticsGreen(diags);"); 459WriteLine("var annotations = GetAnnotations();"); 460WriteLine("if (annotations?.Length > 0)"); 461WriteLine(" newNode = newNode.WithAnnotationsGreen(annotations);"); 462WriteLine("return newNode;"); 467WriteLine("return this;"); 476WriteLine("internal partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<CSharpSyntaxNode>"); 486WriteLine($"public override CSharpSyntaxNode Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 491WriteLine("=> node;"); 505WriteLine(");"); 518WriteLine("internal partial class ContextAwareSyntax"); 521WriteLine("private SyntaxFactoryContext context;"); 524WriteLine("public ContextAwareSyntax(SyntaxFactoryContext context)"); 525WriteLine(" => this.context = context;"); 535WriteLine("internal static partial class SyntaxFactory"); 557WriteLine(")"); 563WriteLine("switch (kind)"); 568WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 570WriteLine("default: throw new ArgumentException(nameof(kind));"); 582WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 588WriteLine($"if ({CamelCase(field.Name)} != null)"); 594WriteLine($"if ({pname}.Kind != SyntaxKind.{field.Kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 598WriteLine($"switch ({pname}.Kind)"); 609WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 612WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 645WriteLine("int hash;"); 657WriteLine(", out hash);"); 659WriteLine($"if (cached != null) return ({nd.Name})cached;"); 665WriteLine(");"); 667WriteLine("if (hash >= 0)"); 671WriteLine("SyntaxNodeCache.AddNode(result, hash);"); 677WriteLine("return result;"); 684WriteLine(");"); 745WriteLine($"public abstract partial class {node.Name} : {node.Base}"); 747WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 748WriteLine(" : base(green, parent, position)"); 764WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{fieldType} {field.Name} {{ get; }}"); 765WriteLine($"public {node.Name} With{field.Name}({fieldType} {CamelCase(field.Name)}) => With{field.Name}Core({CamelCase(field.Name)});"); 766WriteLine($"internal abstract {node.Name} With{field.Name}Core({fieldType} {CamelCase(field.Name)});"); 772WriteLine($"public {node.Name} Add{field.Name}(params {argType}[] items) => Add{field.Name}Core(items);"); 773WriteLine($"internal abstract {node.Name} Add{field.Name}Core(params {argType}[] items);"); 787WriteLine($"public {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 788WriteLine($"internal abstract {node.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items);"); 801WriteLine($"{"public"} abstract {(IsNew(field) ? "new " : "")}{field.Type} {field.Name} {{ get; }}"); 815WriteLine($"public new {node.Name} With{baseField.Name}({GetRedFieldType(baseField)} {CamelCase(baseField.Name)}) => ({node.Name})With{baseField.Name}Core({CamelCase(baseField.Name)});"); 824WriteLine($"public new {node.Name} Add{baseField.Name}(params {argType}[] items) => ({node.Name})Add{baseField.Name}Core(items);"); 839WriteLine($"public new {baseType.Name} Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}(params {argType}[] items) => Add{StripPost(baseField.Name, "Opt")}{referencedNodeField.Name}Core(items);"); 864WriteLine($"public sealed partial class {node.Name} : {node.Base}"); 877WriteLine($"private SyntaxNode? {CamelCase(field.Name)};"); 882WriteLine($"private {type} {CamelCase(field.Name)};"); 889WriteLine($"internal {node.Name}(InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)"); 890WriteLine(" : base(green, parent, position)"); 896WriteLine("Validate();"); 904WriteLine("private partial void Validate();"); 921WriteLine("get"); 923WriteLine($"var slot = ((Syntax.InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)};"); 924WriteLine($"return slot != null ? new SyntaxToken(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 930WriteLine($" => new SyntaxToken(this, ((InternalSyntax.{node.Name})this.Green).{CamelCase(field.Name)}, {GetChildPosition(i)}, {GetChildIndex(i)});"); 937WriteLine($"public {OverrideOrNewModifier(field)}SyntaxTokenList {field.Name}"); 939WriteLine("get"); 941WriteLine($"var slot = this.Green.GetSlot({i});"); 942WriteLine($"return slot != null ? new SyntaxTokenList(this, slot, {GetChildPosition(i)}, {GetChildIndex(i)}) : default;"); 954WriteLine($" => new {field.Type}(GetRed(ref this.{CamelCase(field.Name)}, {i}));"); 960WriteLine("get"); 963WriteLine($"var red = GetRed(ref this.{CamelCase(field.Name)}, {i});"); 964WriteLine($"return red != null ? new {field.Type}(red, {GetChildIndex(i)}) : default;"); 977WriteLine($" => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix};"); 981WriteLine($" => GetRed(ref this.{CamelCase(field.Name)}, {i}){suffix};"); 992WriteLine($"{"public"} {OverrideOrNewModifier(field)}{field.Type} {field.Name} => ((InternalSyntax.{node.Name})this.Green).{field.Name};"); 1004WriteLine(" => null;"); 1014WriteLine($" => index == {index} ? {whenTrue}{suffix} : null;"); 1020WriteLine("=> index switch"); 1027WriteLine($"{index} => GetRedAtZero(ref this.{CamelCase(field.Name)}){suffix},"); 1031WriteLine($"{index} => GetRed(ref this.{CamelCase(field.Name)}, {index}){suffix},"); 1034WriteLine("_ => null,"); 1050WriteLine(" => null;"); 1055WriteLine($" => index == {index} ? this.{CamelCase(field.Name)} : null;"); 1061WriteLine("=> index switch"); 1065WriteLine($"{index} => this.{CamelCase(field.Name)},"); 1067WriteLine("_ => null,"); 1114WriteLine($"public override {(genericResult ? "TResult?" : "void")} Accept{genericArgs}(CSharpSyntaxVisitor{genericArgs} visitor){(genericResult ? " where TResult : default" : "")} => visitor.Visit{StripPost(node.Name, "Syntax")}(this);"); 1129WriteLine("public partial class CSharpSyntaxVisitor" + genericArgs); 1139WriteLine($"public virtual {(genericResult ? "TResult?" : "void")} Visit{StripPost(node.Name, "Syntax")}({node.Name} node) => this.DefaultVisit(node);"); 1150WriteLine(")"); 1167WriteLine(")"); 1173WriteLine(");"); 1174WriteLine("var annotations = GetAnnotations();"); 1175WriteLine("return annotations?.Length > 0 ? newNode.WithAnnotations(annotations) : newNode;"); 1180WriteLine("return this;"); 1206WriteLine(");"); 1220WriteLine(");"); 1309WriteLine($"internal override {baseType.Name} Add{field.Name}Core(params {baseArgType}[] items) => Add{field.Name}(items);"); 1315WriteLine($"public{(isNew ? " new " : " ")}{node.Name} Add{field.Name}(params {argType}[] items) => With{StripPost(field.Name, "Opt")}(this.{field.Name}.AddRange(items));"); 1328WriteLine($"internal override {baseType.Name} Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}Core(params {argType}[] items) => Add{StripPost(field.Name, "Opt")}{referencedNodeField.Name}(items);"); 1343WriteLine($"var {varName} = this.{field.Name} ?? SyntaxFactory.{factoryName}();"); 1344WriteLine($"return With{StripPost(field.Name, "Opt")}({varName}.With{StripPost(referencedNodeField.Name, "Opt")}({varName}.{referencedNodeField.Name}.AddRange(items)));"); 1349WriteLine($" => With{StripPost(field.Name, "Opt")}(this.{field.Name}.With{StripPost(referencedNodeField.Name, "Opt")}(this.{field.Name}.{referencedNodeField.Name}.AddRange(items)));"); 1358WriteLine("public partial class CSharpSyntaxRewriter : CSharpSyntaxVisitor<SyntaxNode?>"); 1368WriteLine($"public override SyntaxNode? Visit{StripPost(node.Name, "Syntax")}({node.Name} node)"); 1372WriteLine(" => node;"); 1394WriteLine(");"); 1404WriteLine("public static partial class SyntaxFactory"); 1498WriteLine(")"); 1504WriteLine("switch (kind)"); 1509WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1511WriteLine("default: throw new ArgumentException(nameof(kind));"); 1533WriteLine($"if ({pname}.Kind() != SyntaxKind.{kinds[0].Name}) throw new ArgumentException(nameof({pname}));"); 1537WriteLine($"switch ({pname}.Kind())"); 1541WriteLine($"case SyntaxKind.{kind.Name}:{(kind == kinds.Last() ? " break;" : "")}"); 1543WriteLine($"default: throw new ArgumentException(nameof({pname}));"); 1550WriteLine($"if ({CamelCase(field.Name)} == null) throw new ArgumentNullException(nameof({CamelCase(field.Name)}));"); 1583WriteLine(").CreateRed();"); 1639WriteLine($"private static SyntaxKind Get{StripPost(nd.Name, "Syntax")}{StripPost(field.Name, "Opt")}Kind(SyntaxKind kind)"); 1641WriteLine("=> kind switch"); 1648WriteLine($"SyntaxKind.{nKind.Name} => SyntaxKind.{pKind.Name},"); 1651WriteLine("_ => throw new ArgumentOutOfRangeException(),"); 1686WriteLine(")"); 1695WriteLine(");"); 1793WriteLine(")"); 1822WriteLine(");"); 1872WriteLine($"/// {line.TrimStart()}"); 1890WriteLine($"{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);");