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