From aad7c7793788f34e98fb7264dc2219fc73002877 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 30 Mar 2010 23:28:20 -1000 Subject: [PATCH] Test that a non-void function returns a value. --- ast_to_hir.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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; } -- 2.30.2