// errorcheck

// 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.

// Ideal vs non-ideal bool. See issue 3915, 3923.

package p

type mybool bool
type mybool1 bool

var (
	x, y int = 1, 2
	c1 bool = x < y
	c2 mybool = x < y
	c3 mybool = c2 == (x < y)
	c4 mybool = c2 == (1 < 2)
	c5 mybool = 1 < 2
	c6 mybool1 = x < y
	c7 = c1 == c2 // ERROR "mismatched types|incompatible types"
	c8 = c2 == c6 // ERROR "mismatched types|incompatible types"
	c9 = c1 == c6 // ERROR "mismatched types|incompatible types"
	_ = c2 && (x < y)
	_ = c2 && (1 < 2)
	_ = c1 && c2 // ERROR "mismatched types|incompatible types"
	_ = c2 && c6 // ERROR "mismatched types|incompatible types"
	_ = c1 && c6 // ERROR "mismatched types|incompatible types"
)
