Ian Lance Taylor | 8990dc8 | 2012-12-03 18:49:14 -0800 | [diff] [blame] | 1 | // errorcheck |
| 2 | |
Emmanuel Odeke | 53fd522 | 2016-04-10 14:32:26 -0700 | [diff] [blame] | 3 | // Copyright 2012 The Go Authors. All rights reserved. |
Ian Lance Taylor | 8990dc8 | 2012-12-03 18:49:14 -0800 | [diff] [blame] | 4 | // Use of this source code is governed by a BSD-style |
| 5 | // license that can be found in the LICENSE file. |
| 6 | |
| 7 | // Issue 4468: go/defer calls may not be parenthesized. |
| 8 | |
| 9 | package p |
| 10 | |
Ian Lance Taylor | b46d56a | 2012-12-05 20:32:12 -0800 | [diff] [blame] | 11 | type T int |
| 12 | |
| 13 | func (t *T) F() T { |
| 14 | return *t |
| 15 | } |
| 16 | |
| 17 | type S struct { |
| 18 | t T |
| 19 | } |
| 20 | |
Ian Lance Taylor | 8990dc8 | 2012-12-03 18:49:14 -0800 | [diff] [blame] | 21 | func F() { |
Robert Griesemer | fe762b6 | 2015-11-18 11:24:48 -0800 | [diff] [blame] | 22 | go F // ERROR "must be function call" |
| 23 | defer F // ERROR "must be function call" |
| 24 | go (F) // ERROR "must be function call|must not be parenthesized" |
| 25 | defer (F) // ERROR "must be function call|must not be parenthesized" |
| 26 | go (F()) // ERROR "must be function call|must not be parenthesized" |
| 27 | defer (F()) // ERROR "must be function call|must not be parenthesized" |
Ian Lance Taylor | b46d56a | 2012-12-05 20:32:12 -0800 | [diff] [blame] | 28 | var s S |
| 29 | (&s.t).F() |
| 30 | go (&s.t).F() |
| 31 | defer (&s.t).F() |
Ian Lance Taylor | 8990dc8 | 2012-12-03 18:49:14 -0800 | [diff] [blame] | 32 | } |