aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2011-03-29 15:04:19 -0700
committerIan Lance Taylor <iant@golang.org>2011-03-29 15:04:19 -0700
commit57c6d36f954bdc0fa60f4312d2e7b93e0fab7a46 (patch)
tree9255481358f7fb1c2284b969779c0dec0dad5011
parent3dbf65871c9b2f9f6e6c8b272b77d4a03d3d1ec3 (diff)
downloadgo-57c6d36f954bdc0fa60f4312d2e7b93e0fab7a46.tar.gz
go-57c6d36f954bdc0fa60f4312d2e7b93e0fab7a46.zip
test: add test for interfaces with unexported methods.
R=rsc CC=golang-dev https://golang.org/cl/4271086
-rw-r--r--test/interface/private.go32
-rw-r--r--test/interface/private1.go18
2 files changed, 50 insertions, 0 deletions
diff --git a/test/interface/private.go b/test/interface/private.go
new file mode 100644
index 0000000000..37890c923a
--- /dev/null
+++ b/test/interface/private.go
@@ -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
index 0000000000..3173fbef41
--- /dev/null
+++ b/test/interface/private1.go
@@ -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)
+