fix wrong cycle detect by clone the map[visit]int #95
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
use
visited map[visit]int
to check cycle might get some bad case.the key reason was that, all the
pp
,p
printer
share a samemap[visit]int
but when we process a struct refer a pointer value twice or more, this is not a cycle, it's just a repeat refer.
maybe use other helper data type for every branch when we call code
pp = *p
statementmaybe a
slice
is enough to detect.only branch3 should print a "CYCLIC REFERENCE"