X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Filasm%2FReport.cs;h=dd2afd2ee27ff30c1a48c16f37c50334227f785e;hb=b6ec9e0276fb6dcc542e630026fe1ca21e82d256;hp=1d6d7718a36dbbb94ada805f32eee6e82553b389;hpb=b0e23daaaf004b71d3b757a8c7540756335681ed;p=mono.git diff --git a/mcs/ilasm/Report.cs b/mcs/ilasm/Report.cs index 1d6d7718a36..dd2afd2ee27 100644 --- a/mcs/ilasm/Report.cs +++ b/mcs/ilasm/Report.cs @@ -13,45 +13,76 @@ using System.IO; namespace Mono.ILASM { - public class Report { + public abstract class Report { - private int error_count; - private int mark_count; - private bool quiet; + private static int error_count; + private static int mark_count; + private static bool quiet; + /* Current file being processed */ + private static string file_path; - public Report () : this (false) + static Report () { - + error_count = 0; + quiet = false; } - public Report (bool quiet) - { - this.error_count = 0; - this.quiet = quiet; + public static int ErrorCount { + get { return error_count; } } - public int ErrorCount { - get { return error_count; } + public static bool Quiet { + get { return quiet; } + set { quiet = value; } + } + + public static string FilePath { + get { return file_path; } + set { file_path = value; } } - public void AssembleFile (string file, string listing, + public static void AssembleFile (string file, string listing, string target, string output) { - if (quiet) - return; - Console.WriteLine ("Assembling '{0}' , {1}, to {2} --> '{3}'", file, GetListing (listing), target, output); Console.WriteLine (); } - public void Error (string message) + public static void Error (string message) + { + Error (null, message); + } + + public static void Error (Location location, string message) { error_count++; - Console.WriteLine (message); + throw new ILAsmException (file_path, location, message); + } + + public static void Warning (string message) + { + Warning (null, message); } - private string GetListing (string listing) + public static void Warning (Location location, string message) + { + string location_str = " : "; + if (location != null) + location_str = " (" + location.line + ", " + location.column + ") : "; + + Console.Error.WriteLine (String.Format ("{0}{1}Warning -- {2}", + (file_path != null ? file_path : ""), location_str, message)); + } + + public static void Message (string message) + { + if (quiet) + return; + Console.WriteLine (message); + } + + private static string GetListing (string listing) { if (listing == null) return "no listing file"; @@ -60,5 +91,66 @@ namespace Mono.ILASM { } + public class ILAsmException : Exception { + + string message; + string file_path; + Location location; + + public ILAsmException (string file_path, Location location, string message) + { + this.file_path = file_path; + this.location = location; + this.message = message; + } + + public ILAsmException (Location location, string message) + : this (null, location, message) + { + } + + public ILAsmException (string message) + : this (null, null, message) + { + } + + public override string Message { + get { return message; } + } + + public Location Location { + get { return location; } + set { location = value; } + } + + public string FilePath { + get { return file_path; } + set { file_path = value; } + } + + public override string ToString () + { + string location_str = " : "; + if (location != null) + location_str = " (" + location.line + ", " + location.column + ") : "; + + return String.Format ("{0}{1}Error : {2}", + (file_path != null ? file_path : ""), location_str, message); + } + + } + + public class InternalErrorException : Exception { + public InternalErrorException () + : base ("Internal error") + { + } + + public InternalErrorException (string message) + : base (message) + { + } + } + }