]> Cypherpunks repositories - gostls13.git/commitdiff
bug277: tests for conversion syntax
authorRobert Griesemer <gri@golang.org>
Mon, 24 May 2010 20:57:34 +0000 (13:57 -0700)
committerRobert Griesemer <gri@golang.org>
Mon, 24 May 2010 20:57:34 +0000 (13:57 -0700)
- accepted by gccgo, gofmt
- some not accepted by 6g
- spec revision forthcoming

R=rsc
CC=golang-dev
https://golang.org/cl/1279041

test/bugs/bug277.go [new file with mode: 0644]
test/golden.out

diff --git a/test/bugs/bug277.go b/test/bugs/bug277.go
new file mode 100644 (file)
index 0000000..22b2908
--- /dev/null
@@ -0,0 +1,72 @@
+// $G $D/$F.go || echo BUG should 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 }
+*/
index 1bed6599a8d27bb8726e78d03c8984bef1bfd9da..b529d2d3f1c705b1861ed24d7f8f9464302ec908 100644 (file)
@@ -180,3 +180,15 @@ BUG: bug260 failed
 
 =========== bugs/bug274.go
 BUG: errchk: command succeeded unexpectedly
+
+=========== bugs/bug277.go
+bugs/bug277.go:46: syntax error: unexpected (, expecting {
+bugs/bug277.go:50: syntax error: unexpected interface
+bugs/bug277.go:53: non-declaration statement outside function body
+bugs/bug277.go:54: non-declaration statement outside function body
+bugs/bug277.go:55: syntax error: unexpected LCHAN
+bugs/bug277.go:56: syntax error: unexpected LCHAN
+bugs/bug277.go:57: non-declaration statement outside function body
+bugs/bug277.go:58: non-declaration statement outside function body
+bugs/bug277.go:59: syntax error: unexpected }
+BUG should compile