84 lines
2.4 KiB
C#
84 lines
2.4 KiB
C#
using System.Collections.Generic;
|
|
using Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax;
|
|
|
|
namespace Microsoft.CodeAnalysis.CSharp.Syntax;
|
|
|
|
public sealed class QueryExpressionSyntax : ExpressionSyntax
|
|
{
|
|
private FromClauseSyntax? fromClause;
|
|
|
|
private QueryBodySyntax? body;
|
|
|
|
public FromClauseSyntax FromClause => ((SyntaxNode)this).GetRedAtZero<FromClauseSyntax>(ref fromClause);
|
|
|
|
public QueryBodySyntax Body => ((SyntaxNode)this).GetRed<QueryBodySyntax>(ref body, 1);
|
|
|
|
internal QueryExpressionSyntax(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<FromClauseSyntax>(ref fromClause),
|
|
1 => ((SyntaxNode)this).GetRed<QueryBodySyntax>(ref body, 1),
|
|
_ => null,
|
|
});
|
|
}
|
|
|
|
internal override SyntaxNode? GetCachedSlot(int index)
|
|
{
|
|
return (SyntaxNode?)(index switch
|
|
{
|
|
0 => fromClause,
|
|
1 => body,
|
|
_ => null,
|
|
});
|
|
}
|
|
|
|
public override void Accept(CSharpSyntaxVisitor visitor)
|
|
{
|
|
visitor.VisitQueryExpression(this);
|
|
}
|
|
|
|
public override TResult? Accept<TResult>(CSharpSyntaxVisitor<TResult> visitor)
|
|
{
|
|
return visitor.VisitQueryExpression(this);
|
|
}
|
|
|
|
public QueryExpressionSyntax Update(FromClauseSyntax fromClause, QueryBodySyntax body)
|
|
{
|
|
if (fromClause != FromClause || body != Body)
|
|
{
|
|
QueryExpressionSyntax queryExpressionSyntax = SyntaxFactory.QueryExpression(fromClause, body);
|
|
SyntaxAnnotation[] annotations = ((SyntaxNode)this).GetAnnotations();
|
|
if (annotations == null || annotations.Length == 0)
|
|
{
|
|
return queryExpressionSyntax;
|
|
}
|
|
return queryExpressionSyntax.WithAnnotations(annotations);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public QueryExpressionSyntax WithFromClause(FromClauseSyntax fromClause)
|
|
{
|
|
return Update(fromClause, Body);
|
|
}
|
|
|
|
public QueryExpressionSyntax WithBody(QueryBodySyntax body)
|
|
{
|
|
return Update(FromClause, body);
|
|
}
|
|
|
|
public QueryExpressionSyntax AddBodyClauses(params QueryClauseSyntax[] items)
|
|
{
|
|
//IL_000d: 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)
|
|
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
|
|
return WithBody(Body.WithClauses(Body.Clauses.AddRange((IEnumerable<QueryClauseSyntax>)items)));
|
|
}
|
|
}
|