Test that a void function doesn't return a value.

Fixes function1.frag.
This commit is contained in:
Eric Anholt 2010-03-30 23:23:16 -10:00
parent 794ea61006
commit ab79d4ec6e
1 changed files with 10 additions and 3 deletions

View File

@ -1549,9 +1549,16 @@ ast_jump_statement::hir(exec_list *instructions,
ir_return *inst;
if (opt_return_value) {
/* FINISHME: Make sure the enclosing function has a non-void return
* FINISHME: type.
*/
assert(state->current_function);
if (state->current_function->return_type->base_type ==
GLSL_TYPE_VOID) {
YYLTYPE loc = this->get_location();
_mesa_glsl_error(& loc, state,
"`return` with a value, in function `%s' "
"returning void",
state->current_function->definition->label);
}
ir_expression *const ret = (ir_expression *)
opt_return_value->hir(instructions, state);