Files

139 lines
3.5 KiB
C#
Raw Permalink Normal View History

2026-08-27 10:56:38 -06:00
using System;
using System.IO;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax;
internal class SyntaxTrivia : CSharpSyntaxNode
{
public readonly string Text;
public override bool IsTrivia => true;
internal override bool ShouldReuseInSerialization
{
get
{
if (base.Kind == SyntaxKind.WhitespaceTrivia)
{
return ((GreenNode)this).FullWidth < 42;
}
return false;
}
}
public override int Width => ((GreenNode)this).FullWidth;
internal SyntaxTrivia(SyntaxKind kind, string text, DiagnosticInfo[]? diagnostics = null, SyntaxAnnotation[]? annotations = null)
: base(kind, diagnostics, annotations, text.Length)
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
Text = text;
if (kind == SyntaxKind.PreprocessingMessageTrivia)
{
((GreenNode)this).flags = (NodeFlags)(((GreenNode)this).flags | 8);
}
}
internal SyntaxTrivia(ObjectReader reader)
: base(reader)
{
Text = reader.ReadString();
((GreenNode)this).FullWidth = Text.Length;
}
static SyntaxTrivia()
{
ObjectBinder.RegisterTypeReader(typeof(SyntaxTrivia), (Func<ObjectReader, IObjectWritable>)((ObjectReader r) => (IObjectWritable)(object)new SyntaxTrivia(r)));
}
internal override void WriteTo(ObjectWriter writer)
{
((GreenNode)this).WriteTo(writer);
writer.WriteString(Text);
}
internal static SyntaxTrivia Create(SyntaxKind kind, string text)
{
return new SyntaxTrivia(kind, text);
}
public override string ToFullString()
{
return Text;
}
public override string ToString()
{
return Text;
}
internal override GreenNode GetSlot(int index)
{
throw ExceptionUtilities.Unreachable("/_/src/Compilers/CSharp/Portable/Syntax/InternalSyntax/SyntaxTrivia.cs", 64);
}
public override int GetLeadingTriviaWidth()
{
return 0;
}
public override int GetTrailingTriviaWidth()
{
return 0;
}
internal override GreenNode SetDiagnostics(DiagnosticInfo[]? diagnostics)
{
return (GreenNode)(object)new SyntaxTrivia(base.Kind, Text, diagnostics, ((GreenNode)this).GetAnnotations());
}
internal override GreenNode SetAnnotations(SyntaxAnnotation[]? annotations)
{
return (GreenNode)(object)new SyntaxTrivia(base.Kind, Text, ((GreenNode)this).GetDiagnostics(), annotations);
}
public override TResult Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor)
{
return visitor.VisitTrivia(this);
}
public override void Accept(CSharpSyntaxVisitor visitor)
{
visitor.VisitTrivia(this);
}
protected override void WriteTriviaTo(TextWriter writer)
{
writer.Write(Text);
}
public static implicit operator SyntaxTrivia(SyntaxTrivia trivia)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
SyntaxToken val = default(SyntaxToken);
return new SyntaxTrivia(ref val, (GreenNode)(object)trivia, 0, 0);
}
public override bool IsEquivalentTo(GreenNode? other)
{
if (!((GreenNode)this).IsEquivalentTo(other))
{
return false;
}
if (Text != ((SyntaxTrivia)(object)other).Text)
{
return false;
}
return true;
}
internal override SyntaxNode CreateRed(SyntaxNode? parent, int position)
{
throw ExceptionUtilities.Unreachable("/_/src/Compilers/CSharp/Portable/Syntax/InternalSyntax/SyntaxTrivia.cs", 133);
}
}