Merge branch 'master' of github.com:mono/mono
[mono.git] / mcs / class / Microsoft.Build.Utilities / Microsoft.Build.Utilities / Logger.cs
index 5d6a311e0026cfc07936cc315ef01ebb02f242c8..ac1153bbddcda9436c133ee9be39b7ff8d42427e 100644 (file)
@@ -28,6 +28,7 @@
 #if NET_2_0
 
 using System;
+using System.Text;
 using Microsoft.Build.Framework;
 
 namespace Microsoft.Build.Utilities
@@ -61,16 +62,47 @@ namespace Microsoft.Build.Utilities
 
                public virtual string FormatErrorEvent (BuildErrorEventArgs args)
                {
-                       return String.Format ("{0}({1},{2},{3},{4}): {5} error {6}: {7}",
-                               args.File, args.LineNumber, args.ColumnNumber, args.EndLineNumber, args.EndColumnNumber,
-                               args.Subcategory, args.Code, args.Message);
+                       StringBuilder sb = new StringBuilder ();
+
+                       sb.Append (args.File);
+                       AppendLineNumbers (sb, args.LineNumber, args.ColumnNumber, args.EndLineNumber, args.EndColumnNumber);
+                       sb.Append (": ");
+                       sb.Append (args.Subcategory);
+                       sb.Append (" error ");
+                       sb.Append (args.Code);
+                       sb.Append (": ");
+                       sb.Append (args.Message);
+
+                       return sb.ToString ();
                }
 
                public virtual string FormatWarningEvent (BuildWarningEventArgs args)
                {
-                       return String.Format ("{0}({1},{2},{3},{4}): {5} warning {6}: {7}",
-                               args.File, args.LineNumber, args.ColumnNumber, args.EndLineNumber, args.EndColumnNumber,
-                               args.Subcategory, args.Code, args.Message);
+                       StringBuilder sb = new StringBuilder ();
+
+                       sb.Append (args.File);
+                       AppendLineNumbers (sb, args.LineNumber, args.ColumnNumber, args.EndLineNumber, args.EndColumnNumber);
+                       sb.Append (": ");
+                       sb.Append (args.Subcategory);
+                       sb.Append (" warning ");
+                       sb.Append (args.Code);
+                       sb.Append (": ");
+                       sb.Append (args.Message);
+
+                       return sb.ToString ();
+               }
+
+               void AppendLineNumbers (StringBuilder sb, int line, int column, int endLine, int endColumn)
+               {
+                       if (line != 0 && column != 0 && endLine != 0 && endColumn != 0) {
+                               sb.AppendFormat ("({0},{1},{2},{3})", line, column, endLine, endColumn);
+                       } else if (line != 0 && column != 0) {
+                               sb.AppendFormat ("({0},{1})", line, column);
+                       } else if (line != 0) {
+                               sb.AppendFormat ("({0})", line);
+                       } else {
+                               sb.Append (" ");
+                       }
                }
 
                public abstract void Initialize (IEventSource eventSource);
@@ -87,4 +119,4 @@ namespace Microsoft.Build.Utilities
        }
 }
 
-#endif
\ No newline at end of file
+#endif