1
0
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:
Russ Cox 2011-05-31 15:52:04 -04:00
parent 5b62ba14c4
commit 15dcdf751c
2 changed files with 34 additions and 1 deletions

View File

@ -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
View 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
*/