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 9package main 10 11type ( 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 26func (s S) m(x int) int { return x } 27 28var ( 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 39func 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/* 626g bug277.go 63bug277.go:46: syntax error: unexpected (, expecting { 64bug277.go:50: syntax error: unexpected interface 65bug277.go:53: non-declaration statement outside function body 66bug277.go:54: non-declaration statement outside function body 67bug277.go:55: syntax error: unexpected LCHAN 68bug277.go:56: syntax error: unexpected LCHAN 69bug277.go:57: non-declaration statement outside function body 70bug277.go:58: non-declaration statement outside function body 71bug277.go:59: syntax error: unexpected } 72*/ 73