]> git.saurik.com Git - bison.git/commitdiff
tests: more possible error compiler messages for "#error"
authorAkim Demaille <akim@lrde.epita.fr>
Thu, 8 Nov 2012 09:25:15 +0000 (10:25 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Thu, 8 Nov 2012 09:25:15 +0000 (10:25 +0100)
* tests/synclines.at (AT_SYNCLINES_COMPILE): Adjust for Clang.
Verified with GCC 4.0, 4.2 to 4.8, and Clang 2.9, 3.2: none skip.

tests/synclines.at

index 63ae68581c6509034fc23539214cc0ede294ff7c..751db7c659bd837f4d11e13bd16f9777995d24cd 100644 (file)
@@ -47,7 +47,8 @@ m4_define([AT_SYNCLINES_COMPILE],
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
@@ -63,13 +64,31 @@ m4_define([AT_SYNCLINES_COMPILE],
 #
 #   distcc[35882] (dcc_connect_by_name) ERROR: failed to look up host "chrisimac": Unknown host
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
-
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
 AT_CHECK([[$PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$][1:$][2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$][1:$][2/gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$][1:$][2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$][1: #error /gm;
 EOF
 ]],
   0, [stdout])