• Robert Griesemer's avatar
    undo CL 11884043 / bfd5ed8236d5 · 9f75dd7f
    Robert Griesemer authored
    CL submitted prematurely by mistake.
    
    ««« original CL description
    spec: clarify index and selector expressions
    
    1) Explain a[i] and a[i:j] where a is of type *A as
       shortcut for (*a)[i] and (*a)[i:j], respectively.
    
    2) Together with 1), because len() of nil slices is
       well defined, there's no need to special case nil
       operands anymore.
    
    3) The result of indexing or slicing a constant string
       is always a non-constant byte or string value.
    
    4) The result of slicing an untyped string is a value
       of type string.
    
    5) If the operand of a valid slice a[i:j] is nil (i, j
       must be 0 for it to be valid - this already follows
       from the in-range rules), the result is a nil slice.
    
    Fixes #4913.
    Fixes #5951.
    
    R=rsc, r, iant, ken
    CC=golang-dev
    https://golang.org/cl/11884043
    »»»
    
    R=r
    CC=golang-dev
    https://golang.org/cl/12170046
    9f75dd7f
go_spec.html 177 KB