]> git.saurik.com Git - bison.git/blobdiff - src/complain.c
doc: use @group to improve page breaking
[bison.git] / src / complain.c
index 2e4e71afb92e1deac07c1d9e7bd69643fd746c2a..5a1b45a43a4a75a7f93dbb92c26077e3046fc45a 100644 (file)
@@ -1,6 +1,6 @@
 /* Declaration for error-reporting function for Bison.
 
-   Copyright (C) 2000-2002, 2004-2006, 2009-2012 Free Software
+   Copyright (C) 2000-2002, 2004-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -28,6 +28,7 @@
 #include "complain.h"
 #include "files.h"
 #include "getargs.h"
+#include "quote.h"
 
 warnings warnings_flag =
   Wconflicts_sr | Wconflicts_rr | Wdeprecated  | Wother;
@@ -49,6 +50,7 @@ warnings_print_categories (warnings warn_flags)
           "conflicts-sr",
           "conflicts-rr",
           "deprecated",
+          "precedence",
           "other"
         };
 
@@ -87,7 +89,7 @@ error_message (const location *loc, warnings flags, const char *prefix,
   unsigned pos = 0;
 
   if (loc)
-    pos += location_print (stderr, *loc);
+    pos += location_print (*loc, stderr);
   else
     pos += fprintf (stderr, "%s", current_file ? current_file : program_name);
   pos += fprintf (stderr, ": ");
@@ -110,12 +112,15 @@ error_message (const location *loc, warnings flags, const char *prefix,
   warnings_print_categories (flags);
   {
     size_t l = strlen (message);
-    if (l < 2 || message[l-2] != ':' || message[l-1] != ' ')
+    if (l < 2 || message[l - 2] != ':' || message[l - 1] != ' ')
       {
         putc ('\n', stderr);
         fflush (stderr);
+        if (loc && feature_flag & feature_caret && !(flags & no_caret))
+          location_caret (*loc, stderr);
       }
   }
+  fflush (stderr);
 }
 
 /** Raise a complaint. That can be a fatal error, a complaint or just a
@@ -185,4 +190,18 @@ complain_args (location const *loc, warnings w, unsigned *indent,
     complain (loc, fatal, "too many arguments for complains");
     break;
   }
+
+}
+
+void
+deprecated_directive (location const *loc, char const *old, char const *upd)
+{
+  if (feature_flag & feature_caret)
+    complain (loc, Wdeprecated,
+              _("deprecated directive, use %s"),
+              quote_n (1, upd));
+  else
+    complain (loc, Wdeprecated,
+              _("deprecated directive: %s, use %s"),
+              quote (old), quote_n (1, upd));
 }