2007-12-01 Jürg Billeter <j@bitron.ch>
+ * ccode/valaccodeblock.vala: don't emit unreachable code,
+ patch by Ondřej Jirman
+
+2007-12-01 Jürg Billeter <j@bitron.ch>
+
* vala/parser.y, vala/valaclass.vala, vala/valacreationmethod.vala,
vala/valainterfacewriter.vala, vala/valamemberaccess.vala,
vala/valasemanticanalyzer.vala, vala/valastruct.vala: don't let named
foreach (CCodeNode statement in statements) {
statement.write_declaration (writer);
}
+
+ // compute last reachable statement
+ CCodeNode last_statement = null;
+ foreach (CCodeNode statement in statements) {
+ if (statement is CCodeReturnStatement || statement is CCodeGotoStatement
+ || statement is CCodeContinueStatement || statement is CCodeBreakStatement) {
+ last_statement = statement;
+ }
+ if (statement is CCodeLabel) {
+ last_statement = null;
+ }
+ }
+
foreach (CCodeNode statement in statements) {
statement.write (writer);
+
+ // only output reachable code
+ if (statement == last_statement) {
+ break;
+ }
}
+
writer.write_end_block ();
if (!suppress_newline) {