87 lines
2.7 KiB
C#
87 lines
2.7 KiB
C#
using System.Collections.Generic;
|
|
using Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax;
|
|
|
|
namespace Microsoft.CodeAnalysis.CSharp.Syntax;
|
|
|
|
public sealed class NameMemberCrefSyntax : MemberCrefSyntax
|
|
{
|
|
private TypeSyntax? name;
|
|
|
|
private CrefParameterListSyntax? parameters;
|
|
|
|
public TypeSyntax Name => ((SyntaxNode)this).GetRedAtZero<TypeSyntax>(ref name);
|
|
|
|
public CrefParameterListSyntax? Parameters => ((SyntaxNode)this).GetRed<CrefParameterListSyntax>(ref parameters, 1);
|
|
|
|
internal NameMemberCrefSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position)
|
|
: base(green, parent, position)
|
|
{
|
|
}
|
|
|
|
internal override SyntaxNode? GetNodeSlot(int index)
|
|
{
|
|
return (SyntaxNode?)(index switch
|
|
{
|
|
0 => ((SyntaxNode)this).GetRedAtZero<TypeSyntax>(ref name),
|
|
1 => ((SyntaxNode)this).GetRed<CrefParameterListSyntax>(ref parameters, 1),
|
|
_ => null,
|
|
});
|
|
}
|
|
|
|
internal override SyntaxNode? GetCachedSlot(int index)
|
|
{
|
|
return (SyntaxNode?)(index switch
|
|
{
|
|
0 => name,
|
|
1 => parameters,
|
|
_ => null,
|
|
});
|
|
}
|
|
|
|
public override void Accept(CSharpSyntaxVisitor visitor)
|
|
{
|
|
visitor.VisitNameMemberCref(this);
|
|
}
|
|
|
|
public override TResult? Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor)
|
|
{
|
|
return visitor.VisitNameMemberCref(this);
|
|
}
|
|
|
|
public NameMemberCrefSyntax Update(TypeSyntax name, CrefParameterListSyntax? parameters)
|
|
{
|
|
if (name != Name || parameters != Parameters)
|
|
{
|
|
NameMemberCrefSyntax nameMemberCrefSyntax = SyntaxFactory.NameMemberCref(name, parameters);
|
|
SyntaxAnnotation[] annotations = ((SyntaxNode)this).GetAnnotations();
|
|
if (annotations == null || annotations.Length == 0)
|
|
{
|
|
return nameMemberCrefSyntax;
|
|
}
|
|
return nameMemberCrefSyntax.WithAnnotations(annotations);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public NameMemberCrefSyntax WithName(TypeSyntax name)
|
|
{
|
|
return Update(name, Parameters);
|
|
}
|
|
|
|
public NameMemberCrefSyntax WithParameters(CrefParameterListSyntax? parameters)
|
|
{
|
|
return Update(Name, parameters);
|
|
}
|
|
|
|
public NameMemberCrefSyntax AddParametersParameters(params CrefParameterSyntax[] items)
|
|
{
|
|
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
|
|
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
|
|
//IL_0025: 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)
|
|
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
|
|
CrefParameterListSyntax crefParameterListSyntax = Parameters ?? SyntaxFactory.CrefParameterList();
|
|
return WithParameters(crefParameterListSyntax.WithParameters(crefParameterListSyntax.Parameters.AddRange((IEnumerable<CrefParameterSyntax>)items)));
|
|
}
|
|
}
|