X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Filasm%2FReport.cs;h=a7ebafe8afd6eca44c3de0af540220f57491c2a3;hb=d29f0045fc676a6d31a132868770e0bfa2582e23;hp=08fa3f039e6ce4f8ecd9e2c784eb7a9e60aab8e1;hpb=6cfd2055426c190ca2f6a9f8ca3af2da6f6a79d0;p=mono.git diff --git a/mcs/ilasm/Report.cs b/mcs/ilasm/Report.cs index 08fa3f039e6..a7ebafe8afd 100644 --- a/mcs/ilasm/Report.cs +++ b/mcs/ilasm/Report.cs @@ -13,49 +13,78 @@ 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); + } + + 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 void Message (string message) + public static void Message (string message) { if (quiet) return; Console.WriteLine (message); } - private string GetListing (string listing) + private static string GetListing (string listing) { if (listing == null) return "no listing file"; @@ -64,5 +93,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) + { + } + } + }