- string version;
- switch (RootContext.Version) {
- case LanguageVersion.ISO_1:
- version = "1.0";
- break;
- case LanguageVersion.ISO_2:
- version = "2.0";
- break;
- case LanguageVersion.Default_MCS:
- Report.Error (1644, loc, "Feature `{0}' is not available in Mono mcs compiler. Consider using Mono gmcs compiler instead",
- feature);
- return;
- default:
- throw new InternalErrorException ("Invalid feature version", RootContext.Version);
+ AbstractMessage msg = obj as AbstractMessage;
+ if (msg == null)
+ return false;
+
+ return code == msg.code && location.Equals (msg.location) && message == msg.message;
+ }
+
+ public override int GetHashCode ()
+ {
+ return code.GetHashCode ();
+ }
+
+ public abstract bool IsWarning { get; }
+
+ public Location Location {
+ get { return location; }
+ }
+
+ public abstract string MessageType { get; }
+
+ public string[] RelatedSymbols {
+ get { return extra_info; }
+ }
+
+ public string Text {
+ get { return message; }
+ }
+ }
+
+ sealed class WarningMessage : AbstractMessage
+ {
+ public WarningMessage (int code, Location loc, string message, List<string> extra_info)
+ : base (code, loc, message, extra_info)
+ {
+ }
+
+ public override bool IsWarning {
+ get { return true; }
+ }
+
+ public override string MessageType {
+ get {
+ return "warning";