| 61 | def _make_binop(op: str) -> t.Callable[["CodeGenerator", nodes.BinExpr, "Frame"], None]: |
| 62 | @optimizeconst |
| 63 | def visitor(self: "CodeGenerator", node: nodes.BinExpr, frame: Frame) -> None: |
| 64 | if ( |
| 65 | self.environment.sandboxed and op in self.environment.intercepted_binops # type: ignore |
| 66 | ): |
| 67 | self.write(f"environment.call_binop(context, {op!r}, ") |
| 68 | self.visit(node.left, frame) |
| 69 | self.write(", ") |
| 70 | self.visit(node.right, frame) |
| 71 | else: |
| 72 | self.write("(") |
| 73 | self.visit(node.left, frame) |
| 74 | self.write(f" {op} ") |
| 75 | self.visit(node.right, frame) |
| 76 | |
| 77 | self.write(")") |
| 78 | |
| 79 | return visitor |
| 80 | |