]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Do not warn about non-default parameters for coroutines. dd24a1bfe1a78bf1a37d35f5d8dd6480fd4a8941
authorLuca Bruno <lucabru@src.gnome.org>
Mon, 26 Aug 2013 20:36:00 +0000 (22:36 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Mon, 26 Aug 2013 20:41:03 +0000 (22:41 +0200)
Reopens bug 644241.

vala/valamethod.vala

index d1129d84f3e75fc8b2aebea11c1817aeacc9ab21..663ae6fdfcdf4e1eba57130ac2d9aa493a86029c 100644 (file)
@@ -654,17 +654,20 @@ public class Vala.Method : Subroutine {
                        Report.error (parameters[0].source_reference, "Named parameter required before `...'");
                }
 
-               var optional_param = false;
-               foreach (Parameter param in parameters) {
-                       param.check (context);
-                       if (coroutine && param.direction == ParameterDirection.REF) {
-                               error = true;
-                               Report.error (param.source_reference, "Reference parameters are not supported for async methods");
-                       }
-                       if (optional_param && param.initializer == null && !param.ellipsis) {
-                               Report.warning (param.source_reference, "parameter without default follows parameter with default");
-                       } else if (param.initializer != null) {
-                               optional_param = true;
+               if (!coroutine) {
+                       // TODO: begin and end parameters must be checked separately for coroutines
+                       var optional_param = false;
+                       foreach (Parameter param in parameters) {
+                               param.check (context);
+                               if (coroutine && param.direction == ParameterDirection.REF) {
+                                       error = true;
+                                       Report.error (param.source_reference, "Reference parameters are not supported for async methods");
+                               }
+                               if (optional_param && param.initializer == null && !param.ellipsis) {
+                                       Report.warning (param.source_reference, "parameter without default follows parameter with default");
+                               } else if (param.initializer != null) {
+                                       optional_param = true;
+                               }
                        }
                }