]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
GAsync: Fix .begin on async methods that may throw errors
authorJürg Billeter <j@bitron.ch>
Mon, 14 Sep 2009 16:01:42 +0000 (18:01 +0200)
committerJürg Billeter <j@bitron.ch>
Mon, 14 Sep 2009 16:01:42 +0000 (18:01 +0200)
vala/valamethodcall.vala

index d9e9681bca3ed141dfc926e89d439f785bbe8bd3..44e9ee686f183daec8ef77ca37303bfe5ca93c98 100644 (file)
@@ -429,14 +429,18 @@ public class Vala.MethodCall : Expression {
                                        Report.error (source_reference, "yield expression not available outside async method");
                                }
                        }
-                       foreach (DataType error_type in m.get_error_types ()) {
-                               may_throw = true;
+                       if (m != null && m.coroutine && !is_yield_expression && ((MemberAccess) call).member_name != "end") {
+                               // .begin call of async method, no error can happen here
+                       } else {
+                               foreach (DataType error_type in m.get_error_types ()) {
+                                       may_throw = true;
 
-                               // ensure we can trace back which expression may throw errors of this type
-                               var call_error_type = error_type.copy ();
-                               call_error_type.source_reference = source_reference;
+                                       // ensure we can trace back which expression may throw errors of this type
+                                       var call_error_type = error_type.copy ();
+                                       call_error_type.source_reference = source_reference;
 
-                               add_error_type (call_error_type);
+                                       add_error_type (call_error_type);
+                               }
                        }
                } else if (mtype is DelegateType) {
                        var d = ((DelegateType) mtype).delegate_symbol;