go/types: track local cycles using same mechanism as for global objects
For Go 1.11, cycle tracking of global (package-level) objects was changed
to use a Checker-level object path rather than relying on the explicit
path parameter that is passed around to some (but not all) type-checker
functions.
This change now uses the same mechanism for the detection of local
type cycles (local non-type objects cannot create cycles by definition
of the spec).
As a result, local alias cycles are now correctly detected as well
(issue #27106).
The path parameter that is explicitly passed around to some type-checker
methods is still present and will be removed in a follow-up CL.
Also:
- removed useCycleMarking flag and respective dead code
- added a couple more tests
- improved documentation
Fixes #27106.
Updates #25773.
Change-Id: I7cbf304bceb43a8d52e6483dcd0fa9ef7e1ea71c
Reviewed-on: https://go-review.googlesource.com/130455
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>