Enhancement: if no function signature is found for a function
name, report that the function is not found instead of printing
an empty list of candidates.
---
src/glsl/ast_function.cpp | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp
index 9dc5427..ec4339c 100644
--- a/src/glsl/ast_function.cpp
+++ b/src/glsl/ast_function.cpp
@@ -450,17 +450,24 @@ no_matching_function_error(const char *name,
exec_list *actual_parameters,
_mesa_glsl_parse_state *state)
{
- char *str = prototype_string(NULL, name, actual_parameters);
- _mesa_glsl_error(loc, state,
- "no matching function for call to `%s'; candidates are:",
- str);
- ralloc_free(str);
+ gl_shader *sh = _mesa_glsl_get_builtin_function_shader();
- print_function_prototypes(state, loc, state->symbols->get_function(name));
-
- if (state->uses_builtin_functions) {
- gl_shader *sh = _mesa_glsl_get_builtin_function_shader();
- print_function_prototypes(state, loc, sh->symbols->get_function(name));
+ if(NULL == state->symbols->get_function(name)
+ && (!state->uses_builtin_functions
+ || NULL == sh->symbols->get_function(name)) ) {
+ _mesa_glsl_error(loc, state, "no function with name '%s'", name);
+ } else {
+ char *str = prototype_string(NULL, name, actual_parameters);
+ _mesa_glsl_error(loc, state,
+ "no matching function for call to `%s'; candidates
are:",
+ str);
+ ralloc_free(str);
+
+ print_function_prototypes(state, loc,
state->symbols->get_function(name));
+
+ if (state->uses_builtin_functions) {
+ print_function_prototypes(state, loc,
sh->symbols->get_function(name));
+ }
}
}
--
1.8.1.2
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev