<?xml version="1.0"?>
<ErrorDocumentation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorName>CS0177</ErrorName>
  <Examples>
    <string>// CS0177: The out parameter `output' must be assigned to before control leaves the current method
// Line: 8

class Test
{
	static bool TryAction&lt;T&gt; (out T output)
	{
		return false;
	}

	static void Main ()
	{
		Test value;
		TryAction&lt;Test&gt; (out value);
	}
}
</string>
    <string>// CS0177: The out parameter `s' must be assigned to before control leaves the current method
// Line: 17

public class C
{
}

public struct S
{
	public C c;
}

public class Test
{
	void M (out S s)
	{
		var xx = s.c;
	}
}
</string>
    <string>// 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;
		};
	}
}
</string>
    <string>// CS0177: The out parameter `baz' must be assigned to before control leaves the current method
// Line: 6

static class A
{
	public static void Foo (int i, out object baz)
	{
		switch (i) {
		case 0:
			baz = 1;
			return;
		}
	}
}</string>
    <string>// CS0177: The out parameter `val' must be assigned to before control leaves the current method
// Line: 12

public class A
{
	public bool GetValue (out int val)
	{
		val = 0;
		return true;
	}

	public void ReallyGetValue (out int val)
	{
		if (AlwaysReturnTrue () || GetValue (out val)) {
		}
	}

	public bool AlwaysReturnTrue ()
	{
		return true;
	}
}</string>
    <string>// CS0177: The out parameter `x' must be assigned to before control leaves the current method
// Line: 6

public class GotoWithOut
{
	public static void Test (bool cond, out int x)
	{
		if (cond)
		{
			goto Label2;
		}
		else
		{
			goto Label;
		}
		Label:
		x = 0;
		Label2:
		return;
	}
}</string>
    <string>// CS0177: The out parameter `f' must be assigned to before control leaves the current method
// Line: 5

class ClassMain {
	public static void test2 (int a, out float f)
	{
		// CS0177
		if (a == 5)
			return;

		f = 8.53F;
	}
}

</string>
    <string>// CS0177: The out parameter `f' must be assigned to before control leaves the current method
// Line: 5

class C {
	public static void test3 (out float f)
	{
		try {
			f = 8.53F;
		} catch {
			return;
		}
	}
}

</string>
    <string>// CS0177: The out parameter `f' must be assigned to before control leaves the current method
// Line: 5

class C {
	public static void test (int a, out float f)
	{
		do {
			// CS0177
			if (a == 8) {
				System.Console.WriteLine ("Hello");
				return;
			}
		} while (false);

		f = 1.3F;
		return;
	}
}

</string>
    <string>// CS0177: The out parameter `a' must be assigned to before control leaves the current method
// Line: 21

using System;

class OutputParam
{
    public static void Main(string[] args)
    {
	 int a;
	 Method(out a);
	 Console.WriteLine(a);
    }

    public static void Method(out int a)
    {
	int b;

	try {
	    b = 5;
	} catch (Exception) { return; }

	a = b;
    }
}
</string>
    <string>// CS0177: The out parameter `a' must be assigned to before control leaves the current method
// Line: 21

using System;

class OutputParam
{
    public static void Main(string[] args)
    {
	 int a;
	 Method(out a);
	 Console.WriteLine(a);
    }

    public static void Method(out int a)
    {
	int b;

	try {
	    b = 5;
	    return;
	} catch (Exception) { throw; }

	a = b;
    }
}
</string>
    <string>// CS0177: The out parameter `a' must be assigned to before control leaves the current method
// Line: 6

class Foo {
	static void test39 (out int a)
	{
		int x_0 = 0;
		int ll_1 = 0;
        
		switch (0) {
		default:
			switch (x_0) {
			default:
				if (ll_1 == 0)
					break;
				else
					goto k_1;
			}
			a = 5;
			break;
		k_1:
			break;
		}
	}

	static void Main () { int x; test39 (out x); }
}

</string>
    <string>// CS0177: The out parameter `output' must be assigned to before control leaves the current method
// Line: 10

class Test
{
	delegate T Creator&lt;T&gt; ();

	static bool TryAction&lt;T&gt; (Creator&lt;T&gt; creator, out T output) where T : struct
	{
		return false;
	}
}
</string>
    <string>// CS0177: The out parameter `o' must be assigned to before control leaves the current method
// Line: 4
// Compiler options: -langversion:experimental

class Test(out int o) 
{
}
</string>
    <string>// CS0177: The out parameter `display' must be assigned to before control leaves the current method
// Line: 5

class ClassMain {
        void Error(out bool display) {
        }
    
        public static void Main() {
        }
}

</string>
  </Examples>
</ErrorDocumentation>