From c565e19e37ecbdaef263ca2d554f09df9f643e91 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ji=C5=99=C3=AD=20Z=C3=A1rev=C3=BAcky?= Date: Fri, 8 Jan 2010 21:01:22 +0100 Subject: [PATCH] Write catch clauses and lambda expressions with --dump-tree Fixes bug 605887. --- vala/valacodewriter.vala | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/vala/valacodewriter.vala b/vala/valacodewriter.vala index 30a30b6a6..e6dd8828f 100644 --- a/vala/valacodewriter.vala +++ b/vala/valacodewriter.vala @@ -1273,16 +1273,42 @@ public class Vala.CodeWriter : CodeVisitor { write_indent (); write_string ("try"); stmt.body.accept (this); + foreach (var clause in stmt.get_catch_clauses ()) { + clause.accept (this); + } + if (stmt.finally_body != null) { + write_string (" finally"); + stmt.finally_body.accept (this); + } write_newline (); } public override void visit_catch_clause (CatchClause clause) { + var type_name = clause.error_type == null ? "GLib.Error" : clause.error_type.to_string (); + var var_name = clause.variable_name == null ? "_" : clause.variable_name; + write_string (" catch (%s %s)".printf (type_name, var_name)); + clause.body.accept (this); } public override void visit_lock_statement (LockStatement stmt) { + write_indent (); + write_string ("lock ("); + stmt.resource.accept (this); + write_string (")"); + if (stmt.body == null) { + write_string (";"); + } else { + stmt.body.accept (this); + } + write_newline (); } public override void visit_delete_statement (DeleteStatement stmt) { + write_indent (); + write_string ("delete "); + stmt.expression.accept (this); + write_string (";"); + write_newline (); } public override void visit_array_creation_expression (ArrayCreationExpression expr) { @@ -1577,6 +1603,21 @@ public class Vala.CodeWriter : CodeVisitor { } public override void visit_lambda_expression (LambdaExpression expr) { + write_string ("("); + var params = expr.get_parameters (); + if (params.size != 0) { + for (var i = 0; i < params.size - 1; ++ i) { + write_string (params[i]); + write_string (", "); + } + write_string (params[params.size - 1]); + } + write_string (") =>"); + if (expr.statement_body != null) { + expr.statement_body.accept (this); + } else if (expr.expression_body != null) { + expr.expression_body.accept (this); + } } public override void visit_assignment (Assignment a) { -- 2.47.3