• Show log

    Commit

  • Hash : e40f1c2d
    Author : Russell Belfer
    Date : 2013-03-08T16:39:57

    Make tree iterator handle icase equivalence
    
    There is a serious bug in the previous tree iterator implementation.
    If case insensitivity resulted in member elements being equivalent
    to one another, and those member elements were trees, then the
    children of the colliding elements would be processed in sequence
    instead of in a single flattened list.  This meant that the tree
    iterator was not truly acting like a case-insensitive list.
    
    This completely reworks the tree iterator to manage lists with
    case insensitive equivalence classes and advance through the items
    in a unified manner in a single sorted frame.
    
    It is possible that at a future date we might want to update this
    to separate the case insensitive and case sensitive tree iterators
    so that the case sensitive one could be a minimal amount of code
    and the insensitive one would always know what it needed to do
    without checking flags.
    
    But there would be so much shared code between the two, that I'm
    not sure it that's a win.  For now, this gets what we need.
    
    More tests are needed, though.