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

Reply via email to