summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2009-07-14 16:30:06 -0700
committerRobert Griesemer <gri@golang.org>2009-07-14 16:30:06 -0700
commitf7e1bf4fe2b892b4bff1d9233dd135971031d79e (patch)
treead62218ff3ae138dcb469f2ec15a16ae95ec21d1
parent916046002c64014b680028678f28b565cf58e192 (diff)
downloadgolang-f7e1bf4fe2b892b4bff1d9233dd135971031d79e.tar.gz
- removed TODO, minor adjustments
R=rsc DELTA=16 (6 added, 1 deleted, 9 changed) OCL=31638 CL=31641
-rw-r--r--src/cmd/godoc/godoc.go23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go
index 3b3d4faba..d2150d29e 100644
--- a/src/cmd/godoc/godoc.go
+++ b/src/cmd/godoc/godoc.go
@@ -169,10 +169,13 @@ func parse(path string, mode uint) (*ast.Program, *parseErrors) {
prog, err := parser.Parse(path, src, mode);
if err != nil {
- // sort and convert error list
+ var errs []parseError;
if errors, ok := err.(scanner.ErrorList); ok {
- sort.Sort(errors);
- errs := make([]parseError, len(errors) + 1); // +1 for final fragment of source
+ // convert error list (already sorted)
+ // TODO(gri) If the file contains //line comments, the errors
+ // may not be sorted in increasing file offset value
+ // which will lead to incorrect output.
+ errs = make([]parseError, len(errors) + 1); // +1 for final fragment of source
offs := 0;
for i, r := range errors {
// Should always be true, but check for robustness.
@@ -184,11 +187,13 @@ func parse(path string, mode uint) (*ast.Program, *parseErrors) {
errs[i].msg = r.Msg;
}
errs[len(errors)].src = src[offs : len(src)];
- return nil, &parseErrors{path, errs, src};
} else {
- // TODO should have some default handling here to be more robust
- panic("unreachable");
+ // single error of unspecified type
+ errs = make([]parseError, 2);
+ errs[0] = parseError{[]byte{}, 0, err.String()};
+ errs[1].src = src;
}
+ return nil, &parseErrors{path, errs, src};
}
return prog, nil;
@@ -478,7 +483,7 @@ func findPackage(path string) (canonical string, pd *pakDesc, dirs dirList) {
}
-func (p *pakDesc) Doc() (*doc.PackageDoc, *parseErrors) {
+func (p *pakDesc) doc() (*doc.PackageDoc, *parseErrors) {
if p == nil {
return nil, nil;
}
@@ -519,7 +524,7 @@ func servePkg(c *http.Conn, r *http.Request) {
return;
}
- pdoc, errors := desc.Doc();
+ pdoc, errors := desc.doc();
if errors != nil {
serveParseErrors(c, errors);
return;
@@ -695,7 +700,7 @@ func main() {
}
_, desc, dirs := findPackage(flag.Arg(0));
- pdoc, errors := desc.Doc();
+ pdoc, errors := desc.doc();
if errors != nil {
err := parseerrorText.Execute(errors, os.Stderr);
if err != nil {