// 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 cannot compare */ :
	}

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

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