c-parser.c replace error() by error_at()

Prathamesh Kulkarni bilbotheelffriend@gmail.com
Wed Feb 19 14:13:00 GMT 2014


On Wed, Feb 19, 2014 at 7:01 PM, Marek Polacek <polacek@redhat.com> wrote:
> On Wed, Feb 19, 2014 at 06:05:12PM +0530, Prathamesh Kulkarni wrote:
>> Replace calls to error() by error_at().
>>
>> * c-parser.c (c_parser_declspecs): replace call to error () by error_at ()
>
> "Replace", drop ()'s, full stop at the end.
>
>> * c-parser.c (c_parser_parameter_declaration): Likewise
>
> Full stop at the end.
>
>> @@ -3608,7 +3608,7 @@ c_parser_parameter_declaration (c_parser
>>        c_parser_set_source_position_from_token (token);
>>        if (c_parser_next_tokens_start_typename (parser, cla_prefer_type))
>>   {
>> -  error ("unknown type name %qE", token->value);
>> +  error_at (token->location,  "unknown type name %qE", token->value);
>
> Only one space between , and ".
>
> It'd be nice to add a testcase as well, e.g. something like this
>
> void
> fn1 (const foo x) /* { dg-error "..." } */
> {
> }
>
> void
> fn2 (int i; foo a; int i) /* { dg-error "..." } */
> {
> }
>
> void
> fn3 (char c, foo x, ...) /* { dg-error "..." } */
> {
> }
>
Is this fine ?

* c-parser.c (c_parser_declspecs): Replace call to error by error_at.
* c-parser.c (c_parser_parameter_declaration): Likewise.

Index: gcc/c/c-parser.c
===================================================================
--- gcc/c/c-parser.c (revision 207700)
+++ gcc/c/c-parser.c (working copy)
@@ -2223,7 +2223,7 @@ c_parser_declspecs (c_parser *parser, st
   attrs_ok = true;
   if (kind == C_ID_ID)
     {
-      error ("unknown type name %qE", value);
+      error_at (loc, "unknown type name %qE", value);
       t.kind = ctsk_typedef;
       t.spec = error_mark_node;
     }
@@ -3608,7 +3608,7 @@ c_parser_parameter_declaration (c_parser
       c_parser_set_source_position_from_token (token);
       if (c_parser_next_tokens_start_typename (parser, cla_prefer_type))
  {
-  error ("unknown type name %qE", token->value);
+  error_at (token->location, "unknown type name %qE", token->value);
   parser->error = true;
  }
       /* ??? In some Objective-C cases '...' isn't applicable so there
Index: gcc/testsuite/gcc.dg/decl-9.c
===================================================================
--- gcc/testsuite/gcc.dg/decl-9.c (revision 207700)
+++ gcc/testsuite/gcc.dg/decl-9.c (working copy)
@@ -30,3 +30,14 @@ void *f3()
   return x; /* { dg-bogus "'x' undeclared" } */
 }

+void
+f4(const foo x) /* { dg-error "unknown type name 'foo'" } */
+{}
+
+void
+f5(int i; foo x, int i) /* { dg-error "unknown type name 'foo'" } */
+{}
+
+void
+f6(char c, foo x, ...) /* { dg-error "unknown type name 'foo'" } */
+{}
>         Marek



More information about the Gcc-patches mailing list