From: Marek Safar Date: Wed, 15 Sep 2004 14:21:50 +0000 (-0000) Subject: 2004-09-15 Marek Safar X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=d1c5d6001162e27ae89c5dbc3c073ebd7f27e495;p=mono.git 2004-09-15 Marek Safar Fixed bug #64226 * cs-parser.jay: Add error 1017 report. svn path=/trunk/mcs/; revision=33936 --- diff --git a/mcs/mcs/ChangeLog b/mcs/mcs/ChangeLog index b9342f10dd4..e7404ab60ff 100755 --- a/mcs/mcs/ChangeLog +++ b/mcs/mcs/ChangeLog @@ -1,3 +1,8 @@ +2004-09-15 Marek Safar + + Fixed bug #64226 + * cs-parser.jay: Add error 1017 report. + 2004-09-15 Marek Safar Fixed bug #59980, #64224 diff --git a/mcs/mcs/cs-parser.jay b/mcs/mcs/cs-parser.jay index c11750ee1cd..4c89814e1f0 100755 --- a/mcs/mcs/cs-parser.jay +++ b/mcs/mcs/cs-parser.jay @@ -3770,19 +3770,23 @@ try_statement : TRY block catch_clauses { Catch g = null; - ArrayList s = new ArrayList (4); - foreach (Catch cc in (ArrayList) $3) { - if (cc.IsGeneral) + ArrayList c = (ArrayList)$3; + for (int i = 0; i < c.Count; ++i) { + Catch cc = (Catch) c [i]; + if (cc.IsGeneral) { + if (i != c.Count - 1) + Report.Error (1017, cc.loc, "Empty catch block must be the last in a series of catch blocks"); g = cc; - else - s.Add (cc); + c.RemoveAt (i); + i--; + } } // Now s contains the list of specific catch clauses // and g contains the general one. - $$ = new Try ((Block) $2, s, g, null, lexer.Location); + $$ = new Try ((Block) $2, c, g, null, lexer.Location); } | TRY block opt_catch_clauses FINALLY block {