stage3/declaration_check.cc
changeset 663 6ad7de83d22c
parent 661 f537c3315f83
child 676 ca4f17211251
equal deleted inserted replaced
662:b1b11dd09a54 663:6ad7de83d22c
    94 	while((var_name = fpi.next()) != NULL) {
    94 	while((var_name = fpi.next()) != NULL) {
    95       if (fpi.param_direction() == function_param_iterator_c::direction_extref) {
    95       if (fpi.param_direction() == function_param_iterator_c::direction_extref) {
    96      	 /* found an external reference parameter. */
    96      	 /* found an external reference parameter. */
    97      	symbol_c *glo_decl = search_var_instance_glo_decl.get_decl(var_name);
    97      	symbol_c *glo_decl = search_var_instance_glo_decl.get_decl(var_name);
    98         symbol_c *ext_decl = search_var_instance_ext_decl.get_decl(var_name);
    98         symbol_c *ext_decl = search_var_instance_ext_decl.get_decl(var_name);
    99     	if (search_var_instance_glo_decl.get_option(var_name) != search_var_instance_ext_decl.get_option(var_name))
    99     	if (glo_decl == NULL) {
       
   100     	  STAGE3_ERROR(0, ext_decl, ext_decl, "Declaration error an external doesn't mach with any global var.");
       
   101     	  continue;
       
   102     	}
       
   103         if (search_var_instance_glo_decl.get_option(var_name) != search_var_instance_ext_decl.get_option(var_name))
   100           STAGE3_ERROR(0, glo_decl, glo_decl, "Declaration error an external redefinition option.");
   104           STAGE3_ERROR(0, glo_decl, glo_decl, "Declaration error an external redefinition option.");
   101 
   105 
   102         /* TODO: Check redefinition data type.
   106         /* TODO: Check redefinition data type.
   103          *       We need a new class (like search_base_type class) to get type id by variable declaration.
   107          *       We need a new class (like search_base_type class) to get type id by variable declaration.
   104          *  symbol_c *glo_type = ????;
   108          *  symbol_c *glo_type = ????;