1// run 2 3//go:build !js && !wasip1 && gc 4 5// Copyright 2017 The Go Authors. All rights reserved. 6// Use of this source code is governed by a BSD-style 7// license that can be found in the LICENSE file. 8 9// As of "Mon 6 Nov 2017", run.go doesn't yet have proper 10// column matching so instead match the output manually 11// by exec-ing 12 13package main 14 15import ( 16 "fmt" 17 "io/ioutil" 18 "log" 19 "os" 20 "os/exec" 21 "strings" 22) 23 24func main() { 25 f, err := ioutil.TempFile("", "issue21317.go") 26 if err != nil { 27 log.Fatal(err) 28 } 29 fmt.Fprintf(f, ` 30package main 31 32import "fmt" 33 34func main() { 35 n, err := fmt.Println(1) 36} 37`) 38 f.Close() 39 defer os.RemoveAll(f.Name()) 40 41 // compile and test output 42 cmd := exec.Command("go", "tool", "compile", "-p=main", "-importcfg="+os.Getenv("STDLIB_IMPORTCFG"), f.Name()) 43 out, err := cmd.CombinedOutput() 44 if err == nil { 45 log.Fatalf("expected cmd/compile to fail") 46 } 47 wantErrs := []string{ 48 "7:9: declared and not used: n", 49 "7:12: declared and not used: err", 50 } 51 outStr := string(out) 52 for _, want := range wantErrs { 53 if !strings.Contains(outStr, want) { 54 log.Fatalf("failed to match %q\noutput: %q", want, outStr) 55 } 56 } 57} 58