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//go:noinline // ERROR "misplaced compiler directive"
10
11//go:noinline // ERROR "misplaced compiler directive"
12package main
13
14//go:nosplit
15func f1() {}
16
17//go:nosplit
18//go:noinline
19func f2() {}
20
21//go:noinline // ERROR "misplaced compiler directive"
22
23//go:noinline // ERROR "misplaced compiler directive"
24var x int
25
26//go:noinline // ERROR "misplaced compiler directive"
27const c = 1
28
29//go:noinline // ERROR "misplaced compiler directive"
30type T int
31
32type (
33	//go:noinline // ERROR "misplaced compiler directive"
34	T2 int
35	//go:noinline // ERROR "misplaced compiler directive"
36	T3 int
37)
38
39//go:noinline
40func f() {
41	x := 1
42
43	{
44		_ = x
45	}
46	//go:noinline // ERROR "misplaced compiler directive"
47	var y int
48	_ = y
49
50	//go:noinline // ERROR "misplaced compiler directive"
51	const c = 1
52
53	_ = func() {}
54
55	//go:noinline // ERROR "misplaced compiler directive"
56	type T int
57}
58