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 I am testing, because that iterator is also a list... (But the tree iterator contents are actually more than the contents of that list, because the list is a list of root elements, just imagine a dom tree, it's the same thing). I'll figure something out.
On Tue, Oct 16, 2018 at 6:17 PM Felix Dorner <felix.dor...@gmail.com> wrote: > 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/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/impl/BasicEObjectImpl.java#n832 > and that is an anonymous subtype of > > http://git.eclipse.org/c/emf/org.eclipse.emf.git/tree/plugins/org.eclipse.emf.common/src/org/eclipse/emf/common/util/AbstractTreeIterator.java > > > > > On Tue, Oct 16, 2018 at 3:21 PM Paul King <pa...@asert.com.au> wrote: > >> 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, 2018 at 8:23 PM Felix Dorner <felix.dor...@gmail.com> >> wrote: >> >>> 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, not the whole >>> content tree. Anyone can explain why? >>> >>> >>> -- >>> Linux. The choice of a GNU generation. >>> >> > > -- > Linux. The choice of a GNU generation. > -- Linux. The choice of a GNU generation.