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 mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev