summaryrefslogtreecommitdiff
path: root/vala/valalambdaexpression.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2010-10-25 23:07:02 +0200
committerJürg Billeter <j@bitron.ch>2010-10-25 23:07:02 +0200
commit837258146130818b9d02aba9ec63d586c611544d (patch)
treebc029d5e0dcfe4684fd2085dd1f97488a723b4ee /vala/valalambdaexpression.vala
parent66946917adf62ac2765466402e74c46964503bdd (diff)
downloadvala-837258146130818b9d02aba9ec63d586c611544d.tar.gz
Support use of generics in closures
Diffstat (limited to 'vala/valalambdaexpression.vala')
-rw-r--r--vala/valalambdaexpression.vala11
1 files changed, 11 insertions, 0 deletions
diff --git a/vala/valalambdaexpression.vala b/vala/valalambdaexpression.vala
index d71c4b55c..889905b20 100644
--- a/vala/valalambdaexpression.vala
+++ b/vala/valalambdaexpression.vala
@@ -224,6 +224,17 @@ public class Vala.LambdaExpression : Expression {
}
method.body.owner = method.scope;
+ // support use of generics in closures
+ var m = analyzer.find_parent_method (analyzer.current_symbol);
+ if (m != null) {
+ foreach (var type_param in m.get_type_parameters ()) {
+ method.add_type_parameter (new TypeParameter (type_param.name, type_param.source_reference));
+
+ method.closure = true;
+ m.body.captured = true;
+ }
+ }
+
/* lambda expressions should be usable like MemberAccess of a method */
symbol_reference = method;