Bug 28196

Summary: FlowAnalysis issue with out parameter and finally and delegate containing a return
Product: [Mono] Compilers Reporter: Timotheus Pokorra <pokorra.mailinglists>
Component: C#Assignee: Marek Safar <masafa>
Status: RESOLVED FIXED    
Severity: normal CC: mono-bugs+mono
Priority: ---    
Version: 3.12.0   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Tags: Is this bug a regression?: ---
Last known good build:
Attachments: this file does not compile with Mono

Description Timotheus Pokorra 2015-03-19 10:43:13 UTC
Created attachment 10412 [details]
this file does not compile with Mono

I have attached a file that compiles fine with the Microsoft compiler, and also with Mono 3.2.3, but not with the latest Mono 3.12.1 mcs.

mcs TestDelegateFinallyOut.cs 
shows:

TestDelegateFinallyOut.cs(11,48): error CS0177: The out parameter `test' must be assigned to before control leaves the current method
Compilation failed: 1 error(s), 0 warnings

It compiles fine, if you drop the return inside the delegate, or if you drop the finally clause.

The error message originates here:
https://github.com/mono/mono/blob/master/mcs/mcs/statement.cs#L3712
 fc.Report.Error (177, p.Location,
   "The out parameter `{0}' must be assigned to before control leaves the current method",
   p.Parameter.Name);

This is how far I could debug it...
Comment 1 Marek Safar 2015-03-27 02:38:15 UTC
Fixed in master/mono 4.0