33use oxc_ast:: ast:: * ;
44use oxc_span:: GetSpan ;
55
6- use crate :: { ParserImpl , diagnostics} ;
6+ use crate :: { ParserConfig , ParserImpl , diagnostics} ;
77
8- pub trait CoverGrammar < ' a , T > : Sized {
9- fn cover ( value : T , p : & mut ParserImpl < ' a > ) -> Self ;
8+ pub trait CoverGrammar < ' a , T , C : ParserConfig > : Sized {
9+ fn cover ( value : T , p : & mut ParserImpl < ' a , C > ) -> Self ;
1010}
1111
12- impl < ' a > CoverGrammar < ' a , Expression < ' a > > for AssignmentTarget < ' a > {
13- fn cover ( expr : Expression < ' a > , p : & mut ParserImpl < ' a > ) -> Self {
12+ impl < ' a , C : ParserConfig > CoverGrammar < ' a , Expression < ' a > , C > for AssignmentTarget < ' a > {
13+ fn cover ( expr : Expression < ' a > , p : & mut ParserImpl < ' a , C > ) -> Self {
1414 match expr {
1515 Expression :: ArrayExpression ( array_expr) => {
1616 let pat = ArrayAssignmentTarget :: cover ( array_expr. unbox ( ) , p) ;
@@ -25,8 +25,8 @@ impl<'a> CoverGrammar<'a, Expression<'a>> for AssignmentTarget<'a> {
2525 }
2626}
2727
28- impl < ' a > CoverGrammar < ' a , Expression < ' a > > for SimpleAssignmentTarget < ' a > {
29- fn cover ( expr : Expression < ' a > , p : & mut ParserImpl < ' a > ) -> Self {
28+ impl < ' a , C : ParserConfig > CoverGrammar < ' a , Expression < ' a > , C > for SimpleAssignmentTarget < ' a > {
29+ fn cover ( expr : Expression < ' a > , p : & mut ParserImpl < ' a , C > ) -> Self {
3030 match expr {
3131 Expression :: Identifier ( ident) => {
3232 SimpleAssignmentTarget :: AssignmentTargetIdentifier ( ident)
@@ -90,8 +90,8 @@ impl<'a> CoverGrammar<'a, Expression<'a>> for SimpleAssignmentTarget<'a> {
9090 }
9191}
9292
93- impl < ' a > CoverGrammar < ' a , ArrayExpression < ' a > > for ArrayAssignmentTarget < ' a > {
94- fn cover ( expr : ArrayExpression < ' a > , p : & mut ParserImpl < ' a > ) -> Self {
93+ impl < ' a , C : ParserConfig > CoverGrammar < ' a , ArrayExpression < ' a > , C > for ArrayAssignmentTarget < ' a > {
94+ fn cover ( expr : ArrayExpression < ' a > , p : & mut ParserImpl < ' a , C > ) -> Self {
9595 let mut elements = p. ast . vec ( ) ;
9696 let mut rest = None ;
9797
@@ -136,8 +136,8 @@ impl<'a> CoverGrammar<'a, ArrayExpression<'a>> for ArrayAssignmentTarget<'a> {
136136 }
137137}
138138
139- impl < ' a > CoverGrammar < ' a , Expression < ' a > > for AssignmentTargetMaybeDefault < ' a > {
140- fn cover ( expr : Expression < ' a > , p : & mut ParserImpl < ' a > ) -> Self {
139+ impl < ' a , C : ParserConfig > CoverGrammar < ' a , Expression < ' a > , C > for AssignmentTargetMaybeDefault < ' a > {
140+ fn cover ( expr : Expression < ' a > , p : & mut ParserImpl < ' a , C > ) -> Self {
141141 match expr {
142142 Expression :: AssignmentExpression ( assignment_expr) => {
143143 if assignment_expr. operator != AssignmentOperator :: Assign {
@@ -156,14 +156,16 @@ impl<'a> CoverGrammar<'a, Expression<'a>> for AssignmentTargetMaybeDefault<'a> {
156156 }
157157}
158158
159- impl < ' a > CoverGrammar < ' a , AssignmentExpression < ' a > > for AssignmentTargetWithDefault < ' a > {
160- fn cover ( expr : AssignmentExpression < ' a > , p : & mut ParserImpl < ' a > ) -> Self {
159+ impl < ' a , C : ParserConfig > CoverGrammar < ' a , AssignmentExpression < ' a > , C >
160+ for AssignmentTargetWithDefault < ' a >
161+ {
162+ fn cover ( expr : AssignmentExpression < ' a > , p : & mut ParserImpl < ' a , C > ) -> Self {
161163 p. ast . assignment_target_with_default ( expr. span , expr. left , expr. right )
162164 }
163165}
164166
165- impl < ' a > CoverGrammar < ' a , ObjectExpression < ' a > > for ObjectAssignmentTarget < ' a > {
166- fn cover ( expr : ObjectExpression < ' a > , p : & mut ParserImpl < ' a > ) -> Self {
167+ impl < ' a , C : ParserConfig > CoverGrammar < ' a , ObjectExpression < ' a > , C > for ObjectAssignmentTarget < ' a > {
168+ fn cover ( expr : ObjectExpression < ' a > , p : & mut ParserImpl < ' a , C > ) -> Self {
167169 let mut properties = p. ast . vec ( ) ;
168170 let mut rest = None ;
169171
@@ -203,8 +205,8 @@ impl<'a> CoverGrammar<'a, ObjectExpression<'a>> for ObjectAssignmentTarget<'a> {
203205 }
204206}
205207
206- impl < ' a > CoverGrammar < ' a , ObjectProperty < ' a > > for AssignmentTargetProperty < ' a > {
207- fn cover ( property : ObjectProperty < ' a > , p : & mut ParserImpl < ' a > ) -> Self {
208+ impl < ' a , C : ParserConfig > CoverGrammar < ' a , ObjectProperty < ' a > , C > for AssignmentTargetProperty < ' a > {
209+ fn cover ( property : ObjectProperty < ' a > , p : & mut ParserImpl < ' a , C > ) -> Self {
208210 if property. shorthand {
209211 let binding = match property. key {
210212 PropertyKey :: StaticIdentifier ( ident) => {
0 commit comments