From 03275fc6eeb6ac2e8bd0cce3cfb5f7812eb3106c Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Wed, 25 Jul 2012 16:55:20 +0100 Subject: [PATCH] Check assignment of delegates out parameters. --- mcs/errors/cs0177-12.cs | 15 +++++++++++++++ mcs/mcs/anonymous.cs | 4 ++++ 2 files changed, 19 insertions(+) create mode 100644 mcs/errors/cs0177-12.cs diff --git a/mcs/errors/cs0177-12.cs b/mcs/errors/cs0177-12.cs new file mode 100644 index 00000000000..4ee34ddbac2 --- /dev/null +++ b/mcs/errors/cs0177-12.cs @@ -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; + }; + } +} diff --git a/mcs/mcs/anonymous.cs b/mcs/mcs/anonymous.cs index 9bc786205a2..4d1258fe420 100644 --- a/mcs/mcs/anonymous.cs +++ b/mcs/mcs/anonymous.cs @@ -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); -- 2.25.1