stage4/generate_c/generate_c_il.cc
changeset 355 30db860bd3bd
parent 350 2c3c4dc34979
parent 345 894c0e6d951c
child 377 60b012b7793f
--- a/stage4/generate_c/generate_c_il.cc	Fri Aug 19 17:33:57 2011 +0100
+++ b/stage4/generate_c/generate_c_il.cc	Fri Aug 19 20:48:05 2011 +0100
@@ -917,7 +917,7 @@
     s4o.print(")");
   }
   if (function_type_suffix != NULL) {
-    function_type_suffix = search_expression_type->default_literal_type(function_type_prefix);
+  	function_type_suffix = search_expression_type->default_literal_type(function_type_suffix);
   }
   if (has_output_params) {
     fcall_number++;
@@ -1325,7 +1325,7 @@
     s4o.print(")");
   }
   if (function_type_suffix != NULL) {
-    function_type_suffix = search_expression_type->default_literal_type(function_type_prefix);
+  	function_type_suffix = search_expression_type->default_literal_type(function_type_suffix);
   }
   if (has_output_params) {
     fcall_number++;
@@ -1734,17 +1734,15 @@
     XXX_function("__time_add", &(this->default_variable_name), this->current_operand);
     /* the data type resulting from this operation... */
     this->default_variable_name.current_type = this->current_operand_type;
-    return NULL;
-  }
-  if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
+  }
+  else if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
       search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
 	NUM_operator_result_type();
 	XXX_operator(&(this->default_variable_name), " += ", this->current_operand);
     /* the data type resulting from this operation... */
     this->default_variable_name.current_type = this->current_operand_type;
-    return NULL;
-  }
-  ERROR;
+  }
+  else {ERROR;}
   return NULL;
 }
 
@@ -1754,17 +1752,15 @@
     XXX_function("__time_sub", &(this->default_variable_name), this->current_operand);
     /* the data type resulting from this operation... */
     this->default_variable_name.current_type = this->current_operand_type;
-    return NULL;
-  }
-  if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
+  }
+  else if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
       search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
 	NUM_operator_result_type();
 	XXX_operator(&(this->default_variable_name), " -= ", this->current_operand);
     /* the data type resulting from this operation... */
     this->default_variable_name.current_type = this->current_operand_type;
-    return NULL;
-  }
-  ERROR;
+  }
+  else {ERROR;}
   return NULL;
 }
 
@@ -1772,18 +1768,16 @@
   if (search_expression_type->is_time_type(this->default_variable_name.current_type) &&
       search_expression_type->is_integer_type(this->current_operand_type)) {
     XXX_function("__time_mul", &(this->default_variable_name), this->current_operand);
-    /* the data type resulting from this operation... */
-    return NULL;
-  }
-  if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
+    /* the data type resulting from this operation is unchanged! */
+  }
+  else if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
       search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
 	NUM_operator_result_type();
     XXX_operator(&(this->default_variable_name), " *= ", this->current_operand);
     /* the data type resulting from this operation... */
     this->default_variable_name.current_type = this->current_operand_type;
-    return NULL;
-  }
-  ERROR;
+  }
+  else {ERROR;}
   return NULL;
 }
 
@@ -1791,17 +1785,17 @@
   if (search_expression_type->is_time_type(this->default_variable_name.current_type) &&
       search_expression_type->is_integer_type(this->current_operand_type)) {
     XXX_function("__time_div", &(this->default_variable_name), this->current_operand);
-    /* the data type resulting from this operation... */
-    return NULL;
-  }
-  if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
+    /* the data type resulting from this operation is unchanged! */
+  }
+  else if (search_expression_type->is_num_type(this->default_variable_name.current_type) &&
       search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
 	NUM_operator_result_type();
 	XXX_operator(&(this->default_variable_name), " /= ", this->current_operand);
     /* the data type resulting from this operation... */
     this->default_variable_name.current_type = this->current_operand_type;
-  }
-  ERROR;
+    return NULL;
+  }
+  else {ERROR;}
   return NULL;
 }
 
@@ -1813,53 +1807,65 @@
     /* the data type resulting from this operation... */
     this->default_variable_name.current_type = this->current_operand_type;
   }
-  ERROR;
+  else {ERROR;}
   return NULL;
 }
 
 void *visit(GT_operator_c *symbol)	{
   if (!search_base_type.type_is_enumerated(this->default_variable_name.current_type) &&
-      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type))
-    return CMP_operator(this->current_operand, "GT_");
-  ERROR;
+      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
+    CMP_operator(this->current_operand, "GT_");
+  } else {
+    ERROR;
+  }
   return NULL;
 }
 
 void *visit(GE_operator_c *symbol)	{
   if (!search_base_type.type_is_enumerated(this->default_variable_name.current_type) &&
-      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type))
-    return CMP_operator(this->current_operand, "GE_");
-  ERROR;
+      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
+    CMP_operator(this->current_operand, "GE_");
+  } else {
+    ERROR;
+  }
   return NULL;
 }
 
 void *visit(EQ_operator_c *symbol)	{
-  if (search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type))
-    return CMP_operator(this->current_operand, "EQ_");
-  ERROR;
+  if (search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
+    CMP_operator(this->current_operand, "EQ_");
+  } else {
+    ERROR;
+  }
   return NULL;
 }
 
 void *visit(LT_operator_c *symbol)	{
   if (!search_base_type.type_is_enumerated(this->default_variable_name.current_type) &&
-      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type))
-    return CMP_operator(this->current_operand, "LT_");
-  ERROR;
+      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
+    CMP_operator(this->current_operand, "LT_");
+  } else {
+    ERROR;
+  }
   return NULL;
 }
 
 void *visit(LE_operator_c *symbol)	{
   if (!search_base_type.type_is_enumerated(this->default_variable_name.current_type) &&
-      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type))
-    return CMP_operator(this->current_operand, "LE_");
-  ERROR;
+      search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
+    CMP_operator(this->current_operand, "LE_");
+  } else {
+    ERROR;
+  }
   return NULL;
 }
 
 void *visit(NE_operator_c *symbol)	{
-  if (search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type))
-    return CMP_operator(this->current_operand, "NE_");
-  ERROR;
+  if (search_expression_type->is_same_type(this->default_variable_name.current_type, this->current_operand_type)) {
+    CMP_operator(this->current_operand, "NE_");
+  } else {
+    ERROR;
+  }
   return NULL;
 }