summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--vala/valasemanticanalyzer.vala12
2 files changed, 10 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index d98d44087..79cf1d4bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2007-12-12 Jürg Billeter <j@bitron.ch>
+ * vala/valasemanticanalyzer.vala: support assignment of lambda
+ expressions to local variables
+
+2007-12-12 Jürg Billeter <j@bitron.ch>
+
* vala/valasemanticanalyzer.vala: verify that the `abstract', `virtual',
and `overrides' method modifiers are used only where applicable
diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala
index 75c1f48c8..bb8e71546 100644
--- a/vala/valasemanticanalyzer.vala
+++ b/vala/valasemanticanalyzer.vala
@@ -701,7 +701,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
if (decl.initializer != null) {
if (decl.initializer.static_type == null) {
- if (!(decl.initializer is MemberAccess)) {
+ if (!(decl.initializer is MemberAccess) && !(decl.initializer is LambdaExpression)) {
decl.error = true;
Report.error (decl.source_reference, "expression type not allowed as initializer");
return;
@@ -2765,10 +2765,9 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
} else if (ma.symbol_reference is VariableDeclarator && a.right.static_type == null) {
var decl = (VariableDeclarator) ma.symbol_reference;
- var right_ma = (MemberAccess) a.right;
- if (right_ma.symbol_reference is Method &&
+ if (a.right.symbol_reference is Method &&
decl.type_reference.data_type is Callback) {
- var m = (Method) right_ma.symbol_reference;
+ var m = (Method) a.right.symbol_reference;
var cb = (Callback) decl.type_reference.data_type;
/* check whether method matches callback type */
@@ -2787,10 +2786,9 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
} else if (ma.symbol_reference is Field && a.right.static_type == null) {
var f = (Field) ma.symbol_reference;
- var right_ma = (MemberAccess) a.right;
- if (right_ma.symbol_reference is Method &&
+ if (a.right.symbol_reference is Method &&
f.type_reference.data_type is Callback) {
- var m = (Method) right_ma.symbol_reference;
+ var m = (Method) a.right.symbol_reference;
var cb = (Callback) f.type_reference.data_type;
/* check whether method matches callback type */