lib/qx/tool/compiler/Console.js
function(marker, showPosition) {
      var msg = qx.tool.compiler.Console.MESSAGE_IDS[marker.msgId]||marker.msgId;
      var str = "";
      var pos = marker.pos;
      if (showPosition !== false && pos && pos.start && pos.start.line) {
        str += "[" + pos.start.line;
        if (pos.start.column) {
          str += "," + pos.start.column;
        }
        if (pos.end && pos.end.line && 
            pos.end.line !== pos.start.line && 
            pos.end.column !== pos.start.column) {
          str += " to " + pos.end.line;
          if (pos.end.column) {
            str += "," + pos.end.column;
          }
        }
        str += "] ";
      }
      str += qx.lang.String.format(msg.message, marker.args||[]);
      return str;
    }
function(marker, showPosition) {
      var msg = qx.tool.compiler.Console.MESSAGE_IDS[marker.msgId]||marker.msgId;
      var str = "";
      var pos = marker.pos;
      if (showPosition !== false && pos && pos.start && pos.start.line) {
        str += "[" + pos.start.line;
        if (pos.start.column) {
          str += "," + pos.start.column;
        }
        if (pos.end && pos.end.line && 
            pos.end.line !== pos.start.line && 
            pos.end.column !== pos.start.column) {
          str += " to " + pos.end.line;
          if (pos.end.column) {
            str += "," + pos.end.column;
          }
        }
        str += "] ";
      }
      str += qx.lang.String.format(msg.message, marker.args||[]);
      return str;
    }
Decodes a marker into a String description
@param marker {Map} containing:
msgId {String}
start {Map} containing:
line {Integer}
column? {Integer}
end? {Map} containing:
line {Integer}
column? {Integer}
args? {Object[]}
@param showPosition {Boolean?} whether to include line/column info (default is true)
@return {String}