github.com/stingnevermore/go@v0.0.0-20180120041312-3810f5bfed72/test/alg.go (about)

     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  
    11  package main
    12  
    13  import "fmt"
    14  
    15  //go:noinline
    16  func f(m map[[8]string]int) int {
    17  	var k [8]string
    18  	return m[k]
    19  }
    20  
    21  //go:noinline
    22  func g(m map[[8]interface{}]int) int {
    23  	var k [8]interface{}
    24  	return m[k]
    25  }
    26  
    27  //go:noinline
    28  func h(m map[[2]string]int) int {
    29  	var k [2]string
    30  	return m[k]
    31  }
    32  
    33  type T map[string]interface{}
    34  
    35  func v(x ...string) string {
    36  	return x[0] + x[1]
    37  }
    38  
    39  func 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  }