glsl: Merge "candidates are: " message to the previous line.
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 23 Nov 2013 19:55:03 +0000 (11:55 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sun, 1 Dec 2013 23:32:59 +0000 (15:32 -0800)
Previously, when we hit a "no matching function" error, it looked like:

0:0(0): error: no matching function for call to `cos()'
0:0(0): error: candidates are: float cos(float)
0:0(0): error:                vec2 cos(vec2)
0:0(0): error:                vec3 cos(vec3)
0:0(0): error:                vec4 cos(vec4)

Now it looks like:

0:0(0): error: no matching function for call to `cos()'; candidates are:
0:0(0): error:    float cos(float)
0:0(0): error:    vec2 cos(vec2)
0:0(0): error:    vec3 cos(vec3)
0:0(0): error:    vec4 cos(vec4)

This is not really any worse and removes the need for the prefix variable.
It will also help with the next commit's refactoring.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/glsl/ast_function.cpp

index 82456ad4c2f35fb117f993607966e8d7bc3b51ec..6def25a7d2e4f033a9e3d4516a20dd58e39d4978 100644 (file)
@@ -432,11 +432,11 @@ no_matching_function_error(const char *name,
                           _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'", str);
+   _mesa_glsl_error(loc, state,
+                    "no matching function for call to `%s'; candidates are:",
+                    str);
    ralloc_free(str);
 
-   const char *prefix = "candidates are: ";
-
    for (int i = -1; i < (int) state->num_builtins_to_link; i++) {
       glsl_symbol_table *syms = i >= 0 ? state->builtins_to_link[i]->symbols
                                       : state->symbols;
@@ -451,10 +451,8 @@ no_matching_function_error(const char *name,
             continue;
 
         str = prototype_string(sig->return_type, f->name, &sig->parameters);
-        _mesa_glsl_error(loc, state, "%s%s", prefix, str);
+        _mesa_glsl_error(loc, state, "   %s", str);
         ralloc_free(str);
-
-        prefix = "                ";
       }
    }
 }