The new error messages should be:
 c.adb:4:16: extra "," ignored
 c.adb:9:16: "," should be "|"

for the following test case:

procedure c (X : Boolean) is
begin
   case X is
      when True,
        | False => null;
   end case;

   case X is
      when True, False => null;
   end case;
end c;

Tested on x86_64-pc-linux-gnu, committed on trunk

2011-08-01  Geert Bosch  <bo...@adacore.com>

        * par-ch3.adb (P_Discrete_Choice_List): Improve error message for extra
        "," in choice list.

Index: par-ch3.adb
===================================================================
--- par-ch3.adb (revision 176998)
+++ par-ch3.adb (working copy)
@@ -3714,13 +3714,23 @@
          end if;
 
          if Token = Tok_Comma then
-            Error_Msg_SC -- CODEFIX
-              (""","" should be ""'|""");
+            Scan; -- past comma
+
+            if Token = Tok_Vertical_Bar then
+               Error_Msg_SP -- CODEFIX
+                 ("|extra "","" ignored");
+               Scan; -- past |
+
+            else
+               Error_Msg_SP -- CODEFIX
+                 (""","" should be ""'|""");
+            end if;
+
          else
             exit when Token /= Tok_Vertical_Bar;
+            Scan; -- past |
          end if;
 
-         Scan; -- past | or comma
       end loop;
 
       return Choices;

Reply via email to