Check assignment of delegates out parameters.
authorMarek Safar <marek.safar@gmail.com>
Wed, 25 Jul 2012 15:55:20 +0000 (16:55 +0100)
committerMarek Safar <marek.safar@gmail.com>
Wed, 25 Jul 2012 17:15:28 +0000 (18:15 +0100)
mcs/errors/cs0177-12.cs [new file with mode: 0644]
mcs/mcs/anonymous.cs

diff --git a/mcs/errors/cs0177-12.cs b/mcs/errors/cs0177-12.cs
new file mode 100644 (file)
index 0000000..4ee34dd
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0177: The out parameter `arg' must be assigned to before control leaves the current method
+// Line: 12
+
+class C
+{
+       delegate void D (string s, out int arg);
+
+       public static void Main ()
+       {
+               D d = delegate (string s, out int arg)
+               {
+                       return;
+               };
+       }
+}
index 9bc786205a28f7adfb0b4f356b0d0b2e40215479..4d1258fe420eea9e455d0199dcb66b2a1d525fc7 100644 (file)
@@ -1497,6 +1497,10 @@ namespace Mono.CSharp {
 
                        aec.Set (flags);
 
+                       var bc = ec as BlockContext;
+                       if (bc != null)
+                               aec.FlowOffset = bc.FlowOffset;
+
                        var errors = ec.Report.Errors;
 
                        bool res = Block.Resolve (ec.CurrentBranching, aec, null);