summaryrefslogtreecommitdiff
path: root/ast_to_hir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ast_to_hir.cpp')
-rw-r--r--ast_to_hir.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/ast_to_hir.cpp b/ast_to_hir.cpp
index 5162acea4e..fbadd40318 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);