diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2010-01-24 18:41:44 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2010-01-29 21:57:40 +0100 |
commit | da67841f1fed0b391965e6c1b2179855396ab06b (patch) | |
tree | e785d5eaa053da88ee41c8fad55cd5d4c6030b58 /vala/valalambdaexpression.vala | |
parent | d20e60748429c8c1b14c85cd880ab7c8e1e8f54c (diff) | |
download | vala-da67841f1fed0b391965e6c1b2179855396ab06b.tar.gz |
Perform flow analysis on lambda expressions
Fixes bug 606478.
Diffstat (limited to 'vala/valalambdaexpression.vala')
-rw-r--r-- | vala/valalambdaexpression.vala | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/vala/valalambdaexpression.vala b/vala/valalambdaexpression.vala index 0f0bb2997..facaed95b 100644 --- a/vala/valalambdaexpression.vala +++ b/vala/valalambdaexpression.vala @@ -1,6 +1,6 @@ /* valalambdaexpression.vala * - * Copyright (C) 2006-2009 Jürg Billeter + * Copyright (C) 2006-2010 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -133,7 +133,10 @@ public class Vala.LambdaExpression : Expression { } var cb = (Delegate) ((DelegateType) target_type).delegate_symbol; - method = new Method (get_lambda_name (analyzer), cb.return_type); + method = new Method (get_lambda_name (analyzer), cb.return_type, source_reference); + // track usage for flow analyzer + method.used = true; + if (!cb.has_target || !analyzer.is_in_instance_method ()) { method.binding = MemberBinding.STATIC; } else { @@ -211,15 +214,7 @@ public class Vala.LambdaExpression : Expression { /* lambda expressions should be usable like MemberAccess of a method */ symbol_reference = method; - if (method == null) { - if (expression_body != null) { - expression_body.check (analyzer); - } else if (statement_body != null) { - statement_body.check (analyzer); - } - } else { - method.check (analyzer); - } + method.check (analyzer); value_type = new MethodType (method); value_type.value_owned = target_type.value_owned; |