C:/Users/Dennis/src/lang/russell.orig/src/pass2/process_id.c

Go to the documentation of this file.
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 }      

Generated on Fri Jan 25 10:39:46 2008 for russell by  doxygen 1.5.4