• Kirill Smelkov's avatar
    *: Channels must be compared by ==, not by "is" even for nilchan · 2c8063f4
    Kirill Smelkov authored
    In a followup commit we are going to add channel types (e.g. chan of
    double, chan of int, etc) and accordingly there will be several nil
    channel objects, e.g. nil(dtype=int), nil(dtype=double) etc, which will
    be separate python objects. Even without data types, another planned
    change is to add directional channels, e.g. a channel instance that can
    only send, but not receive and vice versa(*).
    
    This way for the same underlying channel object, there can be several
    pychan objects that point to it - even for nil channel - e.g. nilchan
    and `niltx = nilchan.txonly()` that creates another pychan object
    pointing to the same underlying nil.
    
    Since we want all channels (of the same type) that point to the same
    underlying channel to compare as same, we cannot use "is" for comparison
    and have to use ==. In other words channels, both at C and Python level,
    should be perceived as pointers, of which there can be multiple ones
    pointing to the same location, and thus == has to be used to compare
    them.
    
    (*) see https://golang.org/ref/spec#Channel_types for details.
    2c8063f4
context_test.py 8.36 KB