|  | // compile | 
|  |  | 
|  | // Copyright 2010 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 cases for conversion syntax. | 
|  |  | 
|  | package main | 
|  |  | 
|  | type ( | 
|  | A [3]int | 
|  | S struct { | 
|  | x int | 
|  | } | 
|  | P *S | 
|  | F func(x int) int | 
|  | I interface { | 
|  | m(x int) int | 
|  | } | 
|  | L []int | 
|  | M map[string]int | 
|  | C chan int | 
|  | ) | 
|  |  | 
|  | func (s S) m(x int) int { return x } | 
|  |  | 
|  | var ( | 
|  | a A = [...]int{1, 2, 3} | 
|  | s S = struct{ x int }{0} | 
|  | p P = &s | 
|  | f F = func(x int) int { return x } | 
|  | i I = s | 
|  | l L = []int{} | 
|  | m M = map[string]int{"foo": 0} | 
|  | c C = make(chan int) | 
|  | ) | 
|  |  | 
|  | func main() { | 
|  | a = A(a) | 
|  | a = [3]int(a) | 
|  | s = struct { | 
|  | x int | 
|  | }(s) | 
|  | p = (*S)(p) | 
|  | f = func(x int) int(f) | 
|  | i = (interface { | 
|  | m(x int) int | 
|  | })(s) // this is accepted by 6g | 
|  | i = interface { | 
|  | m(x int) int | 
|  | }(s) // this is not accepted by 6g (but should be) | 
|  | l = []int(l) | 
|  | m = map[string]int(m) | 
|  | c = chan int(c) | 
|  | _ = chan<- int(c) | 
|  | _ = <-(chan int)(c) | 
|  | _ = <-(<-chan int)(c) | 
|  | } | 
|  |  | 
|  | /* | 
|  | 6g bug277.go | 
|  | bug277.go:46: syntax error: unexpected (, expecting { | 
|  | bug277.go:50: syntax error: unexpected interface | 
|  | bug277.go:53: non-declaration statement outside function body | 
|  | bug277.go:54: non-declaration statement outside function body | 
|  | bug277.go:55: syntax error: unexpected LCHAN | 
|  | bug277.go:56: syntax error: unexpected LCHAN | 
|  | bug277.go:57: non-declaration statement outside function body | 
|  | bug277.go:58: non-declaration statement outside function body | 
|  | bug277.go:59: syntax error: unexpected } | 
|  | */ |