modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/alias1.go (about) 1 // run 2 3 // Copyright 2011 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 // Test that dynamic interface checks treat byte=uint8 8 // and rune=int or rune=int32. 9 10 package main 11 12 func main() { 13 var x interface{} 14 15 x = byte(1) 16 switch x.(type) { 17 case uint8: 18 // ok 19 default: 20 panic("byte != uint8") 21 } 22 23 x = uint8(2) 24 switch x.(type) { 25 case byte: 26 // ok 27 default: 28 panic("uint8 != byte") 29 } 30 31 rune32 := false 32 x = rune(3) 33 switch x.(type) { 34 case int: 35 // ok 36 case int32: 37 // must be new code 38 rune32 = true 39 default: 40 panic("rune != int and rune != int32") 41 } 42 43 if rune32 { 44 x = int32(4) 45 } else { 46 x = int(5) 47 } 48 switch x.(type) { 49 case rune: 50 // ok 51 default: 52 panic("int (or int32) != rune") 53 } 54 }