// 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"
)
