]> Cypherpunks repositories - gostls13.git/commit
go/types: track local cycles using same mechanism as for global objects
authorRobert Griesemer <gri@golang.org>
Tue, 21 Aug 2018 16:50:58 +0000 (09:50 -0700)
committerRobert Griesemer <gri@golang.org>
Thu, 30 Aug 2018 22:54:29 +0000 (22:54 +0000)
commitce2e883afc02585188d215cdda265c6a27f14a41
treec9251fff1d76ab92ae6f7d694afed89f8ad9b923
parent5ac247674884a93f3a7630649ee00923724e7961
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>
src/go/types/check.go
src/go/types/decl.go
src/go/types/resolver.go
src/go/types/testdata/cycles.src
src/go/types/typexpr.go