[mcs] Adds minor langversion support
authorMarek Safar <marek.safar@gmail.com>
Tue, 3 Oct 2017 10:21:57 +0000 (12:21 +0200)
committerMarek Safar <marek.safar@gmail.com>
Tue, 3 Oct 2017 13:24:12 +0000 (15:24 +0200)
mcs/errors/cs1617.cs
mcs/errors/cs8303.cs [new file with mode: 0644]
mcs/mcs/settings.cs

index cfa63a7d8355e7be6928a4cfa58b370cb57d8743..ae9c328960b4d1281ed4ee34faf12eb80fa4c5ed 100644 (file)
@@ -1,3 +1,3 @@
-// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 7
+// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', Default, Latest or value in range 1 to 7.2
 // Line: 0
 // Compiler options: -langversion:ISO
diff --git a/mcs/errors/cs8303.cs b/mcs/errors/cs8303.cs
new file mode 100644 (file)
index 0000000..2761d41
--- /dev/null
@@ -0,0 +1,3 @@
+// CS8303: Specified language version `0.5' cannot have leading zeroes
+// Line: 0
+// Compiler options: -langversion:0.5
\ No newline at end of file
index 98083a7e0ec4b46803e1d2eb34a312883e7d7151..37664187c71ff19aa466fb3abab4677f72b7e62a 100644 (file)
@@ -30,9 +30,12 @@ namespace Mono.CSharp {
                V_5 = 5,
                V_6 = 6,
                V_7 = 7,
+               V_7_1 = 71,
+               V_7_2 = 72,
                Experimental = 100,
 
                Default = V_7,
+               Latest = V_7_2
        }
 
        public enum RuntimeVersion
@@ -1143,36 +1146,57 @@ namespace Mono.CSharp {
                                switch (value.ToLowerInvariant ()) {
                                case "iso-1":
                                case "1":
+                               case "1.0":
                                        settings.Version = LanguageVersion.ISO_1;
                                        return ParseResult.Success;
                                case "default":
                                        settings.Version = LanguageVersion.Default;
                                        return ParseResult.Success;
                                case "2":
+                               case "2.0":
                                case "iso-2":
                                        settings.Version = LanguageVersion.ISO_2;
                                        return ParseResult.Success;
                                case "3":
+                               case "3.0":
                                        settings.Version = LanguageVersion.V_3;
                                        return ParseResult.Success;
                                case "4":
+                               case "4.0":
                                        settings.Version = LanguageVersion.V_4;
                                        return ParseResult.Success;
                                case "5":
+                               case "5.0":
                                        settings.Version = LanguageVersion.V_5;
                                        return ParseResult.Success;
                                case "6":
+                               case "6.0":
                                        settings.Version = LanguageVersion.V_6;
                                        return ParseResult.Success;
                                case "7":
+                               case "7.0":
                                        settings.Version = LanguageVersion.V_7;
                                        return ParseResult.Success;
+                               case "7.1":
+                                       settings.Version = LanguageVersion.V_7_1;
+                                       return ParseResult.Success;
+                               case "7.2":
+                                       settings.Version = LanguageVersion.V_7_2;
+                                       return ParseResult.Success;
+                               case "latest":
+                                       settings.Version = LanguageVersion.Latest;
+                                       return ParseResult.Success;
                                case "experimental":
                                        settings.Version = LanguageVersion.Experimental;
                                        return ParseResult.Success;
                                }
 
-                               report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 7", value);
+                               if (value.StartsWith ("0", StringComparison.Ordinal)) {
+                                       report.Error (8303, "Specified language version `{0}' cannot have leading zeroes", value);
+                               } else {
+                                       report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default, Latest or value in range 1 to 7.2", value);
+                               }
+
                                return ParseResult.Error;
 
                        case "/codepage":