From: Luca Bruno Date: Thu, 11 Mar 2010 12:04:26 +0000 (+0100) Subject: Use switch instead of do-while for string switch statements X-Git-Tag: 0.8.0~160 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=17c5f08651bb39f219b502f8732692b83636183d;p=thirdparty%2Fvala.git Use switch instead of do-while for string switch statements Fixes bug 541229. --- diff --git a/codegen/valaccodecontrolflowmodule.vala b/codegen/valaccodecontrolflowmodule.vala index ea96d647a..b8346e22d 100644 --- a/codegen/valaccodecontrolflowmodule.vala +++ b/codegen/valaccodecontrolflowmodule.vala @@ -152,8 +152,10 @@ internal class Vala.CCodeControlFlowModule : CCodeMethodModule { } } - var cdo = new CCodeDoStatement (cblock, new CCodeConstant ("0")); - var cif = new CCodeIfStatement (cor, cdo); + var cswitch = new CCodeSwitchStatement (new CCodeConstant ("0")); + cswitch.add_statement (new CCodeLabel ("default")); + cswitch.add_statement (cblock); + var cif = new CCodeIfStatement (cor, cswitch); if (coldif != null) { coldif.false_statement = cif; @@ -169,15 +171,17 @@ internal class Vala.CCodeControlFlowModule : CCodeMethodModule { foreach (CodeNode body_stmt in default_statements) { cblock.add_statement (body_stmt.ccodenode); } - - var cdo = new CCodeDoStatement (cblock, new CCodeConstant ("0")); + + var cswitch = new CCodeSwitchStatement (new CCodeConstant ("0")); + cswitch.add_statement (new CCodeLabel ("default")); + cswitch.add_statement (cblock); if (coldif == null) { // there is only one section and that section // contains a default label - ctopstmt = cdo; + ctopstmt = cswitch; } else { - coldif.false_statement = cdo; + coldif.false_statement = cswitch; } }