Source file test/directive.go
Documentation: test
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" 103