• Daniel Martí's avatar
    cmd/compile: don't panic on invalid map key declarations · 7f331313
    Daniel Martí authored
    In golang.org/cl/75310, the compiler's typechecker was changed so that
    map key types were validated at a later stage, to make sure that all the
    necessary type information was present.
    
    This still worked for map type declarations, but caused a regression for
    top-level map variable declarations. These now caused a fatal panic
    instead of a typechecking error.
    
    The cause was that checkMapKeys was run too early, before all
    typechecking was done. In particular, top-level map variable
    declarations are typechecked as external declarations, much later than
    where checkMapKeys was run.
    
    Add a test case for both exported and unexported top-level map
    declarations, and add a second call to checkMapKeys at the actual end of
    typechecking. Simply moving the one call isn't a good solution either;
    the comments expand on that.
    
    Fixes #28058.
    
    Change-Id: Ia5febb01a1d877447cf66ba44fb49a7e0f4f18a5
    Reviewed-on: https://go-review.googlesource.com/c/140417
    Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
    7f331313
main.go 36.2 KB