1// errorcheck
2
3// Used to emit a spurious "invalid recursive type" error.
4// See golang.org/issue/5581.
5
6// Copyright 2013 The Go Authors. All rights reserved.
7// Use of this source code is governed by a BSD-style
8// license that can be found in the LICENSE file.
9
10package main
11
12import "fmt"
13
14func NewBar() *Bar { return nil }
15
16func (x *Foo) Method() (int, error) {
17	for y := range x.m {
18		_ = y.A
19	}
20	return 0, nil
21}
22
23type Foo struct {
24	m map[*Bar]int
25}
26
27type Bar struct {
28	A *Foo
29	B chan Blah // ERROR "undefined.*Blah"
30}
31
32func main() {
33	fmt.Println("Hello, playground")
34}
35