+++ /dev/null
-package main
-
-// Test of promotion of methods of an interface embedded within a
-// struct. In particular, this test exercises that the correct
-// method is called.
-
-type I interface {
- one() int
- two() string
-}
-
-type S struct {
- I
-}
-
-type impl struct{}
-
-func (impl) one() int {
- return 1
-}
-
-func (impl) two() string {
- return "two"
-}
-
-func main() {
- var s S
- s.I = impl{}
- if one := s.I.one(); one != 1 {
- panic(one)
- }
- if one := s.one(); one != 1 {
- panic(one)
- }
- closOne := s.I.one
- if one := closOne(); one != 1 {
- panic(one)
- }
- closOne = s.one
- if one := closOne(); one != 1 {
- panic(one)
- }
-
- if two := s.I.two(); two != "two" {
- panic(two)
- }
- if two := s.two(); two != "two" {
- panic(two)
- }
- closTwo := s.I.two
- if two := closTwo(); two != "two" {
- panic(two)
- }
- closTwo = s.two
- if two := closTwo(); two != "two" {
- panic(two)
- }
-}