@@ -77,6 +77,16 @@ impl<'a> AstBuilder<'a> {
7777 mem:: replace ( stmts, self . new_vec ( ) )
7878 }
7979
80+ pub fn move_assignment_target (
81+ & self ,
82+ target : & mut AssignmentTarget < ' a > ,
83+ ) -> AssignmentTarget < ' a > {
84+ let ident = IdentifierReference :: new ( Span :: default ( ) , "" . into ( ) ) ;
85+ let dummy = self . simple_assignment_target_identifier ( ident) ;
86+ let dummy = AssignmentTarget :: SimpleAssignmentTarget ( dummy) ;
87+ mem:: replace ( target, dummy)
88+ }
89+
8090 pub fn program (
8191 & self ,
8292 span : Span ,
@@ -90,10 +100,6 @@ impl<'a> AstBuilder<'a> {
90100
91101 /* ---------- Literals ---------- */
92102
93- pub fn string_literal ( & self , span : Span , value : Atom ) -> StringLiteral {
94- StringLiteral { span, value }
95- }
96-
97103 pub fn number_literal (
98104 & self ,
99105 span : Span ,
@@ -415,6 +421,13 @@ impl<'a> AstBuilder<'a> {
415421 SimpleAssignmentTarget :: AssignmentTargetIdentifier ( self . alloc ( ident) )
416422 }
417423
424+ pub fn simple_assignment_target_member_expression (
425+ & self ,
426+ expr : MemberExpression < ' a > ,
427+ ) -> SimpleAssignmentTarget < ' a > {
428+ SimpleAssignmentTarget :: MemberAssignmentTarget ( self . alloc ( expr) )
429+ }
430+
418431 pub fn await_expression ( & self , span : Span , argument : Expression < ' a > ) -> Expression < ' a > {
419432 Expression :: AwaitExpression ( self . alloc ( AwaitExpression { span, argument } ) )
420433 }
@@ -496,31 +509,54 @@ impl<'a> AstBuilder<'a> {
496509 Expression :: MemberExpression ( self . alloc ( expr) )
497510 }
498511
512+ pub fn computed_member (
513+ & self ,
514+ span : Span ,
515+ object : Expression < ' a > ,
516+ expression : Expression < ' a > ,
517+ optional : bool , // for optional chaining
518+ ) -> MemberExpression < ' a > {
519+ MemberExpression :: ComputedMemberExpression ( ComputedMemberExpression {
520+ span,
521+ object,
522+ expression,
523+ optional,
524+ } )
525+ }
526+
499527 pub fn computed_member_expression (
500528 & self ,
501529 span : Span ,
502530 object : Expression < ' a > ,
503531 expression : Expression < ' a > ,
504532 optional : bool , // for optional chaining
505533 ) -> Expression < ' a > {
506- self . member_expression ( MemberExpression :: ComputedMemberExpression (
507- ComputedMemberExpression { span, object, expression, optional } ,
508- ) )
534+ self . member_expression ( self . computed_member ( span, object, expression, optional) )
509535 }
510536
511- pub fn static_member_expression (
537+ pub fn static_member (
512538 & self ,
513539 span : Span ,
514540 object : Expression < ' a > ,
515541 property : IdentifierName ,
516542 optional : bool , // for optional chaining
517- ) -> Expression < ' a > {
518- self . member_expression ( MemberExpression :: StaticMemberExpression ( StaticMemberExpression {
543+ ) -> MemberExpression < ' a > {
544+ MemberExpression :: StaticMemberExpression ( StaticMemberExpression {
519545 span,
520546 object,
521547 property,
522548 optional,
523- } ) )
549+ } )
550+ }
551+
552+ pub fn static_member_expression (
553+ & self ,
554+ span : Span ,
555+ object : Expression < ' a > ,
556+ property : IdentifierName ,
557+ optional : bool , // for optional chaining
558+ ) -> Expression < ' a > {
559+ self . member_expression ( self . static_member ( span, object, property, optional) )
524560 }
525561
526562 pub fn private_field_expression (
0 commit comments