mirror of
https://github.com/golang/go
synced 2024-11-23 20:10:08 -07:00
gc: fix m[x], _ = y.(T)
Fixes #1900. R=ken2 CC=golang-dev https://golang.org/cl/4561053
This commit is contained in:
parent
5b62ba14c4
commit
15dcdf751c
@ -1532,7 +1532,7 @@ ascompatee(int op, NodeList *nl, NodeList *nr, NodeList **init)
|
||||
static int
|
||||
fncall(Node *l, Type *rt)
|
||||
{
|
||||
if(l->ullman >= UINF)
|
||||
if(l->ullman >= UINF || l->op == OINDEXMAP)
|
||||
return 1;
|
||||
if(eqtype(l->type, rt))
|
||||
return 0;
|
||||
|
33
test/fixedbugs/bug343.go
Normal file
33
test/fixedbugs/bug343.go
Normal file
@ -0,0 +1,33 @@
|
||||
// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug343
|
||||
|
||||
// Copyright 2011 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.
|
||||
|
||||
// issue 1900
|
||||
|
||||
package main
|
||||
|
||||
func getArgs(data map[string]interface{}, keys ...string) map[string]string {
|
||||
ret := map[string]string{}
|
||||
var ok bool
|
||||
for _, k := range keys {
|
||||
ret[k], ok = data[k].(string)
|
||||
if !ok {}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func main() {
|
||||
x := getArgs(map[string]interface{}{"x":"y"}, "x")
|
||||
if x["x"] != "y" {
|
||||
println("BUG bug343", x)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
typecheck [1008592b0]
|
||||
. INDREG a(1) l(15) x(24) tc(2) runtime.ret G0 string
|
||||
bug343.go:15: internal compiler error: typecheck INDREG
|
||||
*/
|
Loading…
Reference in New Issue
Block a user