Skip to content
  • Jakob Stoklund Olesen's avatar
    Add an assertion for a likely ilist::splice() contract violation. · b8d29bf2
    Jakob Stoklund Olesen authored
    The single-element ilist::splice() function supports a noop move:
    
      List.splice(I, List, I);
    
    The corresponding std::list function doesn't allow that, so add a unit
    test to document that behavior.
    
    This also means that
    
      List.splice(I, List, F);
    
    is somewhat surprisingly not equivalent to
    
      List.splice(I, List, F, next(F));
    
    This patch adds an assertion to catch the illegal case I == F above.
    Alternatively, we could make I == F a legal noop, but that would make
    ilist differ even more from std::list.
    
    llvm-svn: 170443
    b8d29bf2
Loading