]> Cypherpunks repositories - gostls13.git/commitdiff
test: add test for interfaces with unexported methods.
authorIan Lance Taylor <iant@golang.org>
Tue, 29 Mar 2011 22:04:19 +0000 (15:04 -0700)
committerIan Lance Taylor <iant@golang.org>
Tue, 29 Mar 2011 22:04:19 +0000 (15:04 -0700)
R=rsc
CC=golang-dev
https://golang.org/cl/4271086

test/interface/private.go [new file with mode: 0644]
test/interface/private1.go [new file with mode: 0644]

diff --git a/test/interface/private.go b/test/interface/private.go
new file mode 100644 (file)
index 0000000..37890c9
--- /dev/null
@@ -0,0 +1,32 @@
+// $G $D/${F}1.go && errchk $G $D/$F.go
+
+// 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
+
+import "./private1"
+
+type Exported interface {
+       private()
+}
+
+type Implementation struct{}
+
+func (p *Implementation) private() {}
+
+func main() {
+       var x Exported
+       x = new(Implementation)
+       x.private()
+
+       var px p.Exported
+       px = p.X
+
+       px.private()                    // ERROR "private"
+
+       px = new(Implementation)        // ERROR "private"
+
+       x = px                          // ERROR "private"
+}
diff --git a/test/interface/private1.go b/test/interface/private1.go
new file mode 100644 (file)
index 0000000..3173fbe
--- /dev/null
@@ -0,0 +1,18 @@
+// true  # used by private.go
+
+// 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 p
+
+type Exported interface {
+       private()
+}
+
+type Implementation struct{}
+
+func (p *Implementation) private() {}
+
+var X = new(Implementation)
+