Re: Calling 'each' on org.eclipse.emf.common.util.TreeIterator

2018-10-16 Thread Felix Dorner
Ok so to summarize, the trap is that I call each {} on an object that is both, an List/Iterable and an Iterator at the same time. The result is that either of these two is called, and it happens to be random which one. http://docs.groovy-lang.org/docs/groovy-2.5.1/html/api/org/codehaus/groovy/runti

Re: Calling 'each' on org.eclipse.emf.common.util.TreeIterator

2018-10-16 Thread Felix Dorner
I think I "know" what's going on.. I have a hard time trying to figure actually out which 'each' implementation is called, but if it is "DefaultGroovyMethods.each", this will not work: The default groovy methods each calls 'iterator' on the argument, which happens to be defined in the iterator that

Re: Calling 'each' on org.eclipse.emf.common.util.TreeIterator

2018-10-16 Thread Felix Dorner
If I use hasNext/next in a while loop, I get at the content as expected, but not if I use the collection extensions such as 'each'. I don't know where the magic fails, but I want to find out.. The iterator that is being used is created here: http://git.eclipse.org/c/emf/org.eclipse.emf.git/tree/pl

Re: Calling 'each' on org.eclipse.emf.common.util.TreeIterator

2018-10-16 Thread Paul King
I'd expect that to work the same as if you used a while loop with hasNext() and next(). If your data structure has further containers and next() doesn't normally walk through the containers, then I'd expect you to have more work to do. Is that not what you are seeing? Cheers, Paul. On Tue, Oct 16

Calling 'each' on org.eclipse.emf.common.util.TreeIterator

2018-10-16 Thread Felix Dorner
Hi, I can do: def a = [1,2,3].iterator() a.each { println it } Cool, I can walk EMF EObject trees like this, I thought: Iterator i = anEObject.eAllContents() // this gives a TreeIterator, a subinterface of Iterator it.each { println it } But that doesn't work :(. It only prints anEObject,