<?xml version="1.0"?>
<ErrorDocumentation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorName>CS1644</ErrorName>
  <Examples>
    <string>// CS1644: Feature `expression bodied members' cannot be used because it is not part of the C# 5.0 language specification
// Line: 7
// Compiler options: -langversion:5

class C
{
	int Prop =&gt; 3;
}</string>
    <string>// CS1644: Feature `nullable types' cannot be used because it is not part of the C# 1.0 language specification
// Line: 9
// Compiler options: -langversion:ISO-1

struct C
{
	void G ()
	{
		object o = (C?[]) this;
	}
}
</string>
    <string>// CS1644: Feature `partial types' cannot be used because it is not part of the C# 1.0 language specification
// Line: 5
// Compiler options: -langversion:ISO-1

partial class Test
{
}</string>
    <string>// CS1644: Feature `expression bodied members' cannot be used because it is not part of the C# 5.0 language specification
// Line: 7
// Compiler options: -langversion:5

class C
{
	int M () =&gt; 0;
}</string>
    <string>// CS1644: Feature `auto-implemented properties' cannot be used because it is not part of the C# 2.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-2

class P
{
	public string Name { get; set; }
}
</string>
    <string>// CS1644: Feature `discards' cannot be used because it is not part of the C# 6.0 language specification
// Line: 9
// Compiler options: -langversion:6

class X
{
	int Test ()
	{
		_ = 2;
	}
}
</string>
    <string>// CS1644: Feature `asynchronous functions' cannot be used because it is not part of the C# 4.0 language specification
// Line: 9
// Compiler options: -langversion:4

using System;

class C
{
	public async void Foo ()
	{
	}
}

</string>
    <string>// CS1644: Feature `ref structs' cannot be used because it is not part of the C# 7.0 language specification
// Line: 5
// Compiler options: -langversion:7

ref struct S
{
}</string>
    <string>// CS1644: Feature `optional parameter' cannot be used because it is not part of the C# 2.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-2

public class C
{
	public C (int a = 0)
	{
	}
}
</string>
    <string>// CS1644: Feature `auto-implemented property initializer' cannot be used because it is not part of the C# 5.0 language specification
// Line: 7
// Compiler options: -langversion:5

class C
{
	public static int P { get; } = 4;
}</string>
    <string>// CS1644: Feature `extension methods' cannot be used because it is not part of the C# 2.0 language specification
// Line: 17
// Compiler options: -langversion:ISO-2

static class Extensions
{
	static string Foo (string s, this bool b, int i)
	{
		return s;
	}
}
</string>
    <string>// CS1644: Feature `exception filter' cannot be used because it is not part of the C# 5.0 language specification
// Line: 14
// Compiler options: -langversion:5

using System;

class X
{
	public static void Main ()
	{
		int x = 4;
		try {
			throw null;
		} catch (Exception) when (x &gt; 0) {
		}
	}
}
</string>
    <string>// CS1644: Feature `expression body event accessor' cannot be used because it is not part of the C# 6.0 language specification 
// Line: 11
// Compiler options: -langversion:6

using System;

class C
{
	public event EventHandler Event
	{
		add =&gt; Ignore ();
	}

	static void Ignore ()
	{
	}
}</string>
    <string>// CS1644: Feature `named argument' cannot be used because it is not part of the C# 3.0 language specification
// Line: 13
// Compiler options: -langversion:3

public class C
{
	static void Foo (int i)
	{
	}
	
	public static void Main ()
	{
		Foo (i : 3);
	}
}
</string>
    <string>// CS1644: Feature `nullable types' cannot be used because it is not part of the C# 1.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-1

class Test
{
	int? i;
	static void Main () {}
}
</string>
    <string>// CS1644: Feature `namespace alias qualifier' cannot be used because it is not part of the C# 1.0 language specification
// Line: 9
// Compiler options: -langversion:ISO-1

class Program
{
	static void Main ()
	{
		global::System.Console.WriteLine ("ok");
	}
}
</string>
    <string>// CS1644: Feature `dictionary initializer' cannot be used because it is not part of the C# 5.0 language specification
// Line: 12
// Compiler options: -langversion:5

using System.Collections.Generic;

class C
{
	public static void Main ()
	{
		var d = new Dictionary&lt;string, int&gt; {
			["a"] = 1
		};
	}
}</string>
    <string>// CS1644: Feature `expression body property accessor' cannot be used because it is not part of the C# 6.0 language specification 
// Line: 11
// Compiler options: -langversion:6

using System;

class C
{
	public int Integer
	{
		get =&gt; 0;
	}
}</string>
    <string>// CS1644: Feature `lambda expressions' cannot be used because it is not part of the C# 2.0 language specification
// Line: 11
// Compiler options: -langversion:ISO-2

class C
{
	delegate void D ();
	
	public void Foo ()
	{
		D e = () =&gt; { };
	}
}

</string>
    <string>// CS1644: Feature `private protected' cannot be used because it is not part of the C# 6.0 language specification
// Line: 7
// Compiler options: -langversion:6

class C
{
	private protected enum E
	{
	}
}</string>
    <string>// CS1644: Feature `object initializers' cannot be used because it is not part of the C# 2.0 language specification
// Line: 14
// Compiler options: -langversion:ISO-2

class Data
{
	public int Value;
}

class A
{
	void Foo ()
	{
		new Data () { Value = 3 };
	}
}
</string>
    <string>// CS1644: Feature `tuples' cannot be used because it is not part of the C# 6.0 language specification
// Line: 7
// Compiler options: -langversion:6

class Class
{
	static (int, bool) Foo ()
	{
		return;
	}	
}
</string>
    <string>// CS1644: Feature `collection initializers' cannot be used because it is not part of the C# 2.0 language specification
// Line: 9
// Compiler options: -langversion:ISO-2

using System.Collections.Generic;

class A
{
	void Foo ()
	{
		object o = new List&lt;int&gt; { 1, 2, 3 };
	}
}
</string>
    <string>// CS1644: Feature `digit separators' cannot be used because it is not part of the C# 6.0 language specification
// Line: 9
// Compiler options: -langversion:6

class X
{
	int Test ()
	{
		var i = 1_0;
	}
}
</string>
    <string>// CS1644: Feature `static classes' cannot be used because it is not part of the C# 1.0 language specification
// Line: 5
// Compiler options: -langversion:ISO-1

static class Class {
}
</string>
    <string>// CS1644: Feature `nullable types' cannot be used because it is not part of the C# 1.0 language specification
// Line: 9
// Compiler options: -langversion:ISO-1

public class Test
{
	static void Main ()
	{
		bool? testbool;
	}
}
</string>
    <string>// CS1644: Feature `interpolated strings' cannot be used because it is not part of the C# 5.0 language specification
// Line: 9
// Compiler options: -langversion:5

public class Program
{
	public static void Main()
	{
		var x = $"I should not compile";
	}
}
</string>
    <string>// CS1644: Feature `null propagating operator' cannot be used because it is not part of the C# 5.0 language specification
// Line: 10
// Compiler options: -langversion:5

class C
{
	static void Main ()
	{
		string[] a = null;
		var s = a?[0];
	}
}</string>
    <string>// CS1644: Feature `null propagating operator' cannot be used because it is not part of the C# 5.0 language specification
// Line: 10
// Compiler options: -langversion:5

class C
{
	static void Main ()
	{
		object o = null;
		string s = o?.ToString ();
	}
}</string>
    <string>// CS1644: Feature `access modifiers on properties' cannot be used because it is not part of the C# 1.0 language specification
// Line: 13
// Compiler options: -langversion:ISO-1

class Class {

	public int Count {

		get {
			return 0;
		}

		protected set {
		}
	}
}
</string>
    <string>// CS1644: Feature `implicitly typed local variable' cannot be used because it is not part of the C# 2.0 language specification
// Line:  9
// Compiler options: -langversion:ISO-2

class M
{
	public static void Main ()
	{
		var a = 1;
	}
}
</string>
    <string>// CS1644: Feature `out variable declaration' cannot be used because it is not part of the C# 5.0 language specification
// Line: 9
// Compiler options: -langversion:5

class C
{
	public static void Main ()
	{
		int.TryParse ("0", out var v);
	}
}</string>
    <string>// CS1644: Feature `primary constructor' cannot be used because it is not part of the C# 5.0 language specification
// Line: 7
// Compiler options: -langversion:5

class C (int arg)
{
}</string>
    <string>// CS1644: Feature `expression bodied members' cannot be used because it is not part of the C# 5.0 language specification
// Line: 7
// Compiler options: -langversion:5

class C
{
	int this [long arg] =&gt; -9;
}</string>
    <string>// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 3.0 language specification
// Line: 5
// Compiler options: -langversion:3

public interface IFoo&lt;in T&gt;
{
}
</string>
    <string>// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification
// Line: 5
// Compiler options: -langversion:iso-2

 public interface IFoo&lt;out T&gt; {
 }
</string>
    <string>// CS1644: Feature `nameof operator' cannot be used because it is not part of the C# 5.0 language specification
// Line: 9
// Compiler options: -langversion:5

class C
{
	public static void Main ()
	{
		var res = nameof (C.Main);
	}
}</string>
    <string>// CS1644: Feature `byref locals and returns' cannot be used because it is not part of the C# 6.0 language specification
// Line: 9
// Compiler options: -langversion:6

class Text
{
	static ref long Foo ()
	{
		throw new System.NotImplementedException ();
	}
}
</string>
    <string>// CS1644: Feature `generics' cannot be used because it is not part of the C# 1.0 language specification
// Line: 5
// Compiler options: -langversion:ISO-1

class X&lt;V&gt;
{
}

class X
{
	static void Main ()
	{ }
}
</string>
    <string>// CS1644: Feature `throw expression' cannot be used because it is not part of the C# 6.0 language specification
// Line: 5
// Compiler options: -langversion:6

static class Class
{
	int Prop =&gt; throw null;
}
</string>
    <string>// CS1644: Feature `default value expression' cannot be used because it is not part of the C# 1.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-1

class Test
{
	int i = default (int);
}
</string>
    <string>// CS1644: Feature `null coalescing operator' cannot be used because it is not part of the C# 1.0 language specification
// Line: 10
// Compiler options: -langversion:ISO-1

class C
{
	string program;

	internal string Program {
		get { return program ?? string.Empty; }
	}
}</string>
    <string>// CS1644: Feature `namespace alias qualifier' cannot be used because it is not part of the C# 1.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-1

class Program
{
	static global::System.Void Main ()
	{
	}
}
</string>
    <string>// CS1644: Feature `nameof operator' cannot be used because it is not part of the C# 5.0 language specification
// Line: 10
// Compiler options: -langversion:5

class C
{
	static void Main ()
	{
		var n = nameof (Main);
	}
}</string>
    <string>// CS1644: Feature `fixed size buffers' cannot be used because it is not part of the C# 1.0 language specification
// Line: 6
// Compiler options: -langversion:ISO-1

struct S {
    fixed long buffer [5];
}
</string>
    <string>// CS1644: Feature `generics' cannot be used because it is not part of the C# 1.0 language specification
// Line: 5
// Compiler options: -langversion:ISO-1

class Stack &lt; type &gt;
{
}

</string>
    <string>// CS1644: Feature `namespace alias qualifier' cannot be used because it is not part of the C# 1.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-1

class Program
{
	static void Main ()
	{
		System.Type t = typeof (global::System.Int32);
	}
}
</string>
    <string>// CS1644: Feature `implicitly typed arrays' cannot be used because it is not part of the C# 1.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-1

class A
{
	string[] array = new [] { "Foo", "Bar", "Baz" };
}
</string>
    <string>// CS1644: Feature `expression body property accessor' cannot be used because it is not part of the C# 6.0 language specification 
// Line: 11
// Compiler options: -langversion:6

using System;

class C
{
	public int this[int i]
	{
		get =&gt; i;
	}
}</string>
    <string>// CS1644: Feature `asynchronous functions' cannot be used because it is not part of the C# 4.0 language specification
// Line: 10
// Compiler options: -langversion:4

using System;

class C
{
	public void Foo ()
	{
		Action a = async () =&gt; { };
	}
}

</string>
    <string>// CS1644: Feature `tuples' cannot be used because it is not part of the C# 6.0 language specification
// Line: 9
// Compiler options: -langversion:6

class Class
{
	static void Main ()
	{
		var t = (a: 1, b: 2);
	}	
}
</string>
    <string>// CS1644: Feature `extensible fixed statement' cannot be used because it is not part of the C# 7.2 language specification 
// Line: 11
// Compiler options: -unsafe -langversion:7.2

using System;

unsafe class C
{
	public static void Main ()
	{
		fixed (int* p = new Fixable ()) {
		}
	}

	struct Fixable
	{
		public ref int GetPinnableReference ()
		{
			throw new NotImplementedException ();
		}
	}
}</string>
    <string>// CS1644: Feature `anonymous types' cannot be used because it is not part of the C# 1.0 language specification
// Line: 9
// Compiler options: -langversion:ISO-1

class A
{
	void Foo ()
	{
		var v = new { X = "Bar" };
	}
}
</string>
    <string>// CS1644: Feature `lambda expressions' cannot be used because it is not part of the C# 2.0 language specification
// Line: 11
// Compiler options: -langversion:ISO-2

using System;

class C
{
	public void Foo ()
	{
		Func&lt;int, int&gt; e = l =&gt; 1;
	}
}

</string>
    <string>// CS1644: Feature `using static' cannot be used because it is not part of the C# 5.0 language specification
// Line: 5
// Compiler options: -langversion:5

using static System;
</string>
    <string>// CS1644: Feature `readonly references' cannot be used because it is not part of the C# 7.0 language specification
// Line: 9
// Compiler options: -langversion:7

class X
{
	int i;

	ref readonly int Test ()
	{
		return ref i;
	}
}
</string>
    <string>// CS1644: Feature `partial methods' cannot be used because it is not part of the C# 2.0 language specification
// Line: 7
// Compiler options: -langversion:ISO-2

partial class P
{
	partial void Foo ();
}
</string>
    <string>// CS1644: Feature `switch expression of boolean type' cannot be used because it is not part of the C# 1.0 language specification
// Line: 8
// Compiler options: -langversion:ISO-1

class Class {
	public void Foo (bool b)
	{
		switch (b)
		{
			case true:
				break;
			case false:
				break;
		}
	}
}
</string>
    <string>// CS1644: Feature `query expressions' cannot be used because it is not part of the C# 2.0 language specification
// Line: 11
// Compiler options: -langversion:ISO-2

using System.Linq;

public class C
{
	public static void Main ()
	{
		var e = from a in "aaa" select a;
	}
}
</string>
    <string>// CS1644: Feature `readonly structs' cannot be used because it is not part of the C# 7.0 language specification
// Line: 5
// Compiler options: -langversion:7

readonly struct S
{
}</string>
    <string>// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification
// Line: 5
// Compiler options: -langversion:iso-2

 public interface IFoo&lt;in T&gt; {
 }
</string>
    <string>// CS1644: Feature `external alias' cannot be used because it is not part of the C# 1.0 language specification
// Line: 5
// Compiler options: -langversion:ISO-1 -r:a=System.dll

extern alias a;
</string>
    <string>// CS1644: Feature `default literal' cannot be used because it is not part of the C# 7.0 language specification
// Line: 7
// Compiler options: -langversion:7

class X
{
	int i = default;
}
</string>
    <string>// CS1644: Feature `pattern matching' cannot be used because it is not part of the C# 6.0 language specification
// Line: 9
// Compiler options: -langversion:6

class Class
{
	static void Foo (object arg)
	{
		if (arg is Type v) {
			return;
		}
	}	
}
</string>
  </Examples>
</ErrorDocumentation>