1 | // Copyright 2013 The Go Authors. All rights reserved. |
---|---|
2 | // Use of this source code is governed by a BSD-style |
3 | // license that can be found in the LICENSE file. |
4 | |
5 | package a |
6 | |
7 | func F() {} |
8 | |
9 | type T struct { |
10 | F func() |
11 | } |
12 | |
13 | func (T) M() {} |
14 | |
15 | var Fv = F |
16 | |
17 | func Comparison() { |
18 | var t T |
19 | var fn func() |
20 | if fn == nil || Fv == nil || t.F == nil { |
21 | // no error; these func vars or fields may be nil |
22 | } |
23 | if F == nil { // want "comparison of function F == nil is always false" |
24 | panic("can't happen") |
25 | } |
26 | if t.M == nil { // want "comparison of function M == nil is always false" |
27 | panic("can't happen") |
28 | } |
29 | if F != nil { // want "comparison of function F != nil is always true" |
30 | if t.M != nil { // want "comparison of function M != nil is always true" |
31 | return |
32 | } |
33 | } |
34 | panic("can't happen") |
35 | } |
36 |