diff mbox

[Ada] Give better msg for redundant ELSE in IF EXPRESSION

Message ID 20131015103349.GA19243@adacore.com
State New
Headers show

Commit Message

Arnaud Charlet Oct. 15, 2013, 10:33 a.m. UTC
We now give a better message for a redundant ELSE part
in an IF expression.

     1. package Elseelse is
     2.    function F return Boolean is
     3.      (if 1 + 1 = 2 then True
     4.       else False
     5.       else True);
              |
        >>> only one "else" part is allowed

     6.    function F2 return Boolean is
     7.      (if 1 + 1 = 2 then True
     8.       else False
     9.       else True
              |
        >>> only one "else" part is allowed

    10.       else False);
              |
        >>> only one "else" part is allowed

    11. end Elseelse;

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

2013-10-15  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (P_If_expression): Handle redundant ELSE cleanly.
diff mbox

Patch

Index: par-ch4.adb
===================================================================
--- par-ch4.adb	(revision 203568)
+++ par-ch4.adb	(working copy)
@@ -3120,6 +3120,14 @@ 
          Scan; -- Past ELSE
          Append_To (Exprs, P_Expression);
 
+         --  Skip redundant ELSE parts
+
+         while Token = Tok_Else loop
+            Error_Msg_SC ("only one ELSE part is allowed");
+            Scan; -- past ELSE
+            Discard_Junk_Node (P_Expression);
+         end loop;
+
       --  Two expression case (implied True, filled in during semantics)
 
       else