github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug277.go (about) 1 // compile 2 3 // Copyright 2010 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 cases for conversion syntax. 8 9 package main 10 11 type ( 12 A [3]int 13 S struct { 14 x int 15 } 16 P *S 17 F func(x int) int 18 I interface { 19 m(x int) int 20 } 21 L []int 22 M map[string]int 23 C chan int 24 ) 25 26 func (s S) m(x int) int { return x } 27 28 var ( 29 a A = [...]int{1, 2, 3} 30 s S = struct{ x int }{0} 31 p P = &s 32 f F = func(x int) int { return x } 33 i I = s 34 l L = []int{} 35 m M = map[string]int{"foo": 0} 36 c C = make(chan int) 37 ) 38 39 func main() { 40 a = A(a) 41 a = [3]int(a) 42 s = struct { 43 x int 44 }(s) 45 p = (*S)(p) 46 f = func(x int) int(f) 47 i = (interface { 48 m(x int) int 49 })(s) // this is accepted by 6g 50 i = interface { 51 m(x int) int 52 }(s) // this is not accepted by 6g (but should be) 53 l = []int(l) 54 m = map[string]int(m) 55 c = chan int(c) 56 _ = chan<- int(c) 57 _ = <-(chan int)(c) 58 _ = <-(<-chan int)(c) 59 } 60 61 /* 62 6g bug277.go 63 bug277.go:46: syntax error: unexpected (, expecting { 64 bug277.go:50: syntax error: unexpected interface 65 bug277.go:53: non-declaration statement outside function body 66 bug277.go:54: non-declaration statement outside function body 67 bug277.go:55: syntax error: unexpected LCHAN 68 bug277.go:56: syntax error: unexpected LCHAN 69 bug277.go:57: non-declaration statement outside function body 70 bug277.go:58: non-declaration statement outside function body 71 bug277.go:59: syntax error: unexpected } 72 */