@@ -14,9 +14,9 @@ def eval_expr(
1414 print (f"Evaluating expression: { ast .dump (expr )} " )
1515 if isinstance (expr , ast .Name ):
1616 if expr .id in local_sym_tab :
17- var = local_sym_tab [expr .id ][ 0 ]
17+ var = local_sym_tab [expr .id ]. var
1818 val = builder .load (var )
19- return val , local_sym_tab [expr .id ][ 1 ] # return value and type
19+ return val , local_sym_tab [expr .id ]. ir_type # return value and type
2020 else :
2121 print (f"Undefined variable { expr .id } " )
2222 return None
@@ -49,7 +49,7 @@ def eval_expr(
4949 return None
5050 if isinstance (arg , ast .Name ):
5151 if arg .id in local_sym_tab :
52- arg = local_sym_tab [arg .id ][ 0 ]
52+ arg = local_sym_tab [arg .id ]. var
5353 else :
5454 print (f"Undefined variable { arg .id } " )
5555 return None
@@ -58,7 +58,7 @@ def eval_expr(
5858 return None
5959 # Since we are handling only name case, directly take type from sym tab
6060 val = builder .load (arg )
61- return val , local_sym_tab [expr .args [0 ].id ][ 1 ]
61+ return val , local_sym_tab [expr .args [0 ].id ]. ir_type
6262
6363 # check for helpers
6464 if HelperHandlerRegistry .has_handler (expr .func .id ):
@@ -106,10 +106,10 @@ def eval_expr(
106106 var_name = expr .value .id
107107 attr_name = expr .attr
108108 if var_name in local_sym_tab :
109- var_ptr , var_type = local_sym_tab [var_name ]
110- print (f"Loading attribute " f" { attr_name } from variable { var_name } " )
109+ var_ptr , var_type , var_metadata = local_sym_tab [var_name ]
110+ print (f"Loading attribute { attr_name } from variable { var_name } " )
111111 print (f"Variable type: { var_type } , Variable ptr: { var_ptr } " )
112- metadata = structs_sym_tab [local_sym_tab [ var_name ]. metadata ]
112+ metadata = structs_sym_tab [var_metadata ]
113113 if attr_name in metadata .fields :
114114 gep = metadata .gep (builder , var_ptr , attr_name )
115115 val = builder .load (gep )
0 commit comments