Reject main() declarations with a non-void return value.
Fixes main3.vert.
This commit is contained in:

committed by
Ian Romanick

parent
2e063f1adf
commit
ab372dab2a
@@ -1146,7 +1146,6 @@ ast_function_definition::hir(exec_list *instructions,
|
||||
|
||||
assert(return_type != NULL);
|
||||
|
||||
|
||||
/* Verify that this function's signature either doesn't match a previously
|
||||
* seen signature for a function with the same name, or, if a match is found,
|
||||
* that the previously seen signature does not have an associated definition.
|
||||
@@ -1190,6 +1189,14 @@ ast_function_definition::hir(exec_list *instructions,
|
||||
state->symbols->add_function(f->name, f);
|
||||
}
|
||||
|
||||
/* Verify the return type of main() */
|
||||
if (strcmp(name, "main") == 0) {
|
||||
if (return_type != glsl_type::get_instance(GLSL_TYPE_VOID, 0, 0)) {
|
||||
YYLTYPE loc = this->get_location();
|
||||
|
||||
_mesa_glsl_error(& loc, state, "main() must return void");
|
||||
}
|
||||
}
|
||||
|
||||
/* Finish storing the information about this new function in its signature.
|
||||
*/
|
||||
|
@@ -489,10 +489,12 @@ _mesa_glsl_initialize_constructors(exec_list *instructions,
|
||||
const glsl_type *
|
||||
glsl_type::get_instance(unsigned base_type, unsigned rows, unsigned columns)
|
||||
{
|
||||
if (base_type == GLSL_TYPE_VOID)
|
||||
return &void_type;
|
||||
|
||||
if ((rows < 1) || (rows > 4) || (columns < 1) || (columns > 4))
|
||||
return error_type;
|
||||
|
||||
|
||||
/* Treat GLSL vectors as Nx1 matrices.
|
||||
*/
|
||||
if (columns == 1) {
|
||||
|
Reference in New Issue
Block a user