Sorry, forgot to send the attachment.
Peter
On Fri, Apr 14, 2017 at 03:06:55PM +0200, Peter Uhnak wrote:
Hi,
I have a small GTInspector extension that shows me a tree-like structure of a graph. As the data underneath are graphs, the tree itself is infinite (because there are loops).
That by itself works fine (because only roots are expanded), however when I am filtering the elements (in raw pane), GTInspector gets stuck in infinite GLMTreeMorphNodeModel>>pathIn: loop.
I've made couple of classes to reproduce the behavior - see attached file.
There are two types of nodes: one contains children (items), and the other can contain references to other elements. The extension is written in LLCompositeElement>>gtInspectorTreeIn:
To reproduce:
- import attached package
- execute the following
'<a> <b ref c /> <c ref b /> </a>'. a := LLCompositeElement named: 'a'. b := LLReferenceElement named: 'b'. c := LLReferenceElement named: 'c'. a items: { b . c }. b references: { c }. c references: { b }. a inspect.
- the Tree view works fine (I see some visual glitching of arrows, but that doesn't matter)
- switch to Raw view
- (any of these will trigger the behaivor) 5.a. click on "items" instance variable, or 5.b. "do it and go" any expression (e.g. 1+1)
- now you are in infinite pathIn: loop
Sometimes I've experienced that breaking the loop (meta+.), closing the debugger and redoing the expression worked... but I don't have any details about that.
Thanks! Peter