]> Cypherpunks.ru repositories - gostls13.git/blob - test/directive.go
[dev.boringcrypto] crypto/hmac: merge up to 2a206c7 and skip test
[gostls13.git] / test / directive.go
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
12 //go:noinline // ERROR "misplaced compiler directive"
13
14 //go:noinline // ERROR "misplaced compiler directive"
15 package main
16
17 //go:build bad // ERROR "misplaced compiler directive"
18
19 //go:nosplit
20 func f1() {}
21
22 //go:nosplit
23 //go:noinline
24 func f2() {}
25
26 //go:noinline // ERROR "misplaced compiler directive"
27
28 //go:noinline // ERROR "misplaced compiler directive"
29 var x int
30
31 //go:noinline // ERROR "misplaced compiler directive"
32 const c = 1
33
34 //go:noinline // ERROR "misplaced compiler directive"
35 type T int
36
37 // ok
38 //go:notinheap
39 type T1 int
40
41 //go:notinheap // ERROR "misplaced compiler directive"
42 type (
43         //go:notinheap
44         //go:noinline // ERROR "misplaced compiler directive"
45         T2  int //go:notinheap // ERROR "misplaced compiler directive"
46         T2b int
47         //go:notinheap
48         T2c int
49         //go:noinline // ERROR "misplaced compiler directive"
50         T3 int
51 )
52
53 //go:notinheap // ERROR "misplaced compiler directive"
54 type (
55         //go:notinheap
56         T4 int
57 )
58
59 //go:notinheap // ERROR "misplaced compiler directive"
60 type ()
61
62 type T5 int
63
64 func g() {} //go:noinline // ERROR "misplaced compiler directive"
65
66 // ok: attached to f (duplicated yes, but ok)
67 //go:noinline
68
69 //go:noinline
70 func f() {
71         //go:noinline // ERROR "misplaced compiler directive"
72         x := 1
73
74         //go:noinline // ERROR "misplaced compiler directive"
75         {
76                 _ = x //go:noinline // ERROR "misplaced compiler directive"
77         }
78         //go:noinline // ERROR "misplaced compiler directive"
79         var y int //go:noinline // ERROR "misplaced compiler directive"
80         //go:noinline // ERROR "misplaced compiler directive"
81         _ = y
82
83         //go:noinline // ERROR "misplaced compiler directive"
84         const c = 1
85
86         //go:noinline // ERROR "misplaced compiler directive"
87         _ = func() {}
88
89         //go:noinline // ERROR "misplaced compiler directive"
90         // ok:
91         //go:notinheap
92         type T int
93 }
94
95 // someday there might be a directive that can apply to type aliases, but go:notinheap doesn't.
96 //go:notinheap // ERROR "misplaced compiler directive"
97 type T6 = int
98
99 // EOF
100 //go:noinline // ERROR "misplaced compiler directive"
101
102 //go:build bad // ERROR "misplaced compiler directive"