(node *ast.BlockOrExpression, visitor *ast.NodeVisitor)
| 893 | } |
| 894 | |
| 895 | func (c *EmitContext) VisitFunctionBody(node *ast.BlockOrExpression, visitor *ast.NodeVisitor) *ast.BlockOrExpression { |
| 896 | // !!! c.resumeVariableEnvironment() |
| 897 | updated := visitor.VisitNode(node) |
| 898 | declarations := c.EndVariableEnvironment() |
| 899 | if len(declarations) == 0 { |
| 900 | return updated |
| 901 | } |
| 902 | |
| 903 | if updated == nil { |
| 904 | return c.Factory.NewBlock(c.Factory.NewNodeList(declarations), true /*multiLine*/) |
| 905 | } |
| 906 | |
| 907 | if !ast.IsBlock(updated) { |
| 908 | statements := c.MergeEnvironment([]*ast.Statement{c.Factory.NewReturnStatement(updated)}, declarations) |
| 909 | return c.Factory.NewBlock(c.Factory.NewNodeList(statements), false /*multiLine*/) |
| 910 | } |
| 911 | |
| 912 | return c.Factory.UpdateBlock( |
| 913 | updated.AsBlock(), |
| 914 | c.MergeEnvironmentList(updated.StatementList(), declarations), |
| 915 | updated.AsBlock().MultiLine, |
| 916 | ) |
| 917 | } |
| 918 | |
| 919 | func (c *EmitContext) VisitIterationBody(body *ast.Statement, visitor *ast.NodeVisitor) *ast.Statement { |
| 920 | if body == nil { |
no test coverage detected