summaryrefslogtreecommitdiffstats
path: root/src/glsl/ast_function.cpp
diff options
context:
space:
mode:
authorKevin Rogovin <[email protected]>2013-12-09 11:18:26 +0200
committerIan Romanick <[email protected]>2013-12-20 09:03:54 -0800
commit3b1195f8a631d3425a418f846a6b9e0fa570c028 (patch)
tree695949693f68d7a26acacca092a01598a1fd9c51 /src/glsl/ast_function.cpp
parent23d294bb60be41e3876179e7b763a275902d1efd (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/glsl/ast_function.cpp')
-rw-r--r--src/glsl/ast_function.cpp25
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));
+ }
}
}