1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
  
     | 
    
      // compile
// Copyright 2013 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 5231: method values lose their variadic property.
package p
type T int
func (t T) NotVariadic(s []int) int {
	return int(t) + s[0]
}
func (t T) Variadic(s ...int) int {
	return int(t) + s[0]
}
type I interface {
	NotVariadic(s []int) int
	Variadic(s ...int) int
}
func F() {
	var t T
	var p *T = &t
	var i I = p
	nv := t.NotVariadic
	nv = p.NotVariadic
	nv = i.NotVariadic
	var s int = nv([]int{1, 2, 3})
	v := t.Variadic
	v = p.Variadic
	v = i.Variadic
	s = v(1, 2, 3)
	var f1 func([]int) int = nv
	var f2 func(...int) int = v
	_, _, _ = f1, f2, s
}
 
     |