mirror of https://github.com/golang/go.git
Revert "cmd/compile: properly handle map assignments for OAS2DOTTYPE"
This reverts commit 9d7c9b4384.
For #15602.
Change-Id: I464184b05babe4cb8dedab6161efa730cea6ee2d
Reviewed-on: https://go-review.googlesource.com/22930
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
0b6e5e3d73
commit
55546efeee
|
|
@ -569,24 +569,18 @@ func orderstmt(n *Node, order *Order) {
|
||||||
|
|
||||||
orderexprlist(n.List, order)
|
orderexprlist(n.List, order)
|
||||||
n.Rlist.First().Left = orderexpr(n.Rlist.First().Left, order, nil) // i in i.(T)
|
n.Rlist.First().Left = orderexpr(n.Rlist.First().Left, order, nil) // i in i.(T)
|
||||||
|
if isblank(n.List.First()) {
|
||||||
results := n.List.Slice()
|
order.out = append(order.out, n)
|
||||||
var assigns [2]*Node
|
} else {
|
||||||
|
typ := n.Rlist.First().Type
|
||||||
for r, res := range results {
|
tmp1 := ordertemp(typ, order, haspointers(typ))
|
||||||
if !isblank(res) {
|
order.out = append(order.out, n)
|
||||||
results[r] = ordertemp(res.Type, order, haspointers(res.Type))
|
r := Nod(OAS, n.List.First(), tmp1)
|
||||||
assigns[r] = Nod(OAS, res, results[r])
|
r = typecheck(r, Etop)
|
||||||
}
|
ordermapassign(r, order)
|
||||||
|
n.List.Set([]*Node{tmp1, n.List.Second()})
|
||||||
}
|
}
|
||||||
order.out = append(order.out, n)
|
|
||||||
|
|
||||||
for _, assign := range assigns {
|
|
||||||
if assign != nil {
|
|
||||||
assign = typecheck(assign, Etop)
|
|
||||||
ordermapassign(assign, order)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cleantemp(t, order)
|
cleantemp(t, order)
|
||||||
|
|
||||||
// Special: use temporary variables to hold result,
|
// Special: use temporary variables to hold result,
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
// run
|
|
||||||
|
|
||||||
// Copyright 2016 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
m := make(map[int]bool)
|
|
||||||
i := interface{}(1)
|
|
||||||
var v int
|
|
||||||
|
|
||||||
// Ensure map is updated properly
|
|
||||||
_, m[1] = i.(int)
|
|
||||||
v, m[2] = i.(int)
|
|
||||||
|
|
||||||
if v != 1 {
|
|
||||||
panic("fail: v should be 1")
|
|
||||||
}
|
|
||||||
if m[1] == false {
|
|
||||||
panic("fail: m[1] should be true")
|
|
||||||
}
|
|
||||||
if m[2] == false {
|
|
||||||
panic("fail: m[2] should be true")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue