<?xml version="1.0"?>
<ErrorDocumentation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorName>CS1612</ErrorName>
  <Examples>
    <string>// CS1612: Cannot modify a value type return value of `R.Size'. Consider storing the value in a temporary variable
// Line: 19

struct R
{
	public S Size { get; set; }
}

struct S
{
	public float Height { get; set; }
}

public class Test
{
	public static void Main ()
	{
		var r = new R ();
		r.Size.Height = 3;
	}
}
</string>
    <string>// CS1612: Cannot modify a value type return value of `X.P'. Consider storing the value in a temporary variable
// Line: 9

using System;
class X {
	static void Main ()
	{

		bar (out P.x);
		Console.WriteLine ("Got: " + P.x);
	}

	static void bar (out int x) { x = 10; }

	static G P {
	 get {
		return g;
	 }
	}

	static G g = new G ();

	struct G {
		public int x;
	}
}
		
</string>
    <string>// CS1612: Cannot modify a value type return value of `bar.this[int]'. Consider storing the value in a temporary variable
// Line: 19

struct foo {
	public int x;
}

class bar {
	public foo this [int x] {
		get { return new foo (); }
		set { }
	}
}

class main {
	static void baz (out int x) { x = 5; }
	static void Main ()
	{
		bar b = new bar ();
		baz (out b [0].x);
	}
}
</string>
    <string>// CS1612: Cannot modify a value type return value of `Test.v(bool)'. Consider storing the value in a temporary variable
// Line: 28

public struct V
{
	public int this [int i] {
		set {
		}
	}
	
	public int x;
}

class Test
{
	V m_value;

	public static V v(bool b) { return new V (); }

	public Test ()
	{
		m_value = new V ();
	}

	public static void Main ()
	{
		Test t = new Test ();
		Test.v(true).x = 9;
	}
}
</string>
    <string>// CS1612: Cannot modify a value type return value of `X.P'. Consider storing the value in a temporary variable
// Line: 9

using System;
class X {
	static void Main ()
	{

		P.x = 10;
		Console.WriteLine ("Got: " + P.x);
	}

	static G P {
	 get {
		return g;
	 }
	}

	static G g = new G ();

	struct G {
		public int x;
	}
}
		
</string>
    <string>// CS1612: Cannot modify a value type return value of `X.P'. Consider storing the value in a temporary variable
// Line: 9

using System;
class X {
	static void Main ()
	{

		P.x += 10;
		Console.WriteLine ("Got: " + P.x);
	}

	static G P {
	 get {
		return g;
	 }
	}

	static G g = new G ();

	struct G {
		public int x;
	}
}
		
</string>
    <string>// CS1612: Cannot modify a value type return value of `bar.this[int]'. Consider storing the value in a temporary variable
// Line: 19

struct foo {
	public int x;
}

class bar {
	public foo this [int x] {
		get { return new foo (); }
		set { }
	}
}

class main {
	static void Main ()
	{
		bar b = new bar ();
		b [0].x = 5;
	}
}
</string>
    <string>// CS1612: Cannot modify a value type return value of `Test.v()'. Consider storing the value in a temporary variable
// Line: 28

public struct V
{
	public int this [int i] {
		set {
		}
	}
	
	public int x;
}

class Test
{
	V m_value;

	public V v() { return m_value; }

	public Test ()
	{
		m_value = new V ();
	}

	public static void Main ()
	{
		Test t = new Test ();
		t.v() [0] = 9;
	}
}
</string>
    <string>// CS1612: Cannot modify a value type return value of `Test.v'. Consider storing the value in a temporary variable
// Line: 28

public struct V
{
	public int this [int i] {
		set {
		}
	}
	
	public int x;
}

class Test
{
	V m_value;

	public V v { get { return m_value; } }

	public Test ()
	{
		m_value = new V ();
	}

	public static void Main ()
	{
		Test t = new Test ();
		t.v [0] = 9;
	}
}
</string>
  </Examples>
</ErrorDocumentation>