Use a separate symbol for reflect metadata for types with Noalg set.
Fixes #17752.
Change-Id: Icb6cade7e3004fc4108f67df61105dc4085cd7e2
Reviewed-on: https://go-review.googlesource.com/32679
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
}
func typesym(t *Type) *Sym {
- return Pkglookup(t.tconv(FmtLeft), typepkg)
+ name := t.tconv(FmtLeft)
+
+ // Use a separate symbol name for Noalg types for #17752.
+ if a, bad := algtype1(t); a == ANOEQ && bad.Noalg {
+ name = "noalg." + name
+ }
+
+ return Pkglookup(name, typepkg)
}
// tracksym returns the symbol for tracking use of field/method f, assumed
}
tslice := typSlice(l.Type.Elem())
- tslice.Noalg = true
var n *Node
if len(lr0) == 0 {
--- /dev/null
+// 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 f(m map[string]int) int {
+ return m["a"]
+}
+
+func g(m map[[8]string]int) int {
+ return m[[8]string{"a", "a", "a", "a", "a", "a", "a", "a"}]
+}
+
+func main() {
+ m := map[[8]string]int{}
+ g(m)
+}