@@ -722,12 +722,25 @@ func (tx *asyncTransformer) transformAsyncFunctionParameterList(node *ast.Node)
722722}
723723
724724func (tx * asyncTransformer ) transformAsyncFunctionBody (node * ast.Node , outerParameters * ast.NodeList ) * ast.Node {
725+ isArrow := node .Kind == ast .KindArrowFunction
726+ savedCapturedSuperProperties := tx .capturedSuperProperties
727+ savedHasSuperElementAccess := tx .hasSuperElementAccess
728+ savedHasSuperPropertyAssignment := tx .hasSuperPropertyAssignment
729+ savedSuperBinding := tx .superBinding
730+ savedSuperIndexBinding := tx .superIndexBinding
731+ if ! isArrow {
732+ tx .capturedSuperProperties = & collections.OrderedSet [string ]{}
733+ tx .hasSuperElementAccess = false
734+ tx .hasSuperPropertyAssignment = false
735+ tx .superBinding = tx .Factory ().NewUniqueNameEx ("_super" , printer.AutoGenerateOptions {Flags : printer .GeneratedIdentifierFlagsOptimistic | printer .GeneratedIdentifierFlagsFileLevel })
736+ tx .superIndexBinding = tx .Factory ().NewUniqueNameEx ("_superIndex" , printer.AutoGenerateOptions {Flags : printer .GeneratedIdentifierFlagsOptimistic | printer .GeneratedIdentifierFlagsFileLevel })
737+ }
738+
725739 innerParameters := (* ast .NodeList )(nil )
726740 if ! isSimpleParameterList (node .Parameters ()) {
727741 innerParameters = tx .EmitContext ().VisitParameters (node .ParameterList (), tx .Visitor ())
728742 }
729743
730- isArrow := node .Kind == ast .KindArrowFunction
731744 savedLexicalArguments := tx .lexicalArguments
732745 captureLexicalArguments := tx .lexicalArguments .binding == nil
733746 if captureLexicalArguments {
@@ -773,19 +786,6 @@ func (tx *asyncTransformer) transformAsyncFunctionBody(node *ast.Node, outerPara
773786 tx .recordDeclarationName (parameter , tx .enclosingFunctionParameterNames )
774787 }
775788
776- savedCapturedSuperProperties := tx .capturedSuperProperties
777- savedHasSuperElementAccess := tx .hasSuperElementAccess
778- savedHasSuperPropertyAssignment := tx .hasSuperPropertyAssignment
779- savedSuperBinding := tx .superBinding
780- savedSuperIndexBinding := tx .superIndexBinding
781- if ! isArrow {
782- tx .capturedSuperProperties = & collections.OrderedSet [string ]{}
783- tx .hasSuperElementAccess = false
784- tx .hasSuperPropertyAssignment = false
785- tx .superBinding = tx .Factory ().NewUniqueNameEx ("_super" , printer.AutoGenerateOptions {Flags : printer .GeneratedIdentifierFlagsOptimistic | printer .GeneratedIdentifierFlagsFileLevel })
786- tx .superIndexBinding = tx .Factory ().NewUniqueNameEx ("_superIndex" , printer.AutoGenerateOptions {Flags : printer .GeneratedIdentifierFlagsOptimistic | printer .GeneratedIdentifierFlagsFileLevel })
787- }
788-
789789 hasLexicalThis := tx .inHasLexicalThisContext ()
790790
791791 asyncBody := tx .transformAsyncFunctionBodyWorker (node .Body ())
@@ -799,6 +799,7 @@ func (tx *asyncTransformer) transformAsyncFunctionBody(node *ast.Node, outerPara
799799 emitSuperHelpers := tx .capturedSuperProperties != nil &&
800800 (tx .capturedSuperProperties .Size () > 0 || tx .hasSuperElementAccess )
801801 if emitSuperHelpers {
802+ innerParameters = tx .superAccessVisitor .VisitNodes (innerParameters )
802803 asyncBody = tx .substituteSuperAccessesInBody (asyncBody )
803804 }
804805
0 commit comments