compiler: fix evaluation order of LHS index expressions

The spec says that when an index expression appears on the left hand
side of an assignment, the operands should be evaluated. The
gofrontend code was assuming that that only referred to the index
operand. But discussion of https://golang.org/issue/23188 has
clarified that this means both the slice/map/string operand and the
index operand. Adjust the gofrontend code accordingly.

Fixes golang/go#23188

Change-Id: I90e17ada43df58d439c060344f9224dbe1e7dacd
Reviewed-on: https://go-review.googlesource.com/123155
Reviewed-by: Than McIntosh <thanm@google.com>
2 files changed