• Robert Griesemer's avatar
    container/list: Correctly maintain internal invariants · 0e9daef2
    Robert Griesemer authored
    The previous implementation was a mess with invariants
    maintained inconsistently. Essentially reimplemented
    the package:
    
    - used a circular list as internal representation for
      significantly simpler implementation with fewer
      special cases while maintaining the illusion of
      a nil-terminated doubly linked list externally
    
    - more precise documentation
    
    - cleaned up and simplified tests, added test case
      for issue 4103.
    
    No changes to the API or documented semantics.
    
    All this said, I would be in favor of removing
    this package eventually. container/ring provides
    a faster implementation and a simpler and more
    powerful API.
    
    Fixes #4103.
    
    R=r
    CC=golang-dev
    https://golang.org/cl/6569072
    0e9daef2
list_test.go 5.42 KB