// 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 | |
} |