// run | |
// Copyright 2011 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// Test that dynamic interface checks treat byte=uint8 | |
// and rune=int or rune=int32. | |
package main | |
func main() { | |
var x interface{} | |
x = byte(1) | |
switch x.(type) { | |
case uint8: | |
// ok | |
default: | |
panic("byte != uint8") | |
} | |
x = uint8(2) | |
switch x.(type) { | |
case byte: | |
// ok | |
default: | |
panic("uint8 != byte") | |
} | |
rune32 := false | |
x = rune(3) | |
switch x.(type) { | |
case int: | |
// ok | |
case int32: | |
// must be new code | |
rune32 = true | |
default: | |
panic("rune != int and rune != int32") | |
} | |
if rune32 { | |
x = int32(4) | |
} else { | |
x = int(5) | |
} | |
switch x.(type) { | |
case rune: | |
// ok | |
default: | |
panic("int (or int32) != rune") | |
} | |
} |