Check that function definition parameter qualifiers match proto qualifiers.

Fixes function9.frag.
This commit is contained in:
Eric Anholt
2010-04-14 16:16:20 -07:00
parent 8558459512
commit 1e7ec3ce12
+23
View File
@@ -1841,6 +1841,29 @@ ast_function::hir(exec_list *instructions,
* definition.
*/
if (parameter_lists_match(& hir_parameters, & sig->parameters)) {
exec_list_iterator iter_a = hir_parameters.iterator();
exec_list_iterator iter_b = sig->parameters.iterator();
/* check that the qualifiers match. */
while (iter_a.has_next()) {
ir_variable *a = (ir_variable *)iter_a.get();
ir_variable *b = (ir_variable *)iter_b.get();
if (a->read_only != b->read_only ||
a->interpolation != b->interpolation ||
a->centroid != b->centroid) {
YYLTYPE loc = this->get_location();
_mesa_glsl_error(& loc, state,
"function `%s' parameter `%s' qualifiers "
"don't match prototype",
name, a->name);
}
iter_a.next();
iter_b.next();
}
/* FINISHME: Compare return types. */
if (is_definition && (sig->definition != NULL)) {