diff options
author | Juerg Billeter <j@bitron.ch> | 2007-09-17 19:05:34 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2007-09-17 19:05:34 +0000 |
commit | 251f0e7a8e16627083d9d2d0227d0ad745ad5763 (patch) | |
tree | b38684577f53152b9f464430de1ddf4e08f43597 | |
parent | bf34312b9604ddd58478b8b5e1aa4868f0aa2eea (diff) | |
download | vala-251f0e7a8e16627083d9d2d0227d0ad745ad5763.tar.gz |
switch lambda expression to external visitor
2007-09-17 Juerg Billeter <j@bitron.ch>
* vala/valacodevisitor.vala, vala/valalambdaexpression.vala,
vala/valamemorymanager.vala, vala/valasemanticanalyzer.vala,
vala/valasymbolresolver.vala, gobject/valacodegenerator.vala: switch
lambda expression to external visitor
svn path=/trunk/; revision=616
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | gobject/valacodegenerator.vala | 4 | ||||
-rw-r--r-- | vala/valacodevisitor.vala | 12 | ||||
-rw-r--r-- | vala/valalambdaexpression.vala | 10 | ||||
-rw-r--r-- | vala/valamemorymanager.vala | 4 | ||||
-rw-r--r-- | vala/valasemanticanalyzer.vala | 4 | ||||
-rw-r--r-- | vala/valasymbolresolver.vala | 4 |
7 files changed, 27 insertions, 18 deletions
@@ -1,5 +1,12 @@ 2007-09-17 Jürg Billeter <j@bitron.ch> + * vala/valacodevisitor.vala, vala/valalambdaexpression.vala, + vala/valamemorymanager.vala, vala/valasemanticanalyzer.vala, + vala/valasymbolresolver.vala, gobject/valacodegenerator.vala: switch + lambda expression to external visitor + +2007-09-17 Jürg Billeter <j@bitron.ch> + * vala/valacodevisitor.vala, vala/valamemorymanager.vala, vala/valaobjectcreationexpression.vala, vala/valasemanticanalyzer.vala, vala/valasymbolresolver.vala, diff --git a/gobject/valacodegenerator.vala b/gobject/valacodegenerator.vala index cd9a7c421..fe0ab8fa1 100644 --- a/gobject/valacodegenerator.vala +++ b/gobject/valacodegenerator.vala @@ -2748,7 +2748,9 @@ public class Vala.CodeGenerator : CodeVisitor { expr.ccodenode = new CCodeConditionalExpression ((CCodeExpression) expr.condition.ccodenode, (CCodeExpression) expr.true_expression.ccodenode, (CCodeExpression) expr.false_expression.ccodenode); } - public override void visit_end_lambda_expression (LambdaExpression! l) { + public override void visit_lambda_expression (LambdaExpression! l) { + l.accept_children (this); + l.ccodenode = new CCodeIdentifier (l.method.get_cname ()); } diff --git a/vala/valacodevisitor.vala b/vala/valacodevisitor.vala index 1b3e5a26b..57ed45d41 100644 --- a/vala/valacodevisitor.vala +++ b/vala/valacodevisitor.vala @@ -588,19 +588,11 @@ public abstract class Vala.CodeVisitor : Object { } /** - * Visit operation called at beginning of lambda expressions. + * Visit operation called for lambda expressions. * * @param expr a lambda expression */ - public virtual void visit_begin_lambda_expression (LambdaExpression! expr) { - } - - /** - * Visit operation called at end of lambda expressions. - * - * @param expr a lambda expression - */ - public virtual void visit_end_lambda_expression (LambdaExpression! expr) { + public virtual void visit_lambda_expression (LambdaExpression! expr) { } /** diff --git a/vala/valalambdaexpression.vala b/vala/valalambdaexpression.vala index 8ef95a5fd..202eb916c 100644 --- a/vala/valalambdaexpression.vala +++ b/vala/valalambdaexpression.vala @@ -86,8 +86,10 @@ public class Vala.LambdaExpression : Expression { } public override void accept (CodeVisitor! visitor) { - visitor.visit_begin_lambda_expression (this); + visitor.visit_lambda_expression (this); + } + public override void accept_children (CodeVisitor! visitor) { if (method == null) { if (expression_body != null) { expression_body.accept (visitor); @@ -95,11 +97,7 @@ public class Vala.LambdaExpression : Expression { } else if (statement_body != null) { statement_body.accept (visitor); } - } - - visitor.visit_end_lambda_expression (this); - - if (method != null) { + } else { method.accept (visitor); } } diff --git a/vala/valamemorymanager.vala b/vala/valamemorymanager.vala index efb6c9ac5..9399d227d 100644 --- a/vala/valamemorymanager.vala +++ b/vala/valamemorymanager.vala @@ -286,6 +286,10 @@ public class Vala.MemoryManager : CodeVisitor { visit_possibly_leaked_expression (expr.right); } + public override void visit_lambda_expression (LambdaExpression! l) { + l.accept_children (this); + } + public override void visit_assignment (Assignment! a) { a.accept_children (this); diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index 1fd77ac16..0da61096c 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -2515,7 +2515,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { return false; } - public override void visit_begin_lambda_expression (LambdaExpression! l) { + public override void visit_lambda_expression (LambdaExpression! l) { if (l.expected_type == null || !(l.expected_type.data_type is Callback)) { l.error = true; Report.error (l.source_reference, "lambda expression not allowed in this context"); @@ -2575,6 +2575,8 @@ public class Vala.SemanticAnalyzer : CodeVisitor { /* lambda expressions should be usable like MemberAccess of a method */ l.symbol_reference = l.method; + + l.accept_children (this); } public override void visit_assignment (Assignment! a) { diff --git a/vala/valasymbolresolver.vala b/vala/valasymbolresolver.vala index 4113a2fc2..b1f6095c7 100644 --- a/vala/valasymbolresolver.vala +++ b/vala/valasymbolresolver.vala @@ -343,6 +343,10 @@ public class Vala.SymbolResolver : CodeVisitor { expr.accept_children (this); } + public override void visit_lambda_expression (LambdaExpression! l) { + l.accept_children (this); + } + public override void visit_assignment (Assignment! a) { a.accept_children (this); } |