summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuerg Billeter <j@bitron.ch>2007-09-17 19:05:34 +0000
committerJürg Billeter <juergbi@src.gnome.org>2007-09-17 19:05:34 +0000
commit251f0e7a8e16627083d9d2d0227d0ad745ad5763 (patch)
treeb38684577f53152b9f464430de1ddf4e08f43597
parentbf34312b9604ddd58478b8b5e1aa4868f0aa2eea (diff)
downloadvala-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--ChangeLog7
-rw-r--r--gobject/valacodegenerator.vala4
-rw-r--r--vala/valacodevisitor.vala12
-rw-r--r--vala/valalambdaexpression.vala10
-rw-r--r--vala/valamemorymanager.vala4
-rw-r--r--vala/valasemanticanalyzer.vala4
-rw-r--r--vala/valasymbolresolver.vala4
7 files changed, 27 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 6a3e90f06..35dcbe364 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);
}