mirror of
https://github.com/golang/go
synced 2024-11-14 15:00:27 -07:00
07de3465be
Previously, we handled recursive interfaces by deferring typechecking of interface methods, while eagerly expanding interface embeddings. This CL switches to eagerly evaluating interface methods, and deferring expanding interface embeddings to dowidth. This allows us to detect recursive interface embeddings with the same mechanism used for detecting recursive struct embeddings. Updates #16369. Change-Id: If4c0320058047f8a2d9b52b9a79de47eb9887f95 Reviewed-on: https://go-review.googlesource.com/38391 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
15 lines
393 B
Go
15 lines
393 B
Go
// errorcheck
|
|
|
|
// 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 p
|
|
|
|
type A interface {
|
|
// TODO(mdempsky): This should be an error, but this error is
|
|
// nonsense. The error should actually mention that there's a
|
|
// type loop.
|
|
Fn(A.Fn) // ERROR "type A has no method Fn"
|
|
}
|