Bug 44751

Summary: Incorrect code flow analysis with goto and out parameter causes CS0177
Product: [Mono] Compilers Reporter: Jonathan Chambers <joncham>
Component: C#Assignee: Marek Safar <masafa>
Status: RESOLVED FIXED    
Severity: normal CC: mono-bugs+mono
Priority: ---    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows   
Tags: Is this bug a regression?: ---
Last known good build:

Description Jonathan Chambers 2016-09-26 18:56:59 UTC
The following code fails to compile with Mono C# compiler while it compiles successfully with csc (or an older mono C# compiler).

GotoOutBug.cs(3,45): error CS0177: The out parameter `x' must be assigned to before control leaves the current method 
Compilation failed: 1 error(s), 0 warnings

public class GotoCodeFlowBug
{
	public static void Test(bool cond, out int x)
	{
		if (cond)
		{
			goto Label;
		}
		Label:
		x = 0;
	}
}
Comment 1 Marek Safar 2016-09-29 20:42:14 UTC
Fixed in master and Mono 4.8