summaryrefslogtreecommitdiff
path: root/libgo/go/cmd/vet/testdata/nilfunc.go
blob: 2ce7bc8ca82eccc641e7d6879ac7dcdb02f5399d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Copyright 2013 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package testdata

func F() {}

type T struct {
	F func()
}

func (T) M() {}

var Fv = F

func Comparison() {
	var t T
	var fn func()
	if fn == nil || Fv == nil || t.F == nil {
		// no error; these func vars or fields may be nil
	}
	if F == nil { // ERROR "comparison of function F == nil is always false"
		panic("can't happen")
	}
	if t.M == nil { // ERROR "comparison of function M == nil is always false"
		panic("can't happen")
	}
	if F != nil { // ERROR "comparison of function F != nil is always true"
		if t.M != nil { // ERROR "comparison of function M != nil is always true"
			return
		}
	}
	panic("can't happen")
}