From: Eric Anholt Date: Wed, 31 Mar 2010 09:23:16 +0000 (-1000) Subject: Test that a void function doesn't return a value. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ab79d4ec6e7c5639084f71f93857f39239e8b848;p=mesa.git Test that a void function doesn't return a value. Fixes function1.frag. --- diff --git a/ast_to_hir.cpp b/ast_to_hir.cpp index 5162acea4ed..fbadd403188 100644 --- a/ast_to_hir.cpp +++ b/ast_to_hir.cpp @@ -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);