(self, node, frame)
| 1372 | self.pop_assign_tracking(frame) |
| 1373 | |
| 1374 | def visit_AssignBlock(self, node, frame): |
| 1375 | self.push_assign_tracking() |
| 1376 | block_frame = frame.inner() |
| 1377 | # This is a special case. Since a set block always captures we |
| 1378 | # will disable output checks. This way one can use set blocks |
| 1379 | # toplevel even in extended templates. |
| 1380 | block_frame.require_output_check = False |
| 1381 | block_frame.symbols.analyze_node(node) |
| 1382 | self.enter_frame(block_frame) |
| 1383 | self.buffer(block_frame) |
| 1384 | self.blockvisit(node.body, block_frame) |
| 1385 | self.newline(node) |
| 1386 | self.visit(node.target, frame) |
| 1387 | self.write(' = (Markup if context.eval_ctx.autoescape ' |
| 1388 | 'else identity)(') |
| 1389 | if node.filter is not None: |
| 1390 | self.visit_Filter(node.filter, block_frame) |
| 1391 | else: |
| 1392 | self.write('concat(%s)' % block_frame.buffer) |
| 1393 | self.write(')') |
| 1394 | self.pop_assign_tracking(frame) |
| 1395 | self.leave_frame(block_frame) |
| 1396 | |
| 1397 | # -- Expression Visitors |
| 1398 |
nothing calls this directly
no test coverage detected