Home | History | Annotate | Download | only in test
      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 }
     55