00001 /* 00002 * process_id(idnode) 00003 * 00004 * If the last_definition field of the id node is not NIL, 00005 * point it at the last definition of that id (as given in Idtable). 00006 */ 00007 # include "parm.h" 00008 # include "pass1/stt/sttdefs.h" 00009 # include "stree/ststructs.mh" 00010 # include "Idtable.h" 00011 # include "datatypes/stack.h" 00012 00013 Identry * retrieve(); 00014 00015 /* extern STACK lti_stack; /* stack of enclosing type signature nodes */ 00016 extern NODE * usl_ptr; /* pointer to node for next enclosing use list */ 00017 00018 process_id(idnode) 00019 NODE * idnode; 00020 { register Identry * ip; 00021 00022 if (idnode->id_use_list == NIL) 00023 idnode->id_use_list = usl_ptr; 00024 /* Not necessary. Subsequent passes treat this specially */ 00025 if (idnode->id_str_table_index == -1) { 00026 /* innermost local type id * 00027 idnode->id_last_definition = top(lti_stack); 00028 */ 00029 } else if (idnode->id_last_definition == NIL) { 00030 ip = retrieve(idnode->id_str_table_index); 00031 idnode->id_last_definition = ip->i_value; 00032 } 00033 }