]> Cypherpunks.ru repositories - gostls13.git/blob - test/directive.go
[dev.boringcrypto] all: merge master into dev.boringcrypto
[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 //go:noinline // ERROR "misplaced compiler directive"
10
11 //go:noinline // ERROR "misplaced compiler directive"
12 package main
13
14 //go:nosplit
15 func f1() {}
16
17 //go:nosplit
18 //go:noinline
19 func f2() {}
20
21 //go:noinline // ERROR "misplaced compiler directive"
22
23 //go:noinline // ERROR "misplaced compiler directive"
24 var x int
25
26 //go:noinline // ERROR "misplaced compiler directive"
27 const c = 1
28
29 //go:noinline // ERROR "misplaced compiler directive"
30 type T int
31
32 // ok
33 //go:notinheap
34 type T1 int
35
36 type (
37         //go:notinheap
38         //go:noinline // ERROR "misplaced compiler directive"
39         T2  int
40         T2b int
41         //go:notinheap
42         T2c int
43         //go:noinline // ERROR "misplaced compiler directive"
44         T3 int
45 )
46
47 //go:noinline
48 func f() {
49         x := 1
50
51         {
52                 _ = x
53         }
54         //go:noinline // ERROR "misplaced compiler directive"
55         var y int
56         _ = y
57
58         //go:noinline // ERROR "misplaced compiler directive"
59         const c = 1
60
61         _ = func() {}
62
63         //go:noinline // ERROR "misplaced compiler directive"
64         // ok:
65         //go:notinheap
66         type T int
67 }
68
69 // someday there might be a directive that can apply to type aliases, but go:notinheap doesn't.
70 //go:notinheap // ERROR "misplaced compiler directive"
71 type T6 = int