Skip to content

Commit de31d86

Browse files
author
Jan Steinke
committed
use x/xerrors to create new errors
1 parent b3315ee commit de31d86

36 files changed

+115
-102
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ go 1.11
55
require (
66
golang.org/x/net v0.0.0-20190311183353-d8887717615a
77
golang.org/x/sync v0.0.0-20190423024810-112230192c58
8+
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522
89
)

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEha
55
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
66
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
77
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
8+
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522 h1:bhOzK9QyoD0ogCnFro1m2mz41+Ib0oOhfJnBp5MR4K4=
9+
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

internal/lsp/browser/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
This package is a copy of cmd/internal/browser from the go distribution
1+
This package is a copy of cmd/internal/browser from the go distribution

internal/lsp/cache/check.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package cache
66

77
import (
88
"context"
9-
"fmt"
109
"go/ast"
1110
"go/scanner"
1211
"go/token"
@@ -15,6 +14,7 @@ import (
1514
"golang.org/x/tools/go/analysis"
1615
"golang.org/x/tools/go/packages"
1716
"golang.org/x/tools/internal/span"
17+
"golang.org/x/xerrors"
1818
)
1919

2020
type importer struct {
@@ -38,7 +38,7 @@ func (imp *importer) Import(pkgPath string) (*types.Package, error) {
3838

3939
func (imp *importer) getPkg(pkgPath string) (*pkg, error) {
4040
if _, ok := imp.seen[pkgPath]; ok {
41-
return nil, fmt.Errorf("circular import detected")
41+
return nil, xerrors.Errorf("circular import detected")
4242
}
4343
imp.view.pcache.mu.Lock()
4444
e, ok := imp.view.pcache.packages[pkgPath]
@@ -67,7 +67,7 @@ func (imp *importer) getPkg(pkgPath string) (*pkg, error) {
6767
func (imp *importer) typeCheck(pkgPath string) (*pkg, error) {
6868
meta, ok := imp.view.mcache.packages[pkgPath]
6969
if !ok {
70-
return nil, fmt.Errorf("no metadata for %v", pkgPath)
70+
return nil, xerrors.Errorf("no metadata for %v", pkgPath)
7171
}
7272
// Use the default type information for the unsafe package.
7373
var typ *types.Package

internal/lsp/cache/load.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"golang.org/x/tools/go/packages"
99
"golang.org/x/tools/internal/span"
10+
"golang.org/x/xerrors"
1011
)
1112

1213
func (v *view) loadParseTypecheck(ctx context.Context, f *goFile) ([]packages.Error, error) {
@@ -29,7 +30,7 @@ func (v *view) loadParseTypecheck(ctx context.Context, f *goFile) ([]packages.Er
2930
return errs, err
3031
}
3132
if f.meta == nil {
32-
return nil, fmt.Errorf("no metadata found for %v", f.filename())
33+
return nil, xerrors.Errorf("no metadata found for %v", f.filename())
3334
}
3435
imp := &importer{
3536
view: v,
@@ -48,7 +49,7 @@ func (v *view) loadParseTypecheck(ctx context.Context, f *goFile) ([]packages.Er
4849
}
4950
// If we still have not found the package for the file, something is wrong.
5051
if f.pkg == nil {
51-
return nil, fmt.Errorf("parse: no package found for %v", f.filename())
52+
return nil, xerrors.Errorf("parse: no package found for %v", f.filename())
5253
}
5354
return nil, nil
5455
}
@@ -59,7 +60,7 @@ func (v *view) checkMetadata(ctx context.Context, f *goFile) ([]packages.Error,
5960
pkgs, err := packages.Load(cfg, fmt.Sprintf("file=%s", f.filename()))
6061
if len(pkgs) == 0 {
6162
if err == nil {
62-
err = fmt.Errorf("%s: no packages found", f.filename())
63+
err = xerrors.Errorf("%s: no packages found", f.filename())
6364
}
6465
// Return this error as a diagnostic to the user.
6566
return []packages.Error{
@@ -73,7 +74,7 @@ func (v *view) checkMetadata(ctx context.Context, f *goFile) ([]packages.Error,
7374
// If the package comes back with errors from `go list`, don't bother
7475
// type-checking it.
7576
if len(pkg.Errors) > 0 {
76-
return pkg.Errors, fmt.Errorf("package %s has errors, skipping type-checking", pkg.PkgPath)
77+
return pkg.Errors, xerrors.Errorf("package %s has errors, skipping type-checking", pkg.PkgPath)
7778
}
7879
v.link(ctx, pkg.PkgPath, pkg, nil)
7980
}

internal/lsp/cache/parse.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package cache
66

77
import (
88
"context"
9-
"fmt"
109
"go/ast"
1110
"go/parser"
1211
"go/scanner"
@@ -17,6 +16,7 @@ import (
1716
"sync"
1817

1918
"golang.org/x/tools/internal/span"
19+
"golang.org/x/xerrors"
2020
)
2121

2222
func parseFile(fset *token.FileSet, filename string, src []byte) (*ast.File, error) {
@@ -54,7 +54,7 @@ func (imp *importer) parseFiles(filenames []string) ([]*ast.File, []error) {
5454
}
5555
gof, ok := f.(*goFile)
5656
if !ok {
57-
parsed[i], errors[i] = nil, fmt.Errorf("Non go file in parse call: %v", filename)
57+
parsed[i], errors[i] = nil, xerrors.Errorf("Non go file in parse call: %v", filename)
5858
continue
5959
}
6060

@@ -72,7 +72,7 @@ func (imp *importer) parseFiles(filenames []string) ([]*ast.File, []error) {
7272
}
7373
src := gof.fc.Data
7474
if src == nil {
75-
parsed[i], errors[i] = nil, fmt.Errorf("No source for %v", filename)
75+
parsed[i], errors[i] = nil, xerrors.Errorf("No source for %v", filename)
7676
} else {
7777
// ParseFile may return both an AST and an error.
7878
parsed[i], errors[i] = parseFile(imp.fset, filename, src)
@@ -175,7 +175,7 @@ func (v *view) parseDeferOrGoStmt(bad *ast.BadStmt, parent ast.Node, tok *token.
175175
var lit string
176176
for {
177177
if tkn == token.EOF {
178-
return fmt.Errorf("reached the end of the file")
178+
return xerrors.Errorf("reached the end of the file")
179179
}
180180
if pos >= bad.From {
181181
break
@@ -193,7 +193,7 @@ func (v *view) parseDeferOrGoStmt(bad *ast.BadStmt, parent ast.Node, tok *token.
193193
Go: pos,
194194
}
195195
default:
196-
return fmt.Errorf("no defer or go statement found")
196+
return xerrors.Errorf("no defer or go statement found")
197197
}
198198

199199
// The expression after the "defer" or "go" starts at this position.
@@ -218,15 +218,15 @@ FindTo:
218218
to = curr
219219
}
220220
if !from.IsValid() || tok.Offset(from) >= len(src) {
221-
return fmt.Errorf("invalid from position")
221+
return xerrors.Errorf("invalid from position")
222222
}
223223
if !to.IsValid() || tok.Offset(to)+1 >= len(src) {
224-
return fmt.Errorf("invalid to position")
224+
return xerrors.Errorf("invalid to position")
225225
}
226226
exprstr := string(src[tok.Offset(from) : tok.Offset(to)+1])
227227
expr, err := parser.ParseExpr(exprstr)
228228
if expr == nil {
229-
return fmt.Errorf("no expr in %s: %v", exprstr, err)
229+
return xerrors.Errorf("no expr in %s: %v", exprstr, err)
230230
}
231231
// parser.ParseExpr returns undefined positions.
232232
// Adjust them for the current file.

internal/lsp/cache/session.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ package cache
66

77
import (
88
"context"
9-
"fmt"
109
"os"
1110
"strings"
1211
"sync"
1312

1413
"golang.org/x/tools/internal/lsp/source"
1514
"golang.org/x/tools/internal/lsp/xlog"
1615
"golang.org/x/tools/internal/span"
16+
"golang.org/x/xerrors"
1717
)
1818

1919
type session struct {
@@ -150,7 +150,7 @@ func (s *session) removeView(ctx context.Context, view *view) error {
150150
return nil
151151
}
152152
}
153-
return fmt.Errorf("view %s for %v not found", view.Name(), view.Folder())
153+
return xerrors.Errorf("view %s for %v not found", view.Name(), view.Folder())
154154
}
155155

156156
func (s *session) Logger() xlog.Logger {

internal/lsp/cache/view.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package cache
66

77
import (
88
"context"
9-
"fmt"
109
"go/ast"
1110
"go/parser"
1211
"go/types"
@@ -17,6 +16,7 @@ import (
1716
"golang.org/x/tools/go/packages"
1817
"golang.org/x/tools/internal/lsp/source"
1918
"golang.org/x/tools/internal/span"
19+
"golang.org/x/xerrors"
2020
)
2121

2222
type view struct {
@@ -340,7 +340,7 @@ func (v *view) getFile(uri span.URI) (viewFile, error) {
340340
},
341341
}
342342
default:
343-
return nil, fmt.Errorf("unsupported file extension: %s", ext)
343+
return nil, xerrors.Errorf("unsupported file extension: %s", ext)
344344
}
345345
v.mapFile(uri, f)
346346
return f, nil

internal/lsp/cmd/check.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"golang.org/x/tools/internal/span"
14+
"golang.org/x/xerrors"
1415
)
1516

1617
// check implements the check verb for gopls.
@@ -60,14 +61,14 @@ func (c *check) Run(ctx context.Context, args ...string) error {
6061
select {
6162
case <-file.hasDiagnostics:
6263
case <-time.Tick(30 * time.Second):
63-
return fmt.Errorf("timed out waiting for results from %v", file.uri)
64+
return xerrors.Errorf("timed out waiting for results from %v", file.uri)
6465
}
6566
file.diagnosticsMu.Lock()
6667
defer file.diagnosticsMu.Unlock()
6768
for _, d := range file.diagnostics {
6869
spn, err := file.mapper.RangeSpan(d.Range)
6970
if err != nil {
70-
return fmt.Errorf("Could not convert position %v for %q", d.Range, d.Message)
71+
return xerrors.Errorf("Could not convert position %v for %q", d.Range, d.Message)
7172
}
7273
fmt.Printf("%v: %v\n", spn, d.Message)
7374
}

internal/lsp/cmd/cmd.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"golang.org/x/tools/internal/lsp/source"
2727
"golang.org/x/tools/internal/span"
2828
"golang.org/x/tools/internal/tool"
29+
"golang.org/x/xerrors"
2930
)
3031

3132
// Application is the main application as passed to tool.Main
@@ -320,12 +321,12 @@ func (c *cmdClient) getFile(ctx context.Context, uri span.URI) *cmdFile {
320321
if file.mapper == nil {
321322
fname, err := uri.Filename()
322323
if err != nil {
323-
file.err = fmt.Errorf("%v: %v", uri, err)
324+
file.err = xerrors.Errorf("%v: %v", uri, err)
324325
return file
325326
}
326327
content, err := ioutil.ReadFile(fname)
327328
if err != nil {
328-
file.err = fmt.Errorf("%v: %v", uri, err)
329+
file.err = xerrors.Errorf("%v: %v", uri, err)
329330
return file
330331
}
331332
f := c.fset.AddFile(fname, -1, len(content))
@@ -345,7 +346,7 @@ func (c *connection) AddFile(ctx context.Context, uri span.URI) *cmdFile {
345346
p.TextDocument.URI = string(uri)
346347
p.TextDocument.Text = string(file.mapper.Content)
347348
if err := c.Server.DidOpen(ctx, p); err != nil {
348-
file.err = fmt.Errorf("%v: %v", uri, err)
349+
file.err = xerrors.Errorf("%v: %v", uri, err)
349350
}
350351
}
351352
return file

0 commit comments

Comments
 (0)