@@ -2935,7 +2935,20 @@ internal override GreenNode SetDiagnostics(RazorDiagnostic[] diagnostics)
29352935 => new CSharpImplicitExpressionBodySyntax ( Kind , _csharpCode , diagnostics ) ;
29362936}
29372937
2938- internal sealed partial class RazorDirectiveSyntax : CSharpRazorBlockSyntax
2938+ internal abstract partial class BaseRazorDirectiveSyntax : CSharpRazorBlockSyntax
2939+ {
2940+ internal BaseRazorDirectiveSyntax ( SyntaxKind kind , RazorDiagnostic [ ] diagnostics )
2941+ : base ( kind , diagnostics )
2942+ {
2943+ }
2944+
2945+ internal BaseRazorDirectiveSyntax ( SyntaxKind kind )
2946+ : base ( kind )
2947+ {
2948+ }
2949+ }
2950+
2951+ internal sealed partial class RazorDirectiveSyntax : BaseRazorDirectiveSyntax
29392952{
29402953 internal readonly CSharpTransitionSyntax _transition ;
29412954 internal readonly CSharpSyntaxNode _body ;
@@ -2998,6 +3011,69 @@ internal override GreenNode SetDiagnostics(RazorDiagnostic[] diagnostics)
29983011 => new RazorDirectiveSyntax ( Kind , _transition , _body , _directiveDescriptor , diagnostics ) ;
29993012}
30003013
3014+ internal sealed partial class RazorUsingDirectiveSyntax : BaseRazorDirectiveSyntax
3015+ {
3016+ internal readonly CSharpTransitionSyntax _transition ;
3017+ internal readonly CSharpSyntaxNode _body ;
3018+ internal readonly DirectiveDescriptor _directiveDescriptor ;
3019+
3020+ internal RazorUsingDirectiveSyntax ( SyntaxKind kind , CSharpTransitionSyntax transition , CSharpSyntaxNode body , DirectiveDescriptor directiveDescriptor , RazorDiagnostic [ ] diagnostics )
3021+ : base ( kind , diagnostics )
3022+ {
3023+ SlotCount = 2 ;
3024+ AdjustFlagsAndWidth ( transition ) ;
3025+ _transition = transition ;
3026+ AdjustFlagsAndWidth ( body ) ;
3027+ _body = body ;
3028+ _directiveDescriptor = directiveDescriptor ;
3029+ }
3030+
3031+ internal RazorUsingDirectiveSyntax ( SyntaxKind kind , CSharpTransitionSyntax transition , CSharpSyntaxNode body , DirectiveDescriptor directiveDescriptor )
3032+ : base ( kind )
3033+ {
3034+ SlotCount = 2 ;
3035+ AdjustFlagsAndWidth ( transition ) ;
3036+ _transition = transition ;
3037+ AdjustFlagsAndWidth ( body ) ;
3038+ _body = body ;
3039+ _directiveDescriptor = directiveDescriptor ;
3040+ }
3041+
3042+ public override CSharpTransitionSyntax Transition => _transition ;
3043+ public override CSharpSyntaxNode Body => _body ;
3044+ public DirectiveDescriptor DirectiveDescriptor => _directiveDescriptor ;
3045+
3046+ internal override GreenNode GetSlot ( int index )
3047+ => index switch
3048+ {
3049+ 0 => _transition ,
3050+ 1 => _body ,
3051+ _ => null
3052+ } ;
3053+
3054+ internal override SyntaxNode CreateRed ( SyntaxNode parent , int position ) => new Syntax . RazorUsingDirectiveSyntax ( this , parent , position ) ;
3055+
3056+ public override TResult Accept < TResult > ( SyntaxVisitor < TResult > visitor ) => visitor . VisitRazorUsingDirective ( this ) ;
3057+ public override void Accept ( SyntaxVisitor visitor ) => visitor . VisitRazorUsingDirective ( this ) ;
3058+
3059+ public RazorUsingDirectiveSyntax Update ( CSharpTransitionSyntax transition , CSharpSyntaxNode body , DirectiveDescriptor directiveDescriptor )
3060+ {
3061+ if ( transition != Transition || body != Body )
3062+ {
3063+ var newNode = SyntaxFactory . RazorUsingDirective ( transition , body , directiveDescriptor ) ;
3064+ var diags = GetDiagnostics ( ) ;
3065+ if ( diags != null && diags . Length > 0 )
3066+ newNode = newNode . WithDiagnosticsGreen ( diags ) ;
3067+ return newNode ;
3068+ }
3069+
3070+ return this ;
3071+ }
3072+
3073+ internal override GreenNode SetDiagnostics ( RazorDiagnostic [ ] diagnostics )
3074+ => new RazorUsingDirectiveSyntax ( Kind , _transition , _body , _directiveDescriptor , diagnostics ) ;
3075+ }
3076+
30013077internal sealed partial class RazorDirectiveBodySyntax : CSharpSyntaxNode
30023078{
30033079 internal readonly RazorSyntaxNode _keyword ;
@@ -3104,6 +3180,7 @@ internal partial class SyntaxVisitor<TResult>
31043180 public virtual TResult VisitCSharpImplicitExpression ( CSharpImplicitExpressionSyntax node ) => DefaultVisit ( node ) ;
31053181 public virtual TResult VisitCSharpImplicitExpressionBody ( CSharpImplicitExpressionBodySyntax node ) => DefaultVisit ( node ) ;
31063182 public virtual TResult VisitRazorDirective ( RazorDirectiveSyntax node ) => DefaultVisit ( node ) ;
3183+ public virtual TResult VisitRazorUsingDirective ( RazorUsingDirectiveSyntax node ) => DefaultVisit ( node ) ;
31073184 public virtual TResult VisitRazorDirectiveBody ( RazorDirectiveBodySyntax node ) => DefaultVisit ( node ) ;
31083185}
31093186
@@ -3148,6 +3225,7 @@ internal partial class SyntaxVisitor
31483225 public virtual void VisitCSharpImplicitExpression ( CSharpImplicitExpressionSyntax node ) => DefaultVisit ( node ) ;
31493226 public virtual void VisitCSharpImplicitExpressionBody ( CSharpImplicitExpressionBodySyntax node ) => DefaultVisit ( node ) ;
31503227 public virtual void VisitRazorDirective ( RazorDirectiveSyntax node ) => DefaultVisit ( node ) ;
3228+ public virtual void VisitRazorUsingDirective ( RazorUsingDirectiveSyntax node ) => DefaultVisit ( node ) ;
31513229 public virtual void VisitRazorDirectiveBody ( RazorDirectiveBodySyntax node ) => DefaultVisit ( node ) ;
31523230}
31533231
@@ -3270,6 +3348,9 @@ public override GreenNode VisitCSharpImplicitExpressionBody(CSharpImplicitExpres
32703348 public override GreenNode VisitRazorDirective ( RazorDirectiveSyntax node )
32713349 => node . Update ( ( CSharpTransitionSyntax ) Visit ( node . Transition ) , ( CSharpSyntaxNode ) Visit ( node . Body ) , node . DirectiveDescriptor ) ;
32723350
3351+ public override GreenNode VisitRazorUsingDirective ( RazorUsingDirectiveSyntax node )
3352+ => node . Update ( ( CSharpTransitionSyntax ) Visit ( node . Transition ) , ( CSharpSyntaxNode ) Visit ( node . Body ) , node . DirectiveDescriptor ) ;
3353+
32733354 public override GreenNode VisitRazorDirectiveBody ( RazorDirectiveBodySyntax node )
32743355 => node . Update ( ( RazorSyntaxNode ) Visit ( node . Keyword ) , ( CSharpCodeBlockSyntax ) Visit ( node . CSharpCode ) ) ;
32753356}
@@ -3663,6 +3744,16 @@ public static RazorDirectiveSyntax RazorDirective(CSharpTransitionSyntax transit
36633744 return result ;
36643745 }
36653746
3747+ public static RazorUsingDirectiveSyntax RazorUsingDirective ( CSharpTransitionSyntax transition , CSharpSyntaxNode body , DirectiveDescriptor directiveDescriptor )
3748+ {
3749+ ArgHelper . ThrowIfNull ( transition ) ;
3750+ ArgHelper . ThrowIfNull ( body ) ;
3751+
3752+ var result = new RazorUsingDirectiveSyntax ( SyntaxKind . RazorUsingDirective , transition , body , directiveDescriptor ) ;
3753+
3754+ return result ;
3755+ }
3756+
36663757 public static RazorDirectiveBodySyntax RazorDirectiveBody ( RazorSyntaxNode keyword , CSharpCodeBlockSyntax csharpCode )
36673758 {
36683759 ArgHelper . ThrowIfNull ( keyword ) ;
@@ -3715,6 +3806,7 @@ internal static IEnumerable<Type> GetNodeTypes()
37153806 typeof ( CSharpImplicitExpressionSyntax ) ,
37163807 typeof ( CSharpImplicitExpressionBodySyntax ) ,
37173808 typeof ( RazorDirectiveSyntax ) ,
3809+ typeof ( RazorUsingDirectiveSyntax ) ,
37183810 typeof ( RazorDirectiveBodySyntax )
37193811 } ;
37203812 }
0 commit comments