• Matthew Dempsky's avatar
    cmd/compile: fix "previous" position info for duplicate switch cases · c302785d
    Matthew Dempsky authored
    Because the Node AST represents references to declared objects (e.g.,
    variables, packages, types, constants) by directly pointing to the
    referred object, we don't have use-position info for these objects.
    
    For switch statements with duplicate cases, we report back where the
    first duplicate value appeared. However, due to the AST
    representation, if the value was a declared constant, we mistakenly
    reported the constant declaration position as the previous case
    position.
    
    This CL reports back against the 'case' keyword's position instead, if
    there's no more precise information available to us.
    
    It also refactors code to emit the same "previous at" error message
    for duplicate values in map literals.
    
    Thanks to Emmanuel Odeke for the test case.
    
    Fixes #33460.
    
    Change-Id: Iec69542ccd4aad594dde8df02d1b880a422c5622
    Reviewed-on: https://go-review.googlesource.com/c/go/+/188901Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
    Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
    Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    c302785d
issue33460.go 642 Bytes