summaryrefslogtreecommitdiff
path: root/test/alias3.dir
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2017-01-13 17:23:01 -0800
committerRobert Griesemer <gri@golang.org>2017-01-20 05:55:53 +0000
commit5802cfd900c238baeb835bff62bad61c4f4c9852 (patch)
tree61d49b2e1e7cda8bb4fdd57d57f7339f2f340cce /test/alias3.dir
parentd7cabd40dd92e5364969273229373d515bee14e8 (diff)
downloadgo-git-5802cfd900c238baeb835bff62bad61c4f4c9852.tar.gz
[dev.typealias] cmd/compile: export/import test cases for type aliases
Plus a few minor changes. For #18130. Change-Id: Ica6503fe9c888cc05c15b46178423f620c087491 Reviewed-on: https://go-review.googlesource.com/35233 Reviewed-by: Alan Donovan <adonovan@google.com>
Diffstat (limited to 'test/alias3.dir')
-rw-r--r--test/alias3.dir/a.go42
-rw-r--r--test/alias3.dir/b.go26
-rw-r--r--test/alias3.dir/c.go25
3 files changed, 93 insertions, 0 deletions
diff --git a/test/alias3.dir/a.go b/test/alias3.dir/a.go
new file mode 100644
index 0000000000..09b3408d16
--- /dev/null
+++ b/test/alias3.dir/a.go
@@ -0,0 +1,42 @@
+// Copyright 2017 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 a
+
+import "go/build"
+
+type (
+ Float64 = float64
+ Rune = rune
+)
+
+type (
+ Int int
+ IntAlias = Int
+ IntAlias2 = IntAlias
+ S struct {
+ Int
+ IntAlias
+ IntAlias2
+ }
+)
+
+type (
+ Context = build.Context
+)
+
+type (
+ I1 interface {
+ M1(IntAlias2) Float64
+ M2() Context
+ }
+
+ I2 = interface {
+ M1(Int) float64
+ M2() build.Context
+ }
+)
+
+var i1 I1
+var i2 I2 = i1
diff --git a/test/alias3.dir/b.go b/test/alias3.dir/b.go
new file mode 100644
index 0000000000..8a86cc0643
--- /dev/null
+++ b/test/alias3.dir/b.go
@@ -0,0 +1,26 @@
+// Copyright 2017 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 b
+
+import (
+ "./a"
+ . "go/build"
+)
+
+func F(x float64) a.Float64 {
+ return x
+}
+
+type MyContext = Context // = build.Context
+
+var C a.Context = Default
+
+type S struct{}
+
+func (S) M1(x a.IntAlias) float64 { return a.Float64(x) }
+func (S) M2() Context { return Default }
+
+var _ a.I1 = S{}
+var _ a.I2 = S{}
diff --git a/test/alias3.dir/c.go b/test/alias3.dir/c.go
new file mode 100644
index 0000000000..161d5934c2
--- /dev/null
+++ b/test/alias3.dir/c.go
@@ -0,0 +1,25 @@
+// Copyright 2017 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 (
+ "./a"
+ "./b"
+)
+
+func main() {
+ var _ float64 = b.F(0)
+ var _ a.Rune = int32(0)
+
+ // embedded types can have different names but the same types
+ var s a.S
+ s.Int = 1
+ s.IntAlias = s.Int
+ s.IntAlias2 = s.Int
+
+ // aliases denote identical types across packages
+ var c a.Context = b.C
+ var _ b.MyContext = c
+}