From: Eric Anholt Date: Wed, 31 Mar 2010 09:28:20 +0000 (-1000) Subject: Test that a non-void function returns a value. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aad7c7793788f34e98fb7264dc2219fc73002877;p=mesa.git Test that a non-void function returns a value. --- diff --git a/ast_to_hir.cpp b/ast_to_hir.cpp index fbadd403188..1f81a943279 100644 --- a/ast_to_hir.cpp +++ b/ast_to_hir.cpp @@ -1547,9 +1547,9 @@ ast_jump_statement::hir(exec_list *instructions, if (mode == ast_return) { ir_return *inst; + assert(state->current_function); if (opt_return_value) { - assert(state->current_function); if (state->current_function->return_type->base_type == GLSL_TYPE_VOID) { YYLTYPE loc = this->get_location(); @@ -1570,8 +1570,15 @@ ast_jump_statement::hir(exec_list *instructions, inst = new ir_return(ret); } else { - /* FINISHME: Make sure the enclosing function has a void return type. - */ + if (state->current_function->return_type->base_type != + GLSL_TYPE_VOID) { + YYLTYPE loc = this->get_location(); + + _mesa_glsl_error(& loc, state, + "`return' with no value, in function %s returning " + "non-void", + state->current_function->definition->label); + } inst = new ir_return; }