]> git.saurik.com Git - bison.git/blobdiff - src/scan-skel.l
errors: support indented context info in m4 macros
[bison.git] / src / scan-skel.l
index 662a00b2f98ab2caf7257f4f7a1050959c4e3dbf..84162572fb272811a9ccc4cdcd3593ffb7e283cb 100644 (file)
@@ -175,6 +175,8 @@ flag (const char *arg)
     return complaint;
   else if (STREQ (arg, "fatal"))
     return fatal;
+  else if (STREQ (arg, "note"))
+    return silent;
   else
     aver (false);
 }
@@ -190,9 +192,12 @@ at_directive_perform (int argc, char *argv[], char **outnamep, int *out_linenop)
     }
   else if (STREQ (argv[0], "@complain"))
     {
+      static unsigned indent;
       if (argc < 4)
         fail_for_at_directive_too_few_args (argv[0]);
       warnings w = flag (argv[1]);
+      if ((w & silent) != silent)
+        indent = 0;
       location loc;
       location *locp = NULL;
       if (argv[2] && argv[2][0])
@@ -201,8 +206,12 @@ at_directive_perform (int argc, char *argv[], char **outnamep, int *out_linenop)
           boundary_set_from_string (&loc.end, argv[3]);
           locp = &loc;
         }
-      complain_args (locp, w, argc - 3, argv + 3);
-    }
+      if (w & silent)
+        indent += SUB_INDENT;
+      complain_args (locp, w, &indent, argc - 3, argv + 3);
+      if (w & silent)
+        indent -= SUB_INDENT;
+     }
   else if (STREQ (argv[0], "@output"))
     {
       if (argc > 2)