compiler: fix a few crashes due to named types

There were a few cases left where a named type would cause a crash in
the compiler. While going through enough code would have found them
eventually, I specifically looked for the `Type().(` pattern: a Type()
call that is then used in a type assert. Most of those were indeed bugs,
although for some I couldn't come up with a reproducer so I left them
as-is.
This commit is contained in:
Ayke van Laethem
2020-05-27 00:17:28 +02:00
committed by Ron Evans
parent 4ca2d3f0cf
commit c248418dbe
5 changed files with 35 additions and 7 deletions
+5
View File
@@ -31,6 +31,7 @@ func main() {
assert(len(make([]int, makeUint32(2), makeUint32(3))) == 2)
assert(len(make([]int, makeUint64(2), makeUint64(3))) == 2)
assert(len(make([]int, makeUintptr(2), makeUintptr(3))) == 2)
assert(len(make([]int, makeMyUint8(2), makeMyUint8(3))) == 2)
// indexing into a slice with uncommon index types
assert(foo[int(2)] == 4)
@@ -131,6 +132,9 @@ func main() {
var named MySlice
assert(len(unnamed[:]) == 32)
assert(len(named[:]) == 32)
for _, c := range named {
assert(c == 0)
}
}
func printslice(name string, s []int) {
@@ -169,3 +173,4 @@ func makeUint16(x uint16) uint16 { return x }
func makeUint32(x uint32) uint32 { return x }
func makeUint64(x uint64) uint64 { return x }
func makeUintptr(x uintptr) uintptr { return x }
func makeMyUint8(x myUint8) myUint8 { return x }