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 <de...@adacore.com> * 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