mirror of https://github.com/golang/go.git
cmd/compile/internal/gc: convert Type.Broke into a bool
Convert Type.Broke from a uint8 to a boolean This change passes go build -toolexec 'toolstash -cmp' -a std. Change-Id: I44e7548c71b00467e36576bdf62933c42555a21a Reviewed-on: https://go-review.googlesource.com/14307 Run-TryBot: Dave Cheney <dave@cheney.net> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Håvard Haugen <havard.haugen@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
8712e1867b
commit
8937780c8a
|
|
@ -129,8 +129,8 @@ func dowidth(t *Type) {
|
|||
if t.Width == -2 {
|
||||
lno := int(lineno)
|
||||
lineno = int32(t.Lineno)
|
||||
if t.Broke == 0 {
|
||||
t.Broke = 1
|
||||
if !t.Broke {
|
||||
t.Broke = true
|
||||
Yyerror("invalid recursive type %v", t)
|
||||
}
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ func dowidth(t *Type) {
|
|||
|
||||
// break infinite recursion if the broken recursive type
|
||||
// is referenced again
|
||||
if t.Broke != 0 && t.Width == 0 {
|
||||
if t.Broke && t.Width == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -233,7 +233,7 @@ func dowidth(t *Type) {
|
|||
checkwidth(t.Down)
|
||||
|
||||
case TFORW: // should have been filled in
|
||||
if t.Broke == 0 {
|
||||
if !t.Broke {
|
||||
Yyerror("invalid recursive type %v", t)
|
||||
}
|
||||
w = 1 // anything will do
|
||||
|
|
@ -272,9 +272,9 @@ func dowidth(t *Type) {
|
|||
checkwidth(t.Type)
|
||||
t.Align = uint8(Widthptr)
|
||||
} else if t.Bound == -100 {
|
||||
if t.Broke == 0 {
|
||||
if !t.Broke {
|
||||
Yyerror("use of [...] array outside of array literal")
|
||||
t.Broke = 1
|
||||
t.Broke = true
|
||||
}
|
||||
} else {
|
||||
Fatalf("dowidth %v", t) // probably [...]T
|
||||
|
|
|
|||
|
|
@ -292,7 +292,7 @@ func convlit1(np **Node, t *Type, explicit bool) {
|
|||
|
||||
bad:
|
||||
if n.Diag == 0 {
|
||||
if t.Broke == 0 {
|
||||
if !t.Broke {
|
||||
Yyerror("cannot convert %v to type %v", n, t)
|
||||
}
|
||||
n.Diag = 1
|
||||
|
|
|
|||
|
|
@ -834,7 +834,7 @@ func structfield(n *Node) *Type {
|
|||
|
||||
f.Type = n.Type
|
||||
if f.Type == nil {
|
||||
f.Broke = 1
|
||||
f.Broke = true
|
||||
}
|
||||
|
||||
switch n.Val().Ctype() {
|
||||
|
|
@ -894,16 +894,16 @@ func tostruct(l *NodeList) *Type {
|
|||
tp = &f.Down
|
||||
}
|
||||
|
||||
for f := t.Type; f != nil && t.Broke == 0; f = f.Down {
|
||||
if f.Broke != 0 {
|
||||
t.Broke = 1
|
||||
for f := t.Type; f != nil && !t.Broke; f = f.Down {
|
||||
if f.Broke {
|
||||
t.Broke = true
|
||||
}
|
||||
}
|
||||
|
||||
uniqgen++
|
||||
checkdupfields(t.Type, "field")
|
||||
|
||||
if t.Broke == 0 {
|
||||
if !t.Broke {
|
||||
checkwidth(t)
|
||||
}
|
||||
|
||||
|
|
@ -929,9 +929,9 @@ func tofunargs(l *NodeList) *Type {
|
|||
tp = &f.Down
|
||||
}
|
||||
|
||||
for f := t.Type; f != nil && t.Broke == 0; f = f.Down {
|
||||
if f.Broke != 0 {
|
||||
t.Broke = 1
|
||||
for f := t.Type; f != nil && !t.Broke; f = f.Down {
|
||||
if f.Broke {
|
||||
t.Broke = true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -984,11 +984,11 @@ func interfacefield(n *Node) *Type {
|
|||
|
||||
case TFORW:
|
||||
Yyerror("interface type loop involving %v", n.Type)
|
||||
f.Broke = 1
|
||||
f.Broke = true
|
||||
|
||||
default:
|
||||
Yyerror("interface contains embedded non-interface %v", n.Type)
|
||||
f.Broke = 1
|
||||
f.Broke = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -998,7 +998,7 @@ func interfacefield(n *Node) *Type {
|
|||
|
||||
f.Type = n.Type
|
||||
if f.Type == nil {
|
||||
f.Broke = 1
|
||||
f.Broke = true
|
||||
}
|
||||
|
||||
lineno = int32(lno)
|
||||
|
|
@ -1034,9 +1034,9 @@ func tointerface(l *NodeList) *Type {
|
|||
}
|
||||
}
|
||||
|
||||
for f := t.Type; f != nil && t.Broke == 0; f = f.Down {
|
||||
if f.Broke != 0 {
|
||||
t.Broke = 1
|
||||
for f := t.Type; f != nil && !t.Broke; f = f.Down {
|
||||
if f.Broke {
|
||||
t.Broke = true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1224,8 +1224,8 @@ func functype(this *Node, in *NodeList, out *NodeList) *Type {
|
|||
checkdupfields(t.Type.Down.Type, "argument")
|
||||
checkdupfields(t.Type.Down.Down.Type, "argument")
|
||||
|
||||
if t.Type.Broke != 0 || t.Type.Down.Broke != 0 || t.Type.Down.Down.Broke != 0 {
|
||||
t.Broke = 1
|
||||
if t.Type.Broke || t.Type.Down.Broke || t.Type.Down.Down.Broke {
|
||||
t.Broke = true
|
||||
}
|
||||
|
||||
if this != nil {
|
||||
|
|
@ -1383,7 +1383,7 @@ func addmethod(sf *Sym, t *Type, local bool, nointerface bool) {
|
|||
t = t.Type
|
||||
}
|
||||
|
||||
if t.Broke != 0 { // rely on typecheck having complained before
|
||||
if t.Broke { // rely on typecheck having complained before
|
||||
return
|
||||
}
|
||||
if t.Sym == nil {
|
||||
|
|
|
|||
|
|
@ -165,8 +165,8 @@ type Type struct {
|
|||
Copyany uint8
|
||||
Local bool // created in this file
|
||||
Deferwidth uint8
|
||||
Broke uint8 // broken type definition.
|
||||
Isddd bool // TFIELD is ... argument
|
||||
Broke bool // broken type definition.
|
||||
Isddd bool // TFIELD is ... argument
|
||||
Align uint8
|
||||
Haspointers uint8 // 0 unknown, 1 no, 2 yes
|
||||
|
||||
|
|
|
|||
|
|
@ -426,7 +426,7 @@ func algtype1(t *Type, bad **Type) int {
|
|||
if bad != nil {
|
||||
*bad = nil
|
||||
}
|
||||
if t.Broke != 0 {
|
||||
if t.Broke {
|
||||
return AMEM
|
||||
}
|
||||
if t.Noalg != 0 {
|
||||
|
|
@ -1133,7 +1133,7 @@ func assignop(src *Type, dst *Type, why *string) int {
|
|||
}
|
||||
|
||||
// we'll have complained about this method anyway, suppress spurious messages.
|
||||
if have != nil && have.Sym == missing.Sym && (have.Type.Broke != 0 || missing.Type.Broke != 0) {
|
||||
if have != nil && have.Sym == missing.Sym && (have.Type.Broke || missing.Type.Broke) {
|
||||
return OCONVIFACE
|
||||
}
|
||||
|
||||
|
|
@ -1317,7 +1317,7 @@ func assignconv(n *Node, t *Type, context string) *Node {
|
|||
|
||||
// Convert node n for assignment to type t.
|
||||
func assignconvfn(n *Node, t *Type, context func() string) *Node {
|
||||
if n == nil || n.Type == nil || n.Type.Broke != 0 {
|
||||
if n == nil || n.Type == nil || n.Type.Broke {
|
||||
return n
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -153,9 +153,9 @@ func typecheckswitch(n *Node) {
|
|||
// reset to original type
|
||||
ll.N = n.Left.Right
|
||||
case ll.N.Type.Etype != TINTER && t.Etype == TINTER && !implements(ll.N.Type, t, &missing, &have, &ptr):
|
||||
if have != nil && missing.Broke == 0 && have.Broke == 0 {
|
||||
if have != nil && !missing.Broke && !have.Broke {
|
||||
Yyerror("impossible type switch case: %v cannot have dynamic type %v"+" (wrong type for %v method)\n\thave %v%v\n\twant %v%v", Nconv(n.Left.Right, obj.FmtLong), ll.N.Type, missing.Sym, have.Sym, Tconv(have.Type, obj.FmtShort), missing.Sym, Tconv(missing.Type, obj.FmtShort))
|
||||
} else if missing.Broke == 0 {
|
||||
} else if !missing.Broke {
|
||||
Yyerror("impossible type switch case: %v cannot have dynamic type %v"+" (missing %v method)", Nconv(n.Left.Right, obj.FmtLong), ll.N.Type, missing.Sym)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ OpSwitch:
|
|||
} else if l.Op == ODDD {
|
||||
t.Bound = -100 // to be filled in
|
||||
if top&Ecomplit == 0 && n.Diag == 0 {
|
||||
t.Broke = 1
|
||||
t.Broke = true
|
||||
n.Diag = 1
|
||||
Yyerror("use of [...] array outside of array literal")
|
||||
}
|
||||
|
|
@ -430,7 +430,7 @@ OpSwitch:
|
|||
ok |= Etype
|
||||
n.Op = OTYPE
|
||||
n.Type = tostruct(n.List)
|
||||
if n.Type == nil || n.Type.Broke != 0 {
|
||||
if n.Type == nil || n.Type.Broke {
|
||||
n.Type = nil
|
||||
return
|
||||
}
|
||||
|
|
@ -1286,7 +1286,7 @@ OpSwitch:
|
|||
l = n.Left
|
||||
if l.Op == OTYPE {
|
||||
if n.Isddd || l.Type.Bound == -100 {
|
||||
if l.Type.Broke == 0 {
|
||||
if !l.Type.Broke {
|
||||
Yyerror("invalid use of ... in type conversion to %v", l.Type)
|
||||
}
|
||||
n.Diag = 1
|
||||
|
|
@ -1753,7 +1753,7 @@ OpSwitch:
|
|||
var why string
|
||||
n.Op = uint8(convertop(t, n.Type, &why))
|
||||
if (n.Op) == 0 {
|
||||
if n.Diag == 0 && n.Type.Broke == 0 {
|
||||
if n.Diag == 0 && !n.Type.Broke {
|
||||
Yyerror("cannot convert %v to type %v%s", Nconv(n.Left, obj.FmtLong), n.Type, why)
|
||||
n.Diag = 1
|
||||
}
|
||||
|
|
@ -2307,7 +2307,7 @@ func checkdefergo(n *Node) {
|
|||
|
||||
// type is broken or missing, most likely a method call on a broken type
|
||||
// we will warn about the broken type elsewhere. no need to emit a potentially confusing error
|
||||
if n.Left.Type == nil || n.Left.Type.Broke != 0 {
|
||||
if n.Left.Type == nil || n.Left.Type.Broke {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -2627,7 +2627,7 @@ func typecheckaste(op int, call *Node, isddd bool, tstruct *Type, nl *NodeList,
|
|||
|
||||
lno := int(lineno)
|
||||
|
||||
if tstruct.Broke != 0 {
|
||||
if tstruct.Broke {
|
||||
goto out
|
||||
}
|
||||
|
||||
|
|
@ -3804,7 +3804,7 @@ func typecheckdef(n *Node) *Node {
|
|||
if n.Type.Etype == TFORW && nerrors > nerrors0 {
|
||||
// Something went wrong during type-checking,
|
||||
// but it was reported. Silence future errors.
|
||||
n.Type.Broke = 1
|
||||
n.Type.Broke = true
|
||||
}
|
||||
|
||||
if Curfn != nil {
|
||||
|
|
|
|||
Loading…
Reference in New Issue