]> Cypherpunks.ru repositories - gostls13.git/commitdiff
test/alias.go: additional tests
authorRuss Cox <rsc@golang.org>
Wed, 26 Oct 2011 22:27:47 +0000 (15:27 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 26 Oct 2011 22:27:47 +0000 (15:27 -0700)
R=ken2
CC=golang-dev
https://golang.org/cl/5327045

test/alias.go
test/alias1.go [new file with mode: 0644]

index 6039b3183fa54f24eebb82ef94fcaa1db553befe..199c782d009b08b52bd7f308371b8e3618ea4c1b 100644 (file)
@@ -9,11 +9,27 @@ package main
 // Test that error messages say what the source file says
 // (uint8 vs byte).
 
+import (
+       "fmt"
+       "utf8"
+)
+
 func f(byte) {}
 func g(uint8) {}
 
 func main() {
-       var x int
+       var x float64
        f(x)  // ERROR "byte"
        g(x)  // ERROR "uint8"
+
+       // Test across imports.
+
+       var ff fmt.Formatter
+       var fs fmt.State
+       ff.Format(fs, x)  // ERROR "rune"
+
+       utf8.RuneStart(x)  // ERROR "byte"
+
+       var s utf8.String
+       s.At(x)  // ERROR "int"
 }
diff --git a/test/alias1.go b/test/alias1.go
new file mode 100644 (file)
index 0000000..e8ef8a2
--- /dev/null
@@ -0,0 +1,54 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// 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.
+
+package main
+
+// Test that dynamic interface checks treat byte=uint8
+// and rune=int or rune=int32.
+
+func main() {
+       var x interface{}
+
+       x = byte(1)
+       switch x.(type) {
+       case uint8:
+               // ok
+       default:
+               println("byte != uint8")
+       }
+
+       x = uint8(2)
+       switch x.(type) {
+       case byte:
+               // ok
+       default:
+               println("uint8 != byte")
+       }
+
+       rune32 := false
+       x = rune(3)
+       switch x.(type) {
+       case int:
+               // ok
+       case int32:
+               // must be new code
+               rune32 = true
+       default:
+               println("rune != int and rune != int32")
+       }
+
+       if rune32 {
+               x = int32(4)
+       } else {
+               x = int(5)
+       }
+       switch x.(type) {
+       case rune:
+               // ok
+       default:
+               println("int (or int32) != rune")
+       }
+}