V_3 = 3,
V_4 = 4,
V_5 = 5,
- Future = 100,
+ V_6 = 6,
+ Experimental = 100,
- Default = LanguageVersion.V_5,
+ Default = LanguageVersion.V_6,
}
public enum RuntimeVersion
public int VerboseParserFlag;
public int FatalCounter;
public bool Stacktrace;
+ public bool BreakOnInternalError;
#endregion
+ public string GetResourceStrings;
+
public bool ShowFullPaths;
//
public RuntimeVersion StdLibRuntimeVersion;
+ public string RuntimeMetadataVersion;
+
public bool WriteMetadataOnly;
readonly List<string> conditional_symbols;
UnknownOption
}
- static readonly char[] argument_value_separator = new char[] { ';', ',' };
- static readonly char[] numeric_value_separator = new char[] { ';', ',', ' ' };
+ static readonly char[] argument_value_separator = { ';', ',' };
+ static readonly char[] numeric_value_separator = { ';', ',', ' ' };
readonly TextWriter output;
readonly Report report;
return;
}
- string[] files = null;
+ string[] files;
try {
files = Directory.GetFiles (path, pattern);
} catch (System.IO.DirectoryNotFoundException) {
" --stacktrace Shows stack trace at error location\n" +
" --timestamp Displays time stamps of various compiler events\n" +
" -v Verbose parsing (for debugging the parser)\n" +
- " --mcs-debug X Sets MCS debugging level to X\n");
+ " --mcs-debug X Sets MCS debugging level to X\n" +
+ " --break-on-ice Breaks compilation on internal compiler error");
}
//
settings.WarningsAreErrors = true;
parser_settings.WarningsAreErrors = true;
} else {
- if (!ProcessWarningsList (value, v => settings.AddWarningAsError (v)))
+ if (!ProcessWarningsList (value, settings.AddWarningAsError))
return ParseResult.Error;
}
return ParseResult.Success;
if (value.Length == 0) {
settings.WarningsAreErrors = false;
} else {
- if (!ProcessWarningsList (value, v => settings.AddWarningOnly (v)))
+ if (!ProcessWarningsList (value, settings.AddWarningOnly))
return ParseResult.Error;
}
return ParseResult.Success;
return ParseResult.Error;
}
- if (!ProcessWarningsList (value, v => settings.SetIgnoreWarning (v)))
+ if (!ProcessWarningsList (value, settings.SetIgnoreWarning))
return ParseResult.Error;
return ParseResult.Success;
switch (value.ToLowerInvariant ()) {
case "iso-1":
+ case "1":
settings.Version = LanguageVersion.ISO_1;
return ParseResult.Success;
case "default":
settings.Version = LanguageVersion.Default;
return ParseResult.Success;
+ case "2":
case "iso-2":
settings.Version = LanguageVersion.ISO_2;
return ParseResult.Success;
case "5":
settings.Version = LanguageVersion.V_5;
return ParseResult.Success;
- case "future":
- settings.Version = LanguageVersion.Future;
+ case "6":
+ settings.Version = LanguageVersion.V_6;
return ParseResult.Success;
+ case "experimental":
+ settings.Version = LanguageVersion.Experimental;
+ return ParseResult.Success;
+ case "future":
+ report.Warning (8000, 1, "Language version `future' is no longer supported");
+ goto case "6";
}
- report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3', `4', `5', `Default' or `Future'", value);
+ report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 6", value);
return ParseResult.Error;
case "/codepage":
}
return ParseResult.Success;
+ case "runtimemetadataversion":
+ if (value.Length == 0) {
+ Error_RequiresArgument (option);
+ return ParseResult.Error;
+ }
+
+ settings.RuntimeMetadataVersion = value;
+ return ParseResult.Success;
+
default:
return ParseResult.UnknownOption;
}
settings.WriteMetadataOnly = true;
return ParseResult.Success;
+ case "--break-on-ice":
+ settings.BreakOnInternalError = true;
+ return ParseResult.Success;
+
default:
- if (arg.StartsWith ("--fatal", StringComparison.Ordinal)){
+ if (arg.StartsWith ("--fatal", StringComparison.Ordinal)) {
int fatal = 1;
if (arg.StartsWith ("--fatal=", StringComparison.Ordinal))
int.TryParse (arg.Substring (8), out fatal);
return ParseResult.Success;
}
+ if (arg.StartsWith ("--getresourcestrings:", StringComparison.Ordinal)) {
+ string file = arg.Substring (21).Trim ();
+ if (file.Length < 1) {
+ Error_RequiresArgument (arg);
+ return ParseResult.Error;
+ }
+
+ settings.GetResourceStrings = file;
+ return ParseResult.Success;
+ }
+
return ParseResult.UnknownOption;
}
}