1// build
2
3// Copyright 2016 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// This file tests that required algs are generated,
8// even when similar types have been marked elsewhere
9// as not needing algs. See CLs 19769 and 19770.
10
11package main
12
13import "fmt"
14
15//go:noinline
16func f(m map[[8]string]int) int {
17	var k [8]string
18	return m[k]
19}
20
21//go:noinline
22func g(m map[[8]interface{}]int) int {
23	var k [8]interface{}
24	return m[k]
25}
26
27//go:noinline
28func h(m map[[2]string]int) int {
29	var k [2]string
30	return m[k]
31}
32
33type T map[string]interface{}
34
35func v(x ...string) string {
36	return x[0] + x[1]
37}
38
39func main() {
40	fmt.Println(
41		f(map[[8]string]int{}),
42		g(map[[8]interface{}]int{}),
43		h(map[[2]string]int{}),
44		v("a", "b"),
45	)
46}
47