List<int> warnings_as_error;
List<int> warnings_only;
- public static int DebugFlags = 0;
-
public const int RuntimeErrorId = 10000;
//
28, 67, 78,
105, 108, 109, 114, 162, 164, 168, 169, 183, 184, 197,
219, 251, 252, 253, 278, 282,
- 402, 414, 419, 420, 429, 436, 440, 458, 464, 465, 467, 469, 472,
- 612, 618, 626, 628, 642, 649, 652, 658, 659, 660, 661, 665, 672, 675, 693,
+ 402, 414, 419, 420, 429, 436, 437, 440, 458, 464, 465, 467, 469, 472, 473,
+ 612, 618, 626, 628, 642, 649, 652, 657, 658, 659, 660, 661, 665, 672, 675, 693,
728,
809, 824,
1030, 1058, 1066,
1522, 1570, 1571, 1572, 1573, 1574, 1580, 1581, 1584, 1587, 1589, 1590, 1591, 1592,
1607, 1616, 1633, 1634, 1635, 1685, 1690, 1691, 1692, 1695, 1696, 1699,
- 1700, 1701, 1702, 1709, 1717, 1718, 1720,
- 1901, 1981,
+ 1700, 1701, 1702, 1709, 1711, 1717, 1718, 1720, 1735,
+ 1901, 1956, 1981,
2002, 2023, 2029,
3000, 3001, 3002, 3003, 3005, 3006, 3007, 3008, 3009,
3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019,
--reporting_disabled;
}
- public void FeatureIsNotAvailable (Location loc, string feature)
+ public void FeatureIsNotAvailable (CompilerContext compiler, Location loc, string feature)
{
string version;
- switch (RootContext.Version) {
+ switch (compiler.Settings.Version) {
case LanguageVersion.ISO_1:
version = "1.0";
break;
version = "3.0";
break;
default:
- throw new InternalErrorException ("Invalid feature version", RootContext.Version);
+ throw new InternalErrorException ("Invalid feature version", compiler.Settings.Version);
}
Error (1644, loc,
return;
AbstractMessage msg;
- if (IsWarningAsError (code))
+ if (IsWarningAsError (code)) {
+ message = "Warning as Error: " + message;
msg = new ErrorMessage (code, loc, message, extra_information);
- else
+ } else {
msg = new WarningMessage (code, loc, message, extra_information);
+ }
extra_information.Clear ();
printer.Print (msg);
[Conditional ("MCS_DEBUG")]
static public void Debug (int category, string message, params object[] args)
{
- if ((category & DebugFlags) == 0)
- return;
+// if ((category & DebugFlags) == 0)
+// return;
StringBuilder sb = new StringBuilder (message);
//
// Generic base for any message writer
//
- public abstract class ReportPrinter {
- /// <summary>
- /// Whether to dump a stack trace on errors.
- /// </summary>
- public bool Stacktrace;
-
- int warnings, errors;
+ public abstract class ReportPrinter
+ {
+ #region Properties
- public int WarningsCount {
- get { return warnings; }
- }
-
- public int ErrorsCount {
- get { return errors; }
- }
+ public int FatalCounter { get; set; }
- protected virtual string FormatText (string txt)
- {
- return txt;
- }
+ public int ErrorsCount { get; protected set; }
+
+ public bool ShowFullPaths { get; set; }
+ //
+ // Whether to dump a stack trace on errors.
+ //
+ public bool Stacktrace { get; set; }
+
+ public int WarningsCount { get; private set; }
+
//
// When (symbols related to previous ...) can be used
//
get { return true; }
}
+ #endregion
+
+
+ protected virtual string FormatText (string txt)
+ {
+ return txt;
+ }
+
public virtual void Print (AbstractMessage msg)
{
- if (msg.IsWarning)
- ++warnings;
- else
- ++errors;
+ if (msg.IsWarning) {
+ ++WarningsCount;
+ } else {
+ ++ErrorsCount;
+
+ if (ErrorsCount == FatalCounter)
+ throw new Exception (msg.Text);
+ }
}
protected void Print (AbstractMessage msg, TextWriter output)
{
StringBuilder txt = new StringBuilder ();
if (!msg.Location.IsNull) {
- if (RootContext.ShowFullPaths)
+ if (ShowFullPaths)
txt.Append (msg.Location.ToStringFullName ());
else
txt.Append (msg.Location.ToString ());
public void Reset ()
{
- // Temporary hack for broken repl flow
- errors = warnings = 0;
+ // HACK: Temporary hack for broken repl flow
+ ErrorsCount = WarningsCount = 0;
}
}
+ sealed class NullReportPrinter : ReportPrinter
+ {
+ }
+
//
// Default message recorder, it uses two types of message groups.
// Common messages: messages reported in all sessions.
}
}
- class StreamReportPrinter : ReportPrinter
+ public class StreamReportPrinter : ReportPrinter
{
readonly TextWriter writer;
}
}
- class ConsoleReportPrinter : StreamReportPrinter
+ public class ConsoleReportPrinter : StreamReportPrinter
{
static readonly string prefix, postfix;
break;
case "xterm-color":
+ case "xterm-256color":
xterm_colors = true;
break;
}
{
}
- public int Fatal { get; set; }
-
static int NameToCode (string s)
{
switch (s) {
return sb.ToString ();
}
- int print_count;
public override void Print (AbstractMessage msg)
{
base.Print (msg);
if (Stacktrace)
Console.WriteLine (FriendlyStackTrace (new StackTrace (true)));
-
- if (++print_count == Fatal)
- throw new Exception (msg.Text);
}
public static string FriendlyStackTrace (Exception e)
ReferencesImporting,
PredefinedTypesInit,
ModuleDefinitionTotal,
- UsingVerification,
+ UsingResolve,
EmitTotal,
CloseTypes,
Resouces,
{ TimerType.ReferencesImporting, "Referenced assemblies importing" },
{ TimerType.PredefinedTypesInit, "Predefined types initialization" },
{ TimerType.ModuleDefinitionTotal, "Module definition" },
- { TimerType.UsingVerification, "Usings verification" },
+ { TimerType.UsingResolve, "Top-level usings resolve" },
{ TimerType.EmitTotal, "Resolving and emitting members blocks" },
{ TimerType.CloseTypes, "Module types closed" },
{ TimerType.Resouces, "Embedding resources" },
};
int counter = 0;
- double percentage = total.ElapsedMilliseconds / 100;
+ double percentage = (double) total.ElapsedMilliseconds / 100;
long subtotal = total.ElapsedMilliseconds;
foreach (var timer in timers) {
string msg = timer_names[(TimerType) counter++];