[vala] Write catch clauses and lambda expressions with --dump-tree
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [vala] Write catch clauses and lambda expressions with --dump-tree
- Date: Fri, 8 Jan 2010 20:03:37 +0000 (UTC)
commit c565e19e37ecbdaef263ca2d554f09df9f643e91
Author: JiÅ?à Zárevúcky <zarevucky jiri gmail com>
Date: Fri Jan 8 21:01:22 2010 +0100
Write catch clauses and lambda expressions with --dump-tree
Fixes bug 605887.
vala/valacodewriter.vala | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/vala/valacodewriter.vala b/vala/valacodewriter.vala
index 30a30b6..e6dd882 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) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]