rem: throw new Error("Comment error: " + name + " @return does not have a description"); 
add: throw ("Comment error: " + name + " @return does not have a description"); 
context: function handleTags(name, args, comment) {    var argMap = new Object();    for (var i = 0; i < args.length; i++) {        argMap[args[i]] = "";    }    var tagStart = comment.search(/@(param|return)/);    if (tagStart == -1) {        comment = comment.replace(/^[\s\r\n]*/, "");        comment = comment.replace(/[\s\r\n]*$/, "");        print("<comment>" + comment + "</comment>\n");        return;    }    tagString = comment.substring(tagStart);    comment = comment.substring(0, tagStart - 1);    tagString = tagString.replace(/\n/g, " ");    var tags = tagString.match(/(@[^@]*)/g);    for (var i = 0; i < tags.length; i++) {        var tag = tags[i];        var paramMatch = tag.match(/^@param\s+(\S+)\s+(.*)/);        if (paramMatch) {            var arg = paramMatch[1];            var argDesc = paramMatch[2];            if (argMap[arg] == null) {                throw new Error("Comment error: " + name + " @param " + arg + " does not match any argument");            }            argDesc = argDesc.replace(/^\s+/, "");            argDesc = argDesc.replace(/\s+$/, "");            argMap[arg] = argDesc;        }        var returnMatch = tag.match(/^@return\s+(\S+)\s+(.*)/);        if (returnMatch) {            var returnType = returnMatch[1];            if (!returnType.match(/^(string|number|boolean)(\[\])?$/)) {                throw new Error("Comment error: " + name + " @return type " + returnType + " is invalid; must be one of: string, number, boolean, string[], number[], boolean[]");            }            var returnDesc = returnMatch[2];            if (returnDesc == null) {                throw new Error("Comment error: " + name + " @return does not have a description");            }            returnDesc = returnDesc.replace(/^\s+/, "");            returnDesc = returnDesc.replace(/\s+$/, "");            print("<return type=\"" + returnType + "\">" + returnDesc + "</return>\n");        }    }    for (var i = 0; i < args.length; i++) {        if ("" == argMap[args[i]]) throw new Error("Comment error: param " + args[i] + " has no description");        print("<param name=\"" + args[i] + "\">" + argMap[args[i]] + "</param>\n");    }    comment = comment.replace(/^[\s\r\n]*/, "");    comment = comment.replace(/[\s\r\n]*$/, "");    print("<comment>" + comment + "</comment>\n");}
meta: 3428	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/3428/1f5355be91df93209cc7fbdce067720c47c1a9f4/doc.js/clean/src/main/resources/doctool/doc.js