// Copyright 2020 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 p

type P *struct{}

func _() {
	// want an error even if the switch is empty
	var a struct{ _ func() }
	switch a /* ERROR cannot switch on a */ {
	}

	switch a /* ERROR cannot switch on a */ {
	case a: // no follow-on error here
	}

	// this is ok because f can be compared to nil
	var f func()
	switch f {
	}

	switch f {
	case nil:
	}

	switch (func())(nil) {
	case nil:
	}

	switch (func())(nil) {
	case f /* ERROR invalid case f in switch on .* \(func can only be compared to nil\) */ :
	}

	switch nil /* ERROR use of untyped nil in switch expression */ {
	}

	// this is ok
	switch P(nil) {
	case P(nil):
	}
}
