(self: Parser, node: doc.FunctionDef)
| 177 | |
| 178 | |
| 179 | def collect_symbolic_var_from_params(self: Parser, node: doc.FunctionDef) -> None: |
| 180 | # Collect symbolic vars from parameters |
| 181 | symbolic_vars = {} |
| 182 | for arg in node.args.args: |
| 183 | if arg.annotation is None: |
| 184 | self.report_error(arg, "Type annotation is required for function parameters.") |
| 185 | param_sinfo_proxy = eval_struct_info_proxy(self, arg.annotation) |
| 186 | |
| 187 | for var_name in param_sinfo_proxy.get_symbolic_vars(): |
| 188 | if var_name not in symbolic_vars: |
| 189 | symbolic_vars[var_name] = tirx.Var(var_name, "int64") |
| 190 | |
| 191 | # Update symbolic vars based on |
| 192 | symbolic_vars = collect_symbolic_var_from_prelude(self, node, symbolic_vars) |
| 193 | |
| 194 | # Define symbolic vars to the current var_table frame |
| 195 | for var_name, var in symbolic_vars.items(): |
| 196 | self.var_table.add(var_name, var, allow_shadowing=False) |
| 197 | |
| 198 | |
| 199 | @dispatch.register(token="relax", type_name="FunctionDef") |
no test coverage detected
searching dependent graphs…