| 296 | |
| 297 | @dispatch.register(token="relax", type_name="post_visit_local_function") |
| 298 | def post_visit_local_function(self: Parser, node: doc.Expr) -> None: |
| 299 | ir_builder = IRBuilder.current() |
| 300 | result = ir_builder.get() |
| 301 | ir_builder.__exit__(None, None, None) |
| 302 | # reuse var if it is reserved |
| 303 | reserved_var = self.var_table.get().get(node.name) |
| 304 | if reserved_var: |
| 305 | var = R.emit_var_binding(relax.VarBinding(reserved_var, result)) |
| 306 | else: |
| 307 | var = R.emit(result) |
| 308 | IRBuilder.name(node.name, var) |
| 309 | self.var_table.add(node.name, var, allow_shadowing=False) |
| 310 | |
| 311 | |
| 312 | @dispatch.register(token="relax", type_name="Expr") |