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