diff options
author | Kevin Rogovin <[email protected]> | 2013-12-09 11:18:26 +0200 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2013-12-20 09:03:54 -0800 |
commit | 3b1195f8a631d3425a418f846a6b9e0fa570c028 (patch) | |
tree | 695949693f68d7a26acacca092a01598a1fd9c51 /src | |
parent | 23d294bb60be41e3876179e7b763a275902d1efd (diff) |
Report that no function found if signature lookup is empty
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.
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/ast_function.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp index 605ab8c297e..e4c0fd1c476 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->symbols->get_function(name) == NULL + && (!state->uses_builtin_functions + || sh->symbols->get_function(name) == NULL)) { + _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); - if (state->uses_builtin_functions) { - gl_shader *sh = _mesa_glsl_get_builtin_function_shader(); - print_function_prototypes(state, loc, sh->symbols->get_function(name)); + 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)); + } } } |