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 <[email protected]>
* par-ch4.adb (P_If_expression): Handle redundant ELSE cleanly.
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