mirror of
https://github.com/golang/go
synced 2024-11-06 12:26:11 -07:00
449b6abbac
"declared and not used" is technically correct, but might confuse the user. Switching "and" to "but" will hopefully create the contrast for the users: they did one thing (declaration), but not the other --- actually using the variable. This new message is still not ideal (specifically, declared is not entirely precise here), but at least it matches the other parsers and is one step in the right direction. Change-Id: I725c7c663535f9ab9725c4b0bf35b4fa74b0eb20 Reviewed-on: https://go-review.googlesource.com/c/go/+/203282 Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
61 lines
1.1 KiB
Go
61 lines
1.1 KiB
Go
// run
|
|
|
|
// Copyright 2017 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// As of "Mon 6 Nov 2017", run.go doesn't yet have proper
|
|
// column matching so instead match the output manually
|
|
// by exec-ing
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
if runtime.Compiler != "gc" || runtime.GOOS == "nacl" || runtime.GOOS == "js" {
|
|
return
|
|
}
|
|
|
|
f, err := ioutil.TempFile("", "issue21317.go")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Fprintf(f, `
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
n, err := fmt.Println(1)
|
|
}
|
|
`)
|
|
f.Close()
|
|
defer os.RemoveAll(f.Name())
|
|
|
|
// compile and test output
|
|
cmd := exec.Command("go", "tool", "compile", f.Name())
|
|
out, err := cmd.CombinedOutput()
|
|
if err == nil {
|
|
log.Fatalf("expected cmd/compile to fail")
|
|
}
|
|
wantErrs := []string{
|
|
"7:9: n declared but not used",
|
|
"7:12: err declared but not used",
|
|
}
|
|
outStr := string(out)
|
|
for _, want := range wantErrs {
|
|
if !strings.Contains(outStr, want) {
|
|
log.Fatalf("failed to match %q\noutput: %q", want, outStr)
|
|
}
|
|
}
|
|
}
|