stage3/lvalue_check.cc
changeset 524 52b18b3c7490
parent 519 018093957030
child 525 77bff42a025e
equal deleted inserted replaced
523:773303b7f31f 524:52b18b3c7490
   146 }
   146 }
   147 
   147 
   148 
   148 
   149 /*  No assigning values to expressions. */
   149 /*  No assigning values to expressions. */
   150 void lvalue_check_c::check_assignment_to_expression(symbol_c *lvalue) {
   150 void lvalue_check_c::check_assignment_to_expression(symbol_c *lvalue) {
   151 	/* TODO: check whether the lvalue is an expresion! */
       
   152 	/* This may occur in function invocations, when passing values (possibly an expression) to one 
   151 	/* This may occur in function invocations, when passing values (possibly an expression) to one 
   153 	 * of the function's OUTPUT or IN_OUT parameters.
   152 	 * of the function's OUTPUT or IN_OUT parameters.
   154 	 */
   153 	 */
       
   154 	/* This may occur in function invocations, when passing values (possibly an expression) to one
       
   155 	 * of the function's OUTPUT or IN_OUT parameters.
       
   156 	 */
       
   157 	if ( (typeid( *lvalue ) == typeid( or_expression_c     )) ||
       
   158 	     (typeid( *lvalue ) == typeid( xor_expression_c    )) ||
       
   159 	     (typeid( *lvalue ) == typeid( and_expression_c    )) ||
       
   160 	     (typeid( *lvalue ) == typeid( equ_expression_c    )) ||
       
   161 	     (typeid( *lvalue ) == typeid( notequ_expression_c )) ||
       
   162 	     (typeid( *lvalue ) == typeid( lt_expression_c     )) ||
       
   163 	     (typeid( *lvalue ) == typeid( gt_expression_c     )) ||
       
   164 	     (typeid( *lvalue ) == typeid( le_expression_c     )) ||
       
   165 	     (typeid( *lvalue ) == typeid( ge_expression_c     )) ||
       
   166 	     (typeid( *lvalue ) == typeid( add_expression_c    )) ||
       
   167 	     (typeid( *lvalue ) == typeid( sub_expression_c    )) ||
       
   168 	     (typeid( *lvalue ) == typeid( mul_expression_c    )) ||
       
   169 	     (typeid( *lvalue ) == typeid( div_expression_c    )) ||
       
   170 	     (typeid( *lvalue ) == typeid( mod_expression_c    )) ||
       
   171 	     (typeid( *lvalue ) == typeid( power_expression_c  )) ||
       
   172 	     (typeid( *lvalue ) == typeid( neg_expression_c    )) ||
       
   173 	     (typeid( *lvalue ) == typeid( not_expression_c    )) ||
       
   174 	     (typeid( *lvalue ) == typeid( function_invocation_c)))
       
   175 		STAGE3_ERROR(0, lvalue, lvalue, "Assignment an expression to OUT or IN_OUT params is not be allowed.");
   155 }
   176 }
   156 
   177 
   157 
   178 
   158 
   179 
   159 void lvalue_check_c::verify_is_lvalue(symbol_c *lvalue) {
   180 void lvalue_check_c::verify_is_lvalue(symbol_c *lvalue) {