On 12/6/18 5:49 AM, Paolo Carlini wrote:
Hi,

I'm bundling together 3 more. In attachment order:

1- Since we decided to explicitly print the wrong type, I suppose we want to consistently do that in templates too.

OK.

2- Unfortunately I have to fix another buglet I recently introduced, completely similar to c++/88222 fixed by Marek. Well, at least we will not print anymore an empty '' when the unqualified_id is null because the field is unnamed.

-               error_at (declarator->id_loc,
-                         "%qE is neither function nor member function; "
-                         "cannot be declared friend", unqualified_id);
+               if (unqualified_id && declarator)
+                 error_at (declarator->id_loc,
+                           "%qE is neither function nor member function; "
+                           "cannot be declared friend", unqualified_id);
+               else
+                 error ("unnamed field is neither function nor member "
+                        "function; cannot be declared friend");

I wonder if we want to use the 'name' variable here.

3- In the non-static case too, when from grokdeclarator we are calling FIELD_DECL and passing the location as first argument, I think we want to likewise pass declarator->id_loc when available.

-               decl = build_decl (input_location,
+               decl = build_decl (declarator
+                                  ? declarator->id_loc
+                                  : input_location,

I think we want to put this in a local variable, to share with the static case and probably other places in grokdeclarator.

Jason

Reply via email to