1
0
mirror of https://github.com/golang/go synced 2024-11-20 05:04:43 -07:00

- do not collect BUG comments w/o bug description

R=rsc
DELTA=17  (8 added, 0 deleted, 9 changed)
OCL=31670
CL=31674
This commit is contained in:
Robert Griesemer 2009-07-15 10:12:57 -07:00
parent 8d8245623f
commit 3d486d0d26

View File

@ -174,14 +174,20 @@ func copyCommentList(list []*ast.Comment) []*ast.Comment {
}
var bug_markers *regexp.Regexp; // Regexp constructor needs threads - cannot use init expression
var (
// Regexp constructor needs threads - cannot use init expressions
bug_markers *regexp.Regexp;
bug_content *regexp.Regexp;
)
// AddProgram adds the AST for a source file to the DocReader.
// Adding the same AST multiple times is a no-op.
//
func (doc *DocReader) AddProgram(prog *ast.Program) {
if bug_markers == nil {
bug_markers = makeRex("^/[/*][ \t]*BUG(\\([^)]*\\))?:?[ \t]*");
bug_markers = makeRex("^/[/*][ \t]*BUG\\(.*\\):[ \t]*"); // BUG(uid):
bug_content = makeRex("[^ \n\r\t]+"); // at least one non-whitespace char
}
if doc.name != prog.Name.Value {
@ -202,13 +208,15 @@ func (doc *DocReader) AddProgram(prog *ast.Program) {
// collect BUG(...) comments
for _, c := range prog.Comments {
text := c.List[0].Text;
m := bug_markers.Execute(string(text));
if len(m) > 0 {
// found a BUG comment;
// push a copy of the comment w/o the BUG prefix
list := copyCommentList(c.List);
list[0].Text = text[m[1] : len(text)];
doc.bugs.Push(&ast.CommentGroup{list, c.EndLine});
cstr := string(text);
if m := bug_markers.Execute(cstr); len(m) > 0 {
// found a BUG comment; maybe empty
if bstr := cstr[m[1] : len(cstr)]; bug_content.Match(bstr) {
// non-empty BUG comment; collect comment without BUG prefix
list := copyCommentList(c.List);
list[0].Text = text[m[1] : len(text)];
doc.bugs.Push(&ast.CommentGroup{list, c.EndLine});
}
}
}
}