compiler: don't add composite literal keys to package bindings
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 9 Jan 2020 15:58:42 +0000 (15:58 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 9 Jan 2020 15:58:42 +0000 (15:58 +0000)
commit0581e6ba3cfeb646553574aaa0efb1a822550a1f
treefa419773d258339a511cb550a8739b57ca49d154
parentd6491d15676b0255eaaa4f5394fbb8ec7e3c6a5f
compiler: don't add composite literal keys to package bindings

    Adding composite literal keys to package bindings gets confusing when
    it is combined with dot imports.  The test case showing the resulting
    compilation failure is https://golang.org/cl/213899.

    Fix this by adding a new expression type to hold composite literal keys.
    We shouldn't see it during lowering if it is a struct field name,
    because Composite_literal_expression::do_traverse skips struct field names.
    Or, it should, but that didn't quite work with pointer types so it had to
    be tweaked.

    This lets us remove the code that recorded whether an Unknown_expression
    is a composite literal key.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/214017

From-SVN: r280056
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc
gcc/go/gofrontend/expressions.h
gcc/go/gofrontend/parse.cc
gcc/go/gofrontend/parse.h