• Matthew Dempsky's avatar
    cmd/compile: fix ICE from invalid operations on float/complex constants · 9f6b21ca
    Matthew Dempsky authored
    Typechecking treats all untyped numbers as integers for the purposes
    of validating operators. However, when I refactoring constant
    operation evalution in golang.org/cl/139901, I mistakenly interpreted
    that the only invalid case that needed to be preserved was % (modulo)
    on floating-point values.
    
    This CL restores the other remaining cases that were dropped from that
    CL. It also uses the phrasing "invalid operation" instead of "illegal
    constant expression" for better consistency with the rest of
    cmd/compile and with go/types.
    
    Lastly, this CL extends setconst to recognize failed constant folding
    (e.g., division by zero) so that we can properly mark those
    expressions as broken rather than continuing forward with bogus values
    that might lead to further spurious errors.
    
    Fixes #31060.
    
    Change-Id: I1ab6491371925e22bc8b95649f1a0eed010abca6
    Reviewed-on: https://go-review.googlesource.com/c/go/+/169719
    Run-TryBot: Matthew Dempsky <mdempsky@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
    9f6b21ca