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) { |