1// errorcheck
2
3// Copyright 2020 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Verify that misplaced directives are diagnosed.
8
9// ok
10//go:build !ignore
11
12package main
13
14//go:build bad // ERROR "misplaced compiler directive"
15
16//go:noinline // ERROR "misplaced compiler directive"
17type (
18	T2  int //go:noinline // ERROR "misplaced compiler directive"
19	T2b int
20	T2c int
21	T3  int
22)
23
24//go:noinline // ERROR "misplaced compiler directive"
25type (
26	T4 int
27)
28
29//go:noinline // ERROR "misplaced compiler directive"
30type ()
31
32type T5 int
33
34func g() {} //go:noinline // ERROR "misplaced compiler directive"
35
36// ok: attached to f (duplicated yes, but ok)
37//go:noinline
38
39//go:noinline
40func f() {
41	//go:noinline // ERROR "misplaced compiler directive"
42	x := 1
43
44	//go:noinline // ERROR "misplaced compiler directive"
45	{
46		_ = x //go:noinline // ERROR "misplaced compiler directive"
47	}
48	var y int //go:noinline // ERROR "misplaced compiler directive"
49	//go:noinline // ERROR "misplaced compiler directive"
50	_ = y
51
52	const c = 1
53
54	_ = func() {}
55}
56
57// EOF
58//go:noinline // ERROR "misplaced compiler directive"
59