1// run
2
3// Copyright 2014 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Gccgo chose the wrong embedded method when the same type appeared
8// at different levels and the correct choice was not the first
9// appearance of the type in a depth-first search.
10
11package main
12
13type embedded string
14
15func (s embedded) val() string {
16	return string(s)
17}
18
19type A struct {
20	embedded
21}
22
23type B struct {
24	A
25	embedded
26}
27
28func main() {
29	b := &B{
30		A: A{
31			embedded: "a",
32		},
33		embedded: "b",
34	}
35	s := b.val()
36	if s != "b" {
37		panic(s)
38	}
39}
40