]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet: polish output of shadow test
authorMarvin Stenger <marvin.stenger94@gmail.com>
Tue, 1 Mar 2016 20:18:56 +0000 (21:18 +0100)
committerRob Pike <r@golang.org>
Wed, 2 Mar 2016 00:49:39 +0000 (00:49 +0000)
This commit modifies the style of a error message in case of -shadow.

Previously such a message would look like:
foo.go:42: declaration of err shadows declaration at shadow.go:13:

Changes of the commit include highlighting the variable name and
removing the ": "(space intended) at the end of the line:
foo.go:42: declaration of "err" shadows declaration at shadow.go:13

Fixes #14585.

Change-Id: Ia6a6bf396668dcba9a24f025a08d8826db31f434
Reviewed-on: https://go-review.googlesource.com/20093
Reviewed-by: Rob Pike <r@golang.org>
src/cmd/vet/main.go
src/cmd/vet/shadow.go
src/cmd/vet/testdata/shadow.go

index fc3873997bc866e8d571134caa4f20382266f012..c401fed0b4d20b0de870932702cf449c819f2ef6 100644 (file)
@@ -435,17 +435,17 @@ func (f *File) loc(pos token.Pos) string {
        // expression instead of the inner part with the actual error, the
        // precision can mislead.
        posn := f.fset.Position(pos)
-       return fmt.Sprintf("%s:%d", posn.Filename, posn.Line)
+       return fmt.Sprintf("%s:%d", posn.Filename, posn.Line)
 }
 
 // Warn reports an error but does not set the exit code.
 func (f *File) Warn(pos token.Pos, args ...interface{}) {
-       fmt.Fprint(os.Stderr, f.loc(pos)+fmt.Sprintln(args...))
+       fmt.Fprintf(os.Stderr, "%s: %s", f.loc(pos), fmt.Sprintln(args...))
 }
 
 // Warnf reports a formatted error but does not set the exit code.
 func (f *File) Warnf(pos token.Pos, format string, args ...interface{}) {
-       fmt.Fprintf(os.Stderr, f.loc(pos)+format+"\n", args...)
+       fmt.Fprintf(os.Stderr, "%s: %s\n", f.loc(pos), fmt.Sprintf(format, args...))
 }
 
 // walkFile walks the file's tree.
index 5d0d6b5bf5aea04a485cd367b10c2e6240f08464..29c952fd8858eae7fb8a4d1747d7798e141e8444 100644 (file)
@@ -232,7 +232,7 @@ func checkShadowing(f *File, ident *ast.Ident) {
                // the shadowing identifier.
                span, ok := f.pkg.spans[shadowed]
                if !ok {
-                       f.Badf(ident.Pos(), "internal error: no range for %s", ident.Name)
+                       f.Badf(ident.Pos(), "internal error: no range for %q", ident.Name)
                        return
                }
                if !span.contains(ident.Pos()) {
@@ -241,6 +241,6 @@ func checkShadowing(f *File, ident *ast.Ident) {
        }
        // Don't complain if the types differ: that implies the programmer really wants two different things.
        if types.Identical(obj.Type(), shadowed.Type()) {
-               f.Badf(ident.Pos(), "declaration of %s shadows declaration at %s", obj.Name(), f.loc(shadowed.Pos()))
+               f.Badf(ident.Pos(), "declaration of %q shadows declaration at %s", obj.Name(), f.loc(shadowed.Pos()))
        }
 }
index 241109f4eee6ebed48227469c457df3061b84021..3b61137b87c09e495c0ff8e20ba3b0886c72bd52 100644 (file)
@@ -17,7 +17,7 @@ func ShadowRead(f *os.File, buf []byte) (err error) {
                _ = err
        }
        if f != nil {
-               _, err := f.Read(buf) // ERROR "declaration of err shadows declaration at testdata/shadow.go:13"
+               _, err := f.Read(buf) // ERROR "declaration of .err. shadows declaration at testdata/shadow.go:13"
                if err != nil {
                        return err
                }
@@ -25,8 +25,8 @@ func ShadowRead(f *os.File, buf []byte) (err error) {
                _ = i
        }
        if f != nil {
-               x := one()               // ERROR "declaration of x shadows declaration at testdata/shadow.go:14"
-               var _, err = f.Read(buf) // ERROR "declaration of err shadows declaration at testdata/shadow.go:13"
+               x := one()               // ERROR "declaration of .x. shadows declaration at testdata/shadow.go:14"
+               var _, err = f.Read(buf) // ERROR "declaration of .err. shadows declaration at testdata/shadow.go:13"
                if x == 1 && err != nil {
                        return err
                }
@@ -46,7 +46,7 @@ func ShadowRead(f *os.File, buf []byte) (err error) {
        if shadowTemp := shadowTemp; true { // OK: obviously intentional idiomatic redeclaration
                var f *os.File // OK because f is not mentioned later in the function.
                // The declaration of x is a shadow because x is mentioned below.
-               var x int // ERROR "declaration of x shadows declaration at testdata/shadow.go:14"
+               var x int // ERROR "declaration of .x. shadows declaration at testdata/shadow.go:14"
                _, _, _ = x, f, shadowTemp
        }
        // Use a couple of variables to trigger shadowing errors.