(self, node: nodes.AssignBlock, frame: Frame)
| 1611 | self.pop_assign_tracking(frame) |
| 1612 | |
| 1613 | def visit_AssignBlock(self, node: nodes.AssignBlock, frame: Frame) -> None: |
| 1614 | self.push_assign_tracking() |
| 1615 | block_frame = frame.inner() |
| 1616 | # This is a special case. Since a set block always captures we |
| 1617 | # will disable output checks. This way one can use set blocks |
| 1618 | # toplevel even in extended templates. |
| 1619 | block_frame.require_output_check = False |
| 1620 | block_frame.symbols.analyze_node(node) |
| 1621 | self.enter_frame(block_frame) |
| 1622 | self.buffer(block_frame) |
| 1623 | self.blockvisit(node.body, block_frame) |
| 1624 | self.newline(node) |
| 1625 | self.visit(node.target, frame) |
| 1626 | self.write(" = (Markup if context.eval_ctx.autoescape else identity)(") |
| 1627 | if node.filter is not None: |
| 1628 | self.visit_Filter(node.filter, block_frame) |
| 1629 | else: |
| 1630 | self.write(f"concat({block_frame.buffer})") |
| 1631 | self.write(")") |
| 1632 | self.pop_assign_tracking(frame) |
| 1633 | self.leave_frame(block_frame) |
| 1634 | |
| 1635 | # -- Expression Visitors |
| 1636 |
nothing calls this directly
no test coverage detected