Fix a case where x.mode == invalid was returned despite builtin
returning true.
Change-Id: Iae9c18aac16bcbadc3530d341b380e05c8743fcc
Reviewed-on: https://go-review.googlesource.com/c/go/+/495299
Auto-Submit: Robert Griesemer <gri@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
}
}
- if mode == invalid && under(x.typ) != Typ[Invalid] {
- code := InvalidCap
- if id == _Len {
- code = InvalidLen
+ if mode == invalid {
+ // avoid error if underlying type is invalid
+ if under(x.typ) != Typ[Invalid] {
+ code := InvalidCap
+ if id == _Len {
+ code = InvalidLen
+ }
+ check.errorf(x, code, invalidArg+"%s for %s", x, bin.name)
}
- check.errorf(x, code, invalidArg+"%s for %s", x, bin.name)
return
}
unreachable()
}
+ assert(x.mode != invalid)
return true
}
}
}
- if mode == invalid && under(x.typ) != Typ[Invalid] {
- code := InvalidCap
- if id == _Len {
- code = InvalidLen
+ if mode == invalid {
+ // avoid error if underlying type is invalid
+ if under(x.typ) != Typ[Invalid] {
+ code := InvalidCap
+ if id == _Len {
+ code = InvalidLen
+ }
+ check.errorf(x, code, invalidArg+"%s for %s", x, bin.name)
}
- check.errorf(x, code, invalidArg+"%s for %s", x, bin.name)
return
}
unreachable()
}
+ assert(x.mode != invalid)
return true
}