From 33faa4ebb9aedbe821b57b9c645d3be72100ebe3 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 5 Oct 2016 15:25:28 -0700 Subject: [PATCH] go/importer: better error messages when export data is not found Fixes #17281. Change-Id: I4e639998dbe3baa98879f1becc37d7c4d19351e7 Reviewed-on: https://go-review.googlesource.com/30473 Reviewed-by: Alan Donovan --- src/go/internal/gcimporter/exportdata.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/go/internal/gcimporter/exportdata.go b/src/go/internal/gcimporter/exportdata.go index 4c0d2fe761..c12e459c3d 100644 --- a/src/go/internal/gcimporter/exportdata.go +++ b/src/go/internal/gcimporter/exportdata.go @@ -8,7 +8,6 @@ package gcimporter import ( "bufio" - "errors" "fmt" "io" "strconv" @@ -29,7 +28,7 @@ func readGopackHeader(r *bufio.Reader) (name string, size int, err error) { s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10])) size, err = strconv.Atoi(s) if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' { - err = errors.New("invalid archive header") + err = fmt.Errorf("invalid archive header") return } name = strings.TrimSpace(string(hdr[:16])) @@ -46,6 +45,7 @@ func FindExportData(r *bufio.Reader) (hdr string, err error) { // Read first line to make sure this is an object file. line, err := r.ReadSlice('\n') if err != nil { + err = fmt.Errorf("can't find export data (%v)", err) return } @@ -58,13 +58,14 @@ func FindExportData(r *bufio.Reader) (hdr string, err error) { // First entry should be __.PKGDEF. if name != "__.PKGDEF" { - err = errors.New("go archive is missing __.PKGDEF") + err = fmt.Errorf("go archive is missing __.PKGDEF") return } // Read first line of __.PKGDEF data, so that line // is once again the first line of the input. if line, err = r.ReadSlice('\n'); err != nil { + err = fmt.Errorf("can't find export data (%v)", err) return } } @@ -72,7 +73,7 @@ func FindExportData(r *bufio.Reader) (hdr string, err error) { // Now at __.PKGDEF in archive or still at beginning of file. // Either way, line should begin with "go object ". if !strings.HasPrefix(string(line), "go object ") { - err = errors.New("not a go object file") + err = fmt.Errorf("not a Go object file") return } @@ -80,6 +81,7 @@ func FindExportData(r *bufio.Reader) (hdr string, err error) { // Begins after first line starting with $$. for line[0] != '$' { if line, err = r.ReadSlice('\n'); err != nil { + err = fmt.Errorf("can't find export data (%v)", err) return } }