Xamarin Public Jenkins (auto-signing) 6bdd276d05 Imported Upstream version 5.0.0.42
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
2017-04-10 11:41:01 +00:00

158 lines
4.8 KiB
C#

//
// Mono.ILASM.Report
//
// Author(s):
// Jackson Harper (Jackson@LatitudeGeo.com)
//
// (C) 2003 Jackson Harper, All rights reserved
//
using System;
using System.IO;
namespace Mono.ILASM {
public abstract class Report {
private static int error_count;
private static bool quiet;
/* Current file being processed */
private static string file_path;
static Report ()
{
error_count = 0;
quiet = false;
}
public static 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 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 static void Error (string message)
{
Error (null, message);
}
public static void Error (Location location, string message)
{
error_count++;
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 static void Message (string message)
{
if (quiet)
return;
Console.WriteLine (message);
}
private static string GetListing (string listing)
{
if (listing == null)
return "no listing file";
return listing;
}
}
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)
{
}
}
}