mirror of
https://github.com/golang/go
synced 2024-11-11 23:20:24 -07:00
cmd/gc: Make sure bools lose idealness when used with logical operators.
Bools from comparisons can be assigned to all bool types, but this idealness would propagate through logical operators when the result should have been lowered to a non-ideal form. Fixes #3924. R=golang-dev, remyoudompheng, r, rsc, mtj CC=golang-dev https://golang.org/cl/6855061
This commit is contained in:
parent
9a61c0412c
commit
5188c0b59c
@ -614,7 +614,10 @@ reswitch:
|
||||
n->left = l;
|
||||
n->right = r;
|
||||
}
|
||||
}
|
||||
// non-comparison operators on ideal bools should make them lose their ideal-ness
|
||||
} else if(t == idealbool)
|
||||
t = types[TBOOL];
|
||||
|
||||
if(et == TSTRING) {
|
||||
if(iscmp[n->op]) {
|
||||
n->etype = n->op;
|
||||
|
13
test/fixedbugs/issue3924.go
Normal file
13
test/fixedbugs/issue3924.go
Normal file
@ -0,0 +1,13 @@
|
||||
// errorcheck
|
||||
|
||||
// Copyright 2012 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 foo
|
||||
|
||||
type mybool bool
|
||||
|
||||
var x, y = 1, 2
|
||||
var _ mybool = x < y && x < y // ERROR "cannot use"
|
||||
var _ mybool = x < y || x < y // ERROR "cannot use"
|
Loading…
Reference in New Issue
Block a user