| // 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") |
| } |
| } |